Dictation
Dictation is push-to-talk voice-to-text for anywhere you can type in Kangentic. Hold a key, speak, and watch a live transcript stream into the focused input; release the key and the finalized text is inserted (and, by default, submitted). It is free, runs on-device by default, and needs no API key.
Added in v0.26.0, dictation is a global (per-machine) feature configured under Settings > Dictation.
How It Works
Section titled “How It Works”- Enable dictation in Settings > Dictation and pick a push-to-talk key in Settings > Hotkeys (the
dictation.pushToTalkaction, which can be bound to a keyboard chord or a mouse side button - the default). - Hold the key and speak. A live preview transcript streams into the target as you talk.
- Release the key. Kangentic runs a final, higher-accuracy pass, replaces the preview with the finalized text, and (unless you turn off auto-submit) presses Enter for you.
A short release buffer keeps the mic open for a moment after you let go so the last word is not clipped.
Where the Text Goes
Section titled “Where the Text Goes”Dictation resolves one destination per utterance, and it works anywhere you can type. Since v0.36.0 a focused text field wins over every terminal: the field you have your cursor in is the most direct statement of intent there is.
The chain, in order:
- A focused text field, anywhere in the app: a new-task title, a search box, a rename field, the Browser pane’s note input.
- A text field inside a page loaded in the Browser pane, reached through the guest page itself.
- The focused terminal window, whether that is a task-detail window, a Command Terminal, or the Agent Monitor.
- The last terminal you focused, anywhere.
- The bottom terminal panel’s current session.
If nothing resolves, Kangentic refuses the utterance rather than guessing, and the live chip says so.
Fields are eligible by default, so a field added to the app later works without anyone marking it. The exclusions are structural rather than a maintained list: an input type that does not hold prose, a disabled or read-only field, and the hidden helper textarea the terminal emulator keeps for IME composition (a terminal already has its own delivery path).
The live chip anchors to whatever it resolved: beside a focused field, or against the bottom band of a terminal pane where the agent’s own input box sits.
Auto-submit is decided per target
Section titled “Auto-submit is decided per target”Auto-submit presses Enter for you, but the destination decides how, and two cases refuse it whatever the setting says:
- A field inside a form holding more than one text field. Dictating a title into New Task would otherwise submit the task with everything else empty.
- Any field inside a page loaded in the Browser pane. The text is filled in, never submitted, because Enter there commits a form Kangentic does not control.
The chip shows the resolved decision before you release, so its hint never promises a send that will not happen.
Two-Stage Transcription
Section titled “Two-Stage Transcription”Dictation uses two models working together:
- Live model - a fast streaming model (Zipformer) that shows words as you speak, for immediate feedback.
- Refinement model - a slower, more accurate model (Parakeet by default) that reprocesses the full clip on release to produce the text that actually gets inserted.
Choose both through a quality preset, or unlock them individually:
| Preset | Behavior |
|---|---|
| Fast | Lowest latency; lighter models |
| Balanced | A middle ground between speed and accuracy |
| Accurate | Best transcription quality |
| Custom | Unlocks manual Live and Refinement model choice |
On-Device by Default
Section titled “On-Device by Default”The transcription engines run locally via sherpa-onnx-node, so your audio never leaves your machine. You can optionally set a Cloud refinement backend (an OpenAI-compatible /v1/audio/transcriptions endpoint) for the final pass only. Even then, the live preview still runs on-device and only the final recorded clip is sent. See Privacy & Analytics.
Options
Section titled “Options”| Setting | Description |
|---|---|
| Enabled | Master toggle: shows the mic button and enables push-to-talk |
| Language | Spoken language (BCP-47). English by default; other languages use multilingual model builds |
| Punctuation | Add punctuation and capitalization to the committed text |
| Auto-submit | Press Enter automatically after inserting, or leave the text in the input for review. Refused in the two cases above regardless of this setting |
| Release buffer | How long to keep capturing after you release the key (0-500 ms) so the last word is not clipped |
| Live experience | Where the live transcript appears: a floating popup, a docked bar, or typed straight into the resolved target, each revision replacing the last in place (the default) |
See the Configuration Reference for every dictation.* key and its default.
Next steps
Section titled “Next steps”See also:
- Conversation Memory - the other on-device, keyless AI feature
- Settings - the Dictation settings tab
- Hotkeys - bind the push-to-talk key
Kangentic is free and open source. A star helps other people find it.
Star on GitHub