The app around a spoken course is small: play a recorded prompt, wait for you to answer aloud, play the answer and bring older phrases back at widening intervals. An agent builds that in an afternoon. What Pimsleur sells is the course, tens of hours of scripted, recorded lessons per language (80 for Spanish) across 50+ languages. A model-written script read by a synthetic voice is a practice aid for phrases you already know, not a course, and mistakes in the script get memorised as readily as correct phrases. Language Transfer and Anki cover much of the same ground for free.
Before you buildPimsleur has a free sample lesson and a 7-day trial. Language Transfer is free and worth a week before you pay or build.
Build me a personal audio drill generator to practise a language beside Pimsleur, as a practice aid and not a course. Requirements: - Python 3.12 + FastAPI serving one plain HTML page with a little vanilla JS on http://127.0.0.1:4960. `python -m drills serve` starts it. - Phrases: `python -m drills import phrases.csv` loads rows (native, target, note) into sqlite3 at ./data/drills.db. Each phrase gets an FSRS card (`fsrs` package). - Voices: local text-to-speech with Piper (`piper-tts`). NATIVE_VOICE and TARGET_VOICE in .env name two downloaded voice files; each phrase renders once to ./data/audio/<id>-native.wav and <id>-target.wav and is cached. - `python -m drills build --minutes 15` assembles a lesson MP3 with ffmpeg: native prompt, a silence of 1.5 times the target clip's length for answering aloud, the target answer, a short gap. Up to 4 new phrases per lesson (heard twice, then asked once); phrases from earlier in the lesson return after about 5 seconds, 25 seconds, 2 minutes and 10 minutes of lesson time. - Player page: lists lessons, plays the MP3 with a 15-second skip back and a 0.75x to 1.25x speed control. After a lesson it shows its phrases with Yes, Almost and No buttons that map to FSRS Good, Hard and Again, and the next build prefers due cards. - Optional: `python -m drills draft "ordering coffee in Lisbon"` asks an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_MODEL, LLM_API_KEY) for 12 phrase pairs and writes them to drafts.csv; nothing is imported until you review the file and run import yourself. - Single user. No accounts, no telemetry, local-first; only the draft command uses the network. - Out of scope: pronunciation scoring, a curriculum, many languages out of the box, mobile apps. - README: where to get Piper voices, installing ffmpeg, and a plain warning that model-written phrases and synthetic voices contain errors, so check each phrase before importing it.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Pimsleur.
Extend the drill generator in this folder. Requirements: - Add `python -m drills tatoeba <lang-pair>` that reads a Tatoeba sentence-pair export and the audio metadata from TATOEBA_DIR in .env and imports pairs of 3 to 8 words. - Download a recording only when its licence field allows reuse, keep it in ./data/audio/, and store the contributor and licence in the database. - Fall back to Piper for phrases without usable audio. - Show contributor credit on the player page; update the README.
Extend the drill generator in this folder. Requirements: - Serve /feed.xml, an RSS feed of built lessons with enclosure URLs, durations and titles made from the date and the phrase count. - Protect the feed and the audio with a long random token in the URL, from .env. - Keep only the 20 newest lessons in the feed and delete older MP3s on request. - Update the README with how to expose it over Tailscale.
Extend the drill generator in this folder. Requirements: - On the player page add a Shadow mode: for each phrase, play the target clip, record the answer with MediaRecorder, then play both back to back. - Keep recordings in the browser only, as Blobs in IndexedDB, with a delete-all button. - No scoring: the user marks Yes, Almost or No as before. - Update the README.
Pimsleur is a finished course you can follow while driving or walking without a screen: it says what to say, in what order and how often to repeat it. People pay for not designing a curriculum themselves, and for lessons recorded and checked by the publisher rather than generated.
Estimate · Piper runs on your machine for nothing. The optional draft command costs a fraction of a cent per lesson through an API. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Audio-Only (one language) | $14.95 | — | All core audio lessons of one language; no interactive practice tools. |
| Premium (one language) | $19.95 | $12.50 | The same audio lessons plus flashcards, Speak Easy role-play with transcripts and Voice Coach pronunciation feedback. |
| All Access | custom | — | All 50+ languages for English speakers. |
| Lifetime (one language or All Access) | custom | — | Lessons never expire; the Spanish page lists all five Spanish levels (80 hours) at $575 and All Access Lifetime at $798. |
Not really. Pimsleur is a finished course you can follow while driving or walking without a screen: it says what to say, in what order and how often to repeat it. People pay for not designing a curriculum themselves, and for lessons recorded and checked by the publisher rather than generated. The prompt on this page builds the closest honest substitute.
About $14.95 a month on the Audio-Only (one language) plan, $179.40 a year (checked 2026-10-19).
The course itself: structured levels of recorded lessons in 50+ languages; Reading lessons and the level-by-level path from zero; Voice Coach pronunciation feedback; Speak Easy role-play with transcripts; Offline downloads and CarPlay or Android Auto playback in the app. If any of those matter to you, keep paying.
Yes: Anki (open source), Language Transfer (free), FSI, DLI and Peace Corps courses (free).