Hold a key, talk, let go - and your words appear wherever your cursor is. Mail, Slack, Word, the browser, Claude Code. That is the whole idea behind Wispr Flow, and it is a good one. It is also $15 a month, and everything you say goes to a server.
I have been using dictation apps for a while, and most of them cost around that much. So I wanted to see if I could build the same thing for free, running fully on my own computer. It turns out Whisper is really fast on Apple Silicon, a small local language model can clean up the filler words, and the same idea works on Windows and Linux too. This is what came out of it, and how it does against the dictation built into macOS.
There is no account, no word limit and no subscription. Once the models are downloaded, nothing you say leaves the computer. For comparison, Wispr Flow is $15 a month ($12 billed yearly), and its free plan stops at 2,000 words a week (prices as of October 2026).
Under the hood it is a little different on each system, because the fastest local engine is different on each.
| Mac (M1 or newer) | Windows 10/11 & Linux | |
|---|---|---|
| Speech to text | Whisper large-v3-turbo on Apple MLX | faster-whisper: large-v3-turbo on an NVIDIA GPU, small.en on the CPU |
| Cleanup | Qwen 2.5, built in | Qwen 2.5 in Ollama (free app) |
| Hold key | Right Option | Right Ctrl |
| Needs | uv + three permissions | uv + Ollama (Linux: an X11 session) |
The graphics card is picked up automatically when its CUDA libraries work; otherwise it simply runs on the processor, so it works on any normal PC. The cleanup model is chosen by memory: the 7B version on 16 GB machines and up (it gets self-corrections right), the faster 3B version below that.
The sentence I care about is not the easy one. It is the one where I change my mind: "Can you send me the final report by Friday? The one from last week? No, actually, the one from this Monday." Same email, dictated with macOS and with this tool.
That first-version mistake is the worst kind, because the text looks perfect and you would just send it. So the tool now checks every cleanup: if the cleaned text has lost a detail you said, or contains a single word you never said, it throws the cleanup away and pastes your own words - just without the ums. A dictation tool should never make things up.
I tested it on eleven of my own recordings plus the clips from the video, on two machines.
| Machine | Speech to text | Cleanup |
|---|---|---|
| Mac, M5 Pro, 24 GB | about 0.2 s per sentence | 0.2-0.6 s |
| Linux PC, no graphics card (15 CPU threads) | about 2 s per sentence | 0.4 s (3B model) |
Accuracy was the same on both. A longer one: 33 seconds of me talking, filler words and all, became clean text about 3 seconds after I let go of the key.
Every system needs one free tool, uv. It installs Python and everything else the tool needs, so there is nothing to configure by hand. The first run downloads the models once.
curl -LsSf https://astral.sh/uv/install.sh | sh
uv run src/dictate.py --clean
macOS then asks for three permissions for your terminal app, in System Settings › Privacy & Security: Microphone (to hear you), Input Monitoring (to notice the key) and Accessibility (to paste). Allow them, start it again, hold Right Option and talk.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv run src\dictate.py --clean
Install Ollama first for the cleanup - it is a normal installer and sits in the tray. Run the command in the tool's folder (right-click › Open in Terminal). If Windows asks about the microphone, allow it under Settings › Privacy & security › Microphone. Then hold Right Ctrl and talk.
sudo apt install libportaudio2 xclip
curl -LsSf https://astral.sh/uv/install.sh | sh
curl -fsSL https://ollama.com/install.sh | sh
uv run src/dictate.py --clean
One catch on Linux: only an X11 session lets an app see a global hotkey and paste into other apps. If your desktop runs Wayland - the default on recent Ubuntu and Fedora - pick "Ubuntu on Xorg" (or your desktop's X11 session) on the login screen.
The download includes a Claude Code skill. Open the folder in Claude Code and say
set up free dictation - it checks your system, installs what is missing and
tests your mic. Say start it at login and it creates a launch agent on Mac, a
Startup shortcut on Windows or an autostart entry on Linux.
Free to run forever: no subscription, no account, no word limit. You buy it once and it is yours - one Python file you can read, change and keep.
Patreon members ($5/month) get it with all my other tools, or buy just this one for $9.
The side-by-side tests with macOS dictation, how it works, and the setup on each system.
Yes - this one does the same core job (hold a key, talk, clean text where your cursor is) with Whisper and a small local model on your own computer, with no subscription and no word limit.
Yes. After the first run downloads the models, both the speech to text and the cleanup run locally. Nothing you say is sent anywhere.
Yes: Windows 10/11 on x64 PCs and Linux with an X11 session, using faster-whisper and Ollama. On a Mac it needs Apple Silicon (M1 or newer).
No. An NVIDIA card is used automatically if you have one; otherwise it runs on the processor at about 2 seconds per sentence.
This is a personal-scale version of what I do at KorFlux: small, practical tools that keep data on your own machines - monitoring, integrations, or an internal assistant that should never send anything to the cloud.