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

The VoiceFlow website (in Chinese): let ideas take shape. Press once, say what you mean.

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

  1. 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
  2. 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
  3. 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

  1. 2026.05.23First commit
  2. 2026.07.04v0.1.0 released
  3. 2026.07.28v0.2.0: a written answer to all 12 pieces of user feedback
  4. 2026.08.10v0.3.0: recoverable sessions; the clipboard is verified before delivery
  5. 2026.08.25v0.3.2: three supervised workers; evidence with every release
  6. 2026.10.11v0.3.8: native capsule
  7. 2026.10.21v0.3.9: one Save button in settings; a dictionary you can search, bulk-delete and undo; 822 tests
  8. 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.

Try VoiceFlow

Voice typing for Windows · Offline after install · Free, open source

Open VoiceFlow VoiceFlowDownload for Windows VoiceFlow

Other work

Let’s talk

Add me on WeChat