Press.Talk.Press again.
Dictation for Linux that types into whatever window you're in.
Free and open source, with no word limits. Speech recognition and AI rewriting run on your own GPU, so your voice never leaves the machine. It works in your editor, browser, terminal and chat apps, anywhere a cursor can go.
How it works
A small background service keeps the speech model loaded on your GPU, so a dictation starts the instant you press the key. Short phrases come back in about half a second.
-
Press once
A notification says it's listening. Audio is recorded locally through PipeWire.
-
Talk normally
Say "um" and restart sentences if you need to. Say "new line" or "period" when you want them.
-
Press again
Whisper transcribes the clip, a local model tidies it for the app you're in, and the text is typed at your cursor and copied to the clipboard.
What you say, what it types
Real output from flowtype. Rules remove fillers and handle spoken punctuation. A local AI model then resolves self-corrections and matches the app you're typing in: casual in Slack and Discord, full sentences in email, exact commands in a terminal.
| You say | It types |
|---|---|
| um so I I think we should, uh, ship it new line thanks period | So I think we should ship it Thanks. |
| so we should ship it tomorrow actually no wait friday because QA needs time | So we should ship it Friday because QA needs time. |
| um hey sam the build is done I mean almost done we need the icons the docs and the release notes thanks (in email) | Hey Sam, the build is almost done. We need the icons, the docs, and the release notes, thanks. |
| git commit dash m fix the wave form drawing (in a terminal) | git commit -m "fix the wave form drawing" |
| hello new paragraph this is omarchy on hyprland | Hello This is Omarchy on Hyprland |
| my email | you@example.com (a snippet you set) |
Runs on your machine
Measured on a laptop RTX 4050 with Whisper small.en and Qwen3 4B. No account, no subscription, nothing uploaded.
flowtype vs Wispr Flow
Wispr Flow is a good product. It's also a subscription with a weekly word cap on the free plan, and Linux isn't on its list of platforms. flowtype gives you the same press-and-talk habit, AI rewriting included, without either.
| flowtype | Wispr Flow | |
|---|---|---|
| Price | Free | Free plan, or Pro at $15/month ($12/month billed yearly) |
| Free plan limit | None | 2,000 words a week on desktop, 1,000 on mobile |
| Linux | Yes, built for Wayland and Hyprland | Not listed. Mac, Windows, iOS and Android |
| Works offline | Yes, speech is recognised on your GPU | Not stated on the pricing page |
| Account | None | Required |
| Source code | Open, MIT licence | Closed |
| AI rewriting and per-app tone | Yes, with a local model through Ollama, or Claude if you prefer | Yes |
| Phone apps | No | Yes |
Wispr Flow details are from wisprflow.ai/pricing, checked October 2026. Prices and plans may have changed since.
Install
Built for Hyprland on Arch. Other Wayland compositors work if you bind the toggle command to a key yourself.
Set up
# tools it calls $ sudo pacman -S wtype wl-clipboard pipewire $ pip install faster-whisper # optional: local AI rewriting $ sudo pacman -S ollama $ ollama pull qwen3:4b-instruct # get it $ git clone https://github.com/neilyneilynig/flowtype $ cd flowtype $ ln -s "$PWD/flowtype.py" ~/.local/bin/flowtype $ cp flowtype.service ~/.config/systemd/user/ $ systemctl --user enable --now flowtype
Bind the key
# ~/.config/hypr/bindings.conf bindd = SUPER ALT, D, Dictate, exec, \ ~/.local/bin/flowtype toggle # then $ hyprctl reload $ flowtype ping pong
Reference
Settings live in ~/.config/flowtype/config.json. Run flowtype reload after you edit it.
Commands
- flowtype toggle
- Start listening, or stop and type. This is what the hotkey runs.
- flowtype stats
- Words dictated, speaking pace and time saved compared with typing.
- flowtype history 20
- Your last 20 dictations, with times.
- flowtype polish chat "…"
- Try the AI rewrite on some text. Tones are chat, email, code and general.
- flowtype reload
- Re-read the config without restarting.
- flowtype daemon
- Run the service in the foreground, useful for debugging.
config.json
{
"model": "small.en",
"device": "auto",
"type_output": true,
"copy_output": true,
"remove_fillers": true,
"max_seconds": 300,
"polish": "ollama",
"polish_model": "qwen3:4b-instruct",
"app_tones": { "obsidian": "email" },
"dictionary": { "hyprland": "Hyprland" },
"snippets": { "my email": "you@example.com" }
}