Performance budget

The latency and resource targets VoxFlow is built against, and how they are measured.

Dictation is only useful if it feels instant. These are the numbers the implementation is held to, not aspirations.

Latency

For a short utterance of three to ten seconds:

Stage Target
Pill appears < 80 ms
Recording starts < 100 ms
End of speech → VAD done < 250 ms
Short phrase transcription < 800 ms
End of speech → text inserted < 1.5 s

Resources

Condition Target
Idle CPU 1–2%
Recording CPU 5–8% for capture and VAD
Memory 300–500 MB for the shell, before a Whisper model is loaded

A loaded Whisper model adds its own footprint on top, which depends on the model size you choose.

Keeping the hot path fast

Because the interface is a WebView, everything with a deadline stays in Rust: the hotkey handler, audio capture, VAD, and the state machine. React is never on the critical path for the “pill appears” or “recording starts” targets — by the time it draws anything, the decision has already been made.

Measuring it

LatencyTracker in voxflow-core records a mark at each pipeline stage. Turn on the reports with:

RUST_LOG=voxflow=info pnpm tauri dev

Each dictation then logs its stage timings, so a regression shows up as a specific stage rather than a vague feeling that the app got slower.