VoiceFlow · How it was made
Press a key, talk, and the words appear at your cursor
Voice typing for Windows that runs entirely on the device: no internet, no account
Download for Windows VoiceFlow

Key results
- GitHub stars
- 101
- From stopping to text sent (95% of cases)
- 427 ms
- Automated tests
- 829
- Releases
- 16
GitHub numbers refresh every six hours, last on 2026-10-25
When I say the last word, the last word appears
I talk to AI by voice while I chat and build, often for five or six minutes at a time, sometimes more than ten.
The tools I tried each had strengths: one from abroad could clean up text with AI, for a fee; the voice input on Chinese phones and PCs recognised speech well. But I kept hitting three problems. First, when I stopped, one network hiccup and the whole passage was gone. Second, the last few sentences often never appeared, when what I needed was all of it: the last word I say should be the last word on screen. Third, if the cursor wasn’t in a text box, everything I said simply vanished.
So I wanted one that runs entirely on my own computer: no network delay, every sentence landing in full, and if there’s no text box, the words wait on the clipboard so not one is lost.
Speed and accuracy, split between two models
Text that appears as you speak needs a small streaming model, which is not accurate enough; the accurate model needs the whole recording. VoiceFlow uses both: the small one lets you watch the words arrive, and the moment you stop, SenseVoice reads the full recording and writes the final text in place of the draft. The preview can never overwrite the final.
- 6 msF2 to the capsule on screenMeasured on v0.3.1
- 427 msTen seconds of speech, stop to text sent95% of cases
- 541 msTwo minutes of speech, stop to text sent95% of cases
Not checked means not delivered
Pressing Ctrl+V is not the same as delivering text: the window may have changed, another program may hold the clipboard. VoiceFlow writes the text to the clipboard, reads it back to check, confirms the window that was in front when you stopped, and pastes once, never blindly again.
If the cursor was not in a text box, the words are already on the clipboard and in local history; a recording that was not delivered stays on this computer and is offered back the next time you open it.
One part stalls, the rest keeps going
Audio drivers and speech models are native code; if either hangs, the whole app can freeze. So recording, preview and recognition each run in a supervised process with a heartbeat and a timeout. Whichever stalls is restarted on its own, and the hotkey keeps responding.
The detailsScope, How it’s built, Trade-offs, Evidence, Timeline
Scope
Does
- Everyday input from a hotkey
- Chinese, English and both mixed
- On-device recognition, offline after install, no account
- Custom terms and explicit corrections
Does not
- Meeting notes or speaker separation
- Cloud rewriting or polishing
- Claims of beating other products before there is enough speech data
How it’s built
UI process (Qt)
- One entry point for every action
- Global F2 hotkey, live before the models load
- Natively painted recording capsule
- Delivery and local history
Three supervised workers
- Recording: the microphone, plus a recoverable copy
- Preview: a streaming model, text as you speak
- Recognition: SenseVoice reads the whole clip for the final text
Delivery chain
- Write to the clipboard, read it back
- Re-check the foreground window at stop
- One Ctrl+V, never a blind retry
- Save to local history
Every worker has a heartbeat, a bounded queue and a hard kill path. If a driver or model hangs, only that process restarts; the window and the hotkey keep responding.
Every dictation can be recovered. Stopping locks in the last bit of audio, drops the preview, and trusts only SenseVoice’s pass over the full recording. It counts as done only when the clipboard checks out and history is written; anything undelivered stays on the machine and is offered back at the next launch.
Trade-offs
Ship one final model: SenseVoice
WhyOn one public Chinese and one English sample on the same machine, it was fastest and lost nothing; Qwen3-ASR returned Traditional Chinese, Whisper added about 1 GB without doing better
Given upA model picker in settings
Separate preview from final text
WhyThe streaming model is for speed, the full recording is for accuracy, and the preview may never overwrite the final
Given upOne model doing both jobs
No online recognition
WhyIt would break the promise of working offline
Given upMore models and a higher ceiling
No “Done” on success
WhyThe text is already in the box; confirming it again only makes it feel slower
Given upA confirmation animation every time
Paint the capsule natively in Qt
WhyA 34-pixel capsule should not carry a whole Chromium runtime
Given upThe convenience of web rendering
Evidence
Measured for v0.3.1 on the release machine (Windows 11, Ryzen 7 5800H). 20 samples per bucket; each number holds in 95% of cases:
- 6 msF2 to first feedbackGate ≤ 50 ms
- 427 msClips under 10 s, stopping to text sentGate ≤ 500 ms
- 541 msTwo-minute clips, stopping to text sentGate ≤ 2.5 s
- 1,024 MBPrivate memory after install (v0.3.1)Earlier 1,324.6 MB
- 829 automated tests, up from 396 at v0.3.3.
- 500 recording lifecycles, 10,000 random start, stop, cancel and exit sequences, 50,000 malformed-text fuzz cases.
- Since v0.3.2, every release ships with a release and verification record.
- Twelve pieces of user feedback, each with a written decision and reason: adopted, deferred behind a gate, or declined.
This is evidence about latency and mechanics, not accuracy. The project’s rule: no accuracy claims without enough authorized real speech.
Timeline
- 2026.05.23First commit
- 2026.07.04v0.1.0 released
- 2026.07.28v0.2.0: a written answer to all 12 pieces of user feedback
- 2026.08.10v0.3.0: recoverable sessions; the clipboard is verified before delivery
- 2026.08.25v0.3.2: three supervised workers; evidence with every release
- 2026.10.11v0.3.8: native capsule
- 2026.10.21v0.3.9: one Save button in settings; a dictionary you can search, bulk-delete and undo; 822 tests
- 2026.10.22v0.3.10: settings redesigned after the system Settings app; words fade in as they’re recognised, and the final text replaces the draft in place; 829 tests
Still missing
- The installer is not code-signed yet, so Windows shows a warning.
- The release supports Windows 10 and 11 only.
- No public accuracy figures for Chinese, English or mixed speech until there is enough real speech to measure.
- Keeping two recognizers resident costs about 1 GB of private memory.
- It verifies the clipboard, not the target box; some apps still need a manual Ctrl+V.