Dictate
Listens, turns your speech into text on this Mac, cleans it up, and can type it where you were typing.
Dictate and type what I say
Details #
Listens through the microphone until it is told to stop, finishes recognising, optionally cleans the words up, and with typeResult pastes them into the field you were in. Recognition runs on this Mac (macOS 26's on-device speech model): no audio leaves it, there is no per-minute cost, and the audio is dropped when the step ends.
Stopping. stop is release (the default: when you let go of the hotkey that started the run; the hotkey needs Hold on), silence (after 1.5 seconds of quiet, once you have said something) or toggle (the next press of the same hotkey). A run that did not start from a hotkey, or whose hotkey is not set to hold, stops on silence instead and the trace says so. maxSeconds (default 120) stops it whatever else happens. Esc while listening cancels the dictation and types nothing.
A tap is not a dictation. With release, a key held for less than a quarter of a second cancels the run silently, so a mistaken Fn+Space types nothing.
Cleanup. none types what was recognised. light (the default) runs the on-device model with a fixed instruction: remove fillers and false starts, fix punctuation and capitals, keep your words, add nothing. style also follows your style text ("casual, short, no sign-off"). Cleanup is capped at 1.5 seconds on this Mac: past that, or when Apple Intelligence is off, or when the transcript is longer than the on-device model holds, or when the reply added words you did not say, the words are typed as recognised and the trace says why. Nothing goes to a cloud model unless the step says model: cloud (or haiku, sonnet); then it shows the AI badge and its cost like any cloud run.
Typing. With typeResult the text is pasted into the app that was in front when you started. If you switched apps meanwhile, or secure input is on, nothing is typed: the text is copied to the clipboard and the pill says "Copied: focus moved" or "Copied: secure input is on".
The result. The step puts an object in the variable named by into (default dictation):
| Field | What it holds |
|---|---|
{{dictation.text}} | The words after cleanup: what was typed. |
{{dictation.raw}} | The words as recognised, before cleanup. |
{{dictation.seconds}} | How long you spoke. |
{{dictation.cleanup}} | What ran: none, light, style, or skipped. |
{{dictation.lagMs}} | Milliseconds from letting go to done. |
The trace note carries the same timing: key-up → done 412 ms · cleanup light 380 ms. Set SWITCHBOARD_DICTATE_TRACE=1 for the recognise and cleanup times in the engine's log.
Parameters #
| Parameter | Type | Required | Values | What it does |
|---|---|---|---|---|
cleanup | text | none, light or style. Default light. | ||
into | text | The variable that receives the result. Default dictation. | ||
language | text | auto (this Mac's language) or a tag such as en-US. A language the Mac has no speech model for fails with a plain message; the first use of a language downloads its model ("Getting the speech model (once)"). | ||
maxSeconds | number | The longest it listens. Default 120. | ||
model | one of | cloud haiku sonnet | cloud, haiku or sonnet to let a cloud model do a style cleanup. Left out, it stays on this Mac. | |
sample | text | What a dry run gives back. | ||
stop | one of | release silence toggle | release, silence or toggle. Default release. | |
style | text | How the text should read, for cleanup: style. Supports {{ }} values, which is how Settings › Dictation picks a style by app. | ||
typeResult | yes / no | Paste the text where you were typing. Default off: the text only goes into the variable. | ||
vocabulary | list of text | Names and product terms. The recogniser favours them and the cleanup is told to spell them as written. |
Every step also accepts label, onFailure, timeout and dryRunSafe.
Examples #
- Hold fn Space
- Dictate and type until you let go, cleaned up
- Hold ✦T
- Dictate until you let go, cleaned up
- Copy “{{dictation.text}}” to the clipboard
- Show “To-do copied: {{dictation.text}}” for 2 s
Gotchas #
Dry run. Nothing is recorded: the step returns its
sample(or a short stand-in) so the rest of the macro can be followed.Microphone. The first dictation asks macOS for the microphone for Switchboard Engine. Settings › Permissions shows it and can reopen the pane. Speech recognition itself needs no separate permission.
Feed it a file. In a development build,
switchboard run "Hold to talk" --input audio=/path/to/clip.wavruns a WAV through the same pipeline instead of the microphone.The macro that uses this step should allow runs side by side (Settings › Dictation does), so a new dictation can start while the last one is still cleaning up.
See also #
Type text, Ask AI to rewrite, Hotkey, Dictation: hold to talk