Voice
Two local services: one listens for your wake word, one turns speech into text while you are still talking.
Wake word
You choose the phrase. Say it and the launcher opens, listens for a few seconds and fills the search box. Pressing Enter is still yours.
- A voice activity gate plus a keyword spotter restricted to your phrase. No always-on speech recognition.
- The detector keeps a few seconds of audio features in its own memory. Nothing goes to disk, a log or the activity log. Only “the keyword was heard” crosses over.
- The bar shows MIC ON in pink whenever the microphone is open. The switch is one click.
purpose-wake offturns it off for good. - Listening starts at login by default. A hit can only open the launcher or be counted, never run something by itself.
- Accents and non-English names: add spellings with
purpose-wake aliases, or letlisten.enrollpick spellings from your own recordings. No training is involved.
purpose-wake set "okay computer"
purpose-wake sensitivity high Live dictation
Words appear as you speak, then settle into Whisper's text with punctuation and proper nouns. By the time you stop, only the last fragment is left to refine.
voicedcaptures the microphone itself into a 120 second ring buffer in memory. The shell never touches audio.- A streaming engine (sherpa-onnx Zipformer) decodes as audio arrives and detects pauses.
- When a pause ends a segment, that slice goes to Whisper on a worker thread while you keep talking. The grey live text is replaced when Whisper answers.
- The shell polls about every 170 ms and draws the partial text, the finished segments and the waveform.
{ "seq": 41, "state": "speech", "elapsed_ms": 4200,
"partial": "i want the registry",
"segments": [ { "id": 0, "text": "Spent the evening on the design.", "final": true } ],
"level": [0.1, 0.4, 0.8],
"text": "Spent the evening on the design. i want the registry" } - Command mode ends itself after 900 ms of silence, or empty after 6 seconds with no speech. Dictation mode ends when you say “stop” or press Esc.
- If no live engine is set up,
voice.dictate.startanswersunavailableand the shell records a WAV and usesvoice.transcribeinstead. - Each finished segment is sent to the app once, in order, so a saved note holds Whisper text, never the live guess.
Say a setting
Every setting has spoken phrases: “volume up”, “mute”, “set volume to 30”, “next wallpaper”, “set wake word to computer”. Matching is plain text matching, with no language model and no network. The launcher lists the explicit command, and Enter runs it.
Open files by name
A file opens only when the spoken name matches exactly. Looser matches are offered as a list and never opened. Several exact matches also produce a list. Low-confidence results are not shown.