Learn a language by listening, not by scrolling
FmS turns any audio into dictation practice. Import a dataset, generate subtitles locally with on-device speech recognition, and train your ear one cue at a time — with spaced-repetition cards, read-aloud scoring and cross-device sync.
No account required. Your audio and progress never leave your device.
Everything you need to train your ear
A desktop-first toolkit built around real listening practice.
Dictation practice
Transcribe what you hear against waveform-synced cues, with instant diffing and per-cue replay.
Spaced repetition
Turn phrases into flashcards and review them with an SM-2 scheduler and full-text search.
Read-aloud scoring
Record yourself reading a passage and get a similarity score from on-device speech recognition.
Local speech recognition
Generate subtitles with bundled Parakeet models — everything runs offline on your machine.
Cross-device sync
Pair your phone and PC over the local network or a hub and keep progress in sync.
Agent friendly
Every feature is exposed through a built-in MCP server, so AI agents can drive the app too.
How it works
From raw audio to daily practice in four steps.
- 1
Import a dataset
Drop in audio or video files plus optional reference text.
- 2
Generate subtitles
Local STT transcribes each track and aligns it into timed cues.
- 3
Practice dictation
Listen, type what you hear, and compare against the cue.
- 4
Review & track
Save cards, schedule reviews and watch your streak grow.
Download FmS
Grab the latest release for your platform. It's free, and the source is open.
Private by design
FmS is local-first. Audio, generated subtitles, waveforms and your progress are stored on your own device — nothing is uploaded to a server to be processed.
Speech recognition runs entirely offline using bundled models. There is no telemetry, no analytics and no third-party tracking in the app.
Cross-device sync is opt-in and travels over your own network or a hub you control. The source code is open so you can verify all of this yourself.