Flow
Local voice dictation that types cleaned-up text into any focused window
A self-hosted voice dictation tool: hold a hotkey, talk, release. Speech is transcribed on the machine's own CPU with faster-whisper, a language-model pass strips filler words and fixes punctuation, and the cleaned text is typed straight into whatever window has focus — Slack, an editor, an email. A local replacement for a paid dictation subscription, with the audio never leaving the box.
The problem
Many voice dictation tools require paid subscriptions and send audio to cloud servers, raising privacy concerns for users who dictate frequently. A local solution is needed that maintains accuracy and convenience without relying on internet connectivity or sharing personal speech data with external services.
What I built
The tool is fully functional and runs locally with all processing on the machine. It includes end-to-end checks for audio capture, transcription, polishing, and injection. Custom dictionaries and snippets can be configured, and it handles edge cases like LLM unavailability by falling back to offline cleanup.
How it works
Flow uses pynput for global hotkey listening, where holding Ctrl+Alt records audio via sounddevice. On release, faster-whisper transcribes the audio locally on CPU with int8 compute and configurable threads. The raw text is sent to a local OmniRoute gateway for cleanup with a LLM (e.g., gemini-3.1-flash-lite), which corrects punctuation and removes fillers. If the LLM fails or is slow, it falls back to regex-based filler stripping. The cleaned text is injected by copying to clipboard and simulating Ctrl+V, ensuring compatibility with any application. The entire pipeline runs on a worker thread to prevent keyboard freezing during transcription, and truncated LLM responses are discarded to avoid partial text.
Highlights
- Speech recognition runs on the machine's own CPU — the recorded audio never leaves the box
- Two hotkey modes — dictate at the cursor, or rewrite the text currently selected
- LLM cleanup pass corrects punctuation and removes filler words
- Injects text into any application via clipboard and keyboard simulation
- Worker thread pipeline prevents keyboard freezing during transcription
- Fallback to regex filler stripping if LLM is unavailable or slow
Let's build yours.
Tell me what you're trying to ship — you'll get a scoped plan and a straight answer.