Dictation
The dictation Module turns speech into text with the Gemini API. It is off by default and needs a Gemini API key and your consent before it records or sends anything.
[modules]dictation = true
[dictate]insert = "copy"- Make a key in Google AI Studio.
- Give it to Kanade:
kanade dictate key. It reads the key from stdin, never from an argument, and keeps it in the Secret Service. - Accept the disclosure:
kanade dictate consentprints it and asks you to typeI agree. It must be typed at a terminal. - Turn the Module on in the config, which takes a restart.
kanade dictate forget deletes the key and withdraws the consent. kanade dictate status says whether the gate is ready, has no key or has no consent, and never shows the key.
Using it
Section titled “Using it”Mod+Alt+Y hotkey-overlay-title="Island: Dictate" { spawn "kanade" "dictate" "toggle"; }The first press starts recording, the second stops it and sends it. A recording stops by itself at 120 seconds. kanade dictate cancel before the stop drops the recording and sends nothing.
dictate.insert |
Where the text goes |
|---|---|
copy |
The clipboard, through wl-copy on its stdin |
paste |
The clipboard, then Ctrl+V sent to the focused window with wtype |
type |
Typed into the focused window with wtype, as one line |
paste and type fall back to the clipboard, marked sensitive, when the window in front is not the one you started in, is in dictate.never_in, or wtype fails; the Island says why.
Kanade records only after you start a dictation, keeps the audio in memory (never on disk), sends it in one request when you stop, and forgets it. The text is never written to a log.
Limits
Section titled “Limits”Gemini API only, with no local model and no streaming; the text appears after you stop. A recording under about 0.2 seconds is not sent, one dictation runs at a time, and nothing is retried.
See also
Section titled “See also”Integrations configuration, Agent hooks, and the CLI reference.
