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.
Dictation is a 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. In a mode with a refinement model, Kangentic runs a final, higher-accuracy pass and replaces the preview with its text. Then, unless you turn off auto-submit, it 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 runs up to two models:
- Live model - shows words as you speak, for immediate feedback.
- Refinement model - reprocesses the full clip on release to produce the text that actually gets inserted. When a mode runs none, the live text is what lands.
Choose both through the Mode setting, a preset that picks the models for you, or choose Custom to pick them yourself. Each step up is a bigger download for better text, and every preset transcribes faster than you speak on a CPU:
| Mode | Live model | Refinement model |
|---|---|---|
| Best | Nemotron streaming, or Nemotron 3.5 for another language | Parakeet v3, or Whisper small for a language Parakeet v3 does not cover |
| Balanced | Parakeet v3, re-reading the clip as you speak, or Nemotron 3.5 for a language Parakeet v3 does not cover | None. Parakeet v3’s live text is already punctuated |
| Light | Streaming Zipformer, or Whisper base for another language | None |
| Custom | Any model that covers your language, or None | Any model that covers your language, None, or Cloud endpoint |
Parakeet v3 covers English, Portuguese, Spanish, Italian, French, German, Dutch, Russian, Polish, and Ukrainian. A capable machine starts on Best and a low-end one on Light. In Custom, each dropdown lists every model that can fill its slot in your language, most accurate first, each with its accuracy and download size. Beyond the presets’ models, that takes in Parakeet unified, Parakeet v2, the English Whisper, Distil-Whisper, and Moonshine builds, and Cohere Transcribe, a 2.7 GB refinement model.
A preset is a name, not a saved pair of models. Kangentic resolves it to models for your language each session, so a preset follows the lineup when a release changes it, and after such an update Kangentic downloads the new models as it would on a first install. v0.45.0 is one such release. It moved Best to Nemotron and Parakeet v3, and renamed Best accuracy and Fastest to Best and Light. Custom is the only mode that keeps the exact models you picked, and switching to it starts from the models the preset was running.
Under the Mode choice the Transcription card lists the two models that run, one line each, with the model’s size once it is on disk, its share over a track while it downloads, or None for an empty slot. A License line under them links each running model’s license.
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 pick Cloud endpoint as the refinement model (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 and analytics.
Since v0.42.0 the engine runs in its own helper process rather than inside Kangentic’s main process, so a fault in the native speech library costs you the utterance, never the app: the dictation reports “Dictation failed” and your board and agents carry on. A helper that crashes repeatedly is stopped rather than restarted forever, and the Dictation tab says so; restart Kangentic to try again.
Since v0.43.0 the helper is sized to what you are actually doing with it. While dictation is enabled it holds only the live model; the refinement model loads on your first press and overlaps the utterance, so the wait is hidden rather than paid at startup. A helper that has loaded it is retired half an hour after your last dictation and comes back with the live model alone, because letting the process exit is what gives its model memory back. On Windows, where the models grow with use and a heavy user never leaves a half-hour gap, a helper past 1.5 GB is retired at the next two-minute pause instead. Each language or mode switch warms up another model too, so a helper you have only switched settings in is held to the same 1.5 GB on Windows and comes back with just the model in use. Turning dictation off releases it at once.
Options
Section titled “Options”| Setting | Description |
|---|---|
| Voice dictation | Master toggle: shows the mic button and enables push-to-talk |
| Language | Spoken language. English by default; another language switches the presets to multilingual models |
| Mode | Best, Balanced, Light, or Custom (above) |
| 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 |
The live transcript is typed straight into the resolved target as you speak, each revision replacing the last in place. The floating popup and docked bar that earlier builds offered are retired, and there is no setting to bring them back.
See the Configuration reference for every dictation.* key and its default.
See also
Section titled “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