The Dictation Loop
The menu-bar agent is resident and idle, using close to no CPU. The whisper.cpp context you selected stays warm after the first run, so the next dictation starts quickly instead of loading a model from scratch.
Memory use in this state depends on which model you chose. See Choose a Speech Model.
You are holding the key. Audio is being captured from your selected input device. The indicator runs its listening animation, which is your evidence the key press registered and the right device is live.
You released the key. whisper.cpp transcribes the recording on your Mac, accelerated by Metal. Nothing is uploaded. If optional cleanup is enabled, a second local model runs after transcription and its output is checked before it is accepted.
The finished text is written into the focused text field of whatever app you were using. The loop returns to ready.
Why the states are visible#
Dictation fails quietly by nature. A muted microphone, an unregistered hotkey and a slow model all look identical if the only feedback is text that has not appeared yet.
Giving each state its own animation turns those into different-looking failures. Stuck in listening means the key is still down. Stuck in local processing means the model is working. Never leaving ready means the hotkey never registered, which points at permissions.
The visual side of this is covered in Indicators.
Next#
- Local Transcription — what runs during the processing state
- Indicators — the animations themselves
- Back to the documentation home