How fast, exactly
The number that matters is the time between letting go of the key and the text being in your app. These are Holdkey’s own measurements, taken by the app itself, on an ordinary desktop CPU with no GPU involved in recognition.
| Case | Release → text | Breakdown | Note |
|---|---|---|---|
| 5 s dictation, Raw | 66 ms | 1 ms ASR + 65 ms paste | Tail segment already transcribed while the key was held |
| 5 s dictation, Clean | 389 ms | 1 ms ASR + 387 ms rewrite | Short dictations are cleaned as one piece for context |
| 19 s dictation, Clean | 3 ms | cleaned while you talk | Every pause-separated segment is cleaned in the background |
| 64 s dictation, Clean | 295 ms | tail segment only | Was 2.5 s before incremental cleaning |
| 117 s dictation, Clean (founder, far webcam mic) | 878 ms | 521 ms ASR + 291 ms rewrite | Long final sentence; real usage, not a fixture |
Method
Machine: AMD Ryzen 5 7600X (6 cores), 32 GB RAM, Windows 11. Recognition runs on the CPU with NVIDIA Parakeet TDT 0.6B v2 (int8) through sherpa-onnx; its real-time factor is about 0.05, so ten seconds of speech take half a second to transcribe. Clean mode uses a 4-billion-parameter local model (Qwen3 4B, Q4) on an RTX 4070 SUPER; on a CPU-only machine Clean is slower and Raw is unchanged.
While the key is held, a voice-activity detector splits speech at pauses and each finished segment is transcribed (and in Clean mode, cleaned) immediately. At release only the last segment remains. Timing starts at the key-up event and stops after the paste keystroke is sent; it includes clipboard handling. The app records these numbers for every dictation in its local history, which is where the rows above come from.
Numbers for other tools are not on this page because we have not measured them the same way. Public reviews put Handy (free, local) at 2–5 seconds and cloud tools at roughly 0.5–1.5 seconds when the network is fine. If you have a rig to run all of them side by side with identical audio, we would love to publish that.
Reproduce it: the repository ships holdkey-bench, which plays a WAV through the same pipeline at real-time pace and prints the tail latency.