Automation
SpeakWith has two recorders you can drive from outside the app: Live dictation (real-time, finalised at each pause) and Live audio (voice-activated). You can start, stop, and control either one from the command line, a macOS Shortcut, Automator, or a hotkey launcher — with no extra setup. There are two equivalent ways to send a command: the speakwith:// URL scheme (simplest) and AppleScript (for scripting environments that prefer it).
Quick start: start recording
The fastest way to begin a take is the URL scheme — one line any shell can run. Start the Live dictation recorder:
open "speakwith://live-dictation/start"Prefer AppleScript? This does the same thing:
osascript -e 'tell application "SpeakWith" to start recording recorder live dictation'Start the Live audio (voice-activated) recorder instead:
open "speakwith://batch/start"Stop the current take (the microphone stays powered on, ready to start again):
open "speakwith://live-dictation/stop"Full command reference
Each recorder supports ten actions. The table below shows the Live dictation recorder. For the Live audio recorder, replace “live dictation” with “batch” in the AppleScript command, and “live-dictation” with “batch” in the URL, with one exception, noted under the table. Two further commands control typing into other apps and name no recorder at all; they have their own section below.
| Action | AppleScript command | URL scheme |
|---|---|---|
| Power on (microphone only) | power on recorder live dictation | speakwith://live-dictation/power-on |
| Power off (release the microphone) | power off recorder live dictation | speakwith://live-dictation/power-off |
| Start a take | start recording recorder live dictation | speakwith://live-dictation/start |
| Start a take, keeping the words in SpeakWith | start recording in app recorder live dictation | speakwith://live-dictation/start-in-app |
| Stop a take | stop recording recorder live dictation | speakwith://live-dictation/stop |
| Set standby on / off | set standby recorder live dictation enabled true (or false) | speakwith://live-dictation/standby?on=true (or false) |
| Toggle power (flip the microphone) | toggle power recorder live dictation | speakwith://live-dictation/toggle-power |
| Toggle recording (flip the take, microphone stays on) | toggle recording recorder live dictation | speakwith://live-dictation/toggle |
| Toggle standby | toggle standby recorder live dictation | speakwith://live-dictation/toggle-standby |
| Bring the app forward and show the recorder | focus recorder live dictation | speakwith://live-dictation/focus |
The three toggle actions flip whatever the recorder is doing right now. They take no on or off argument: the recorder’s current state is the argument, read at the moment the command arrives. That is what lets a single hotkey mean both start and stop. They sit at different levels: toggle power holds or releases the microphone, toggle recording starts or ends a take with the microphone kept on, and toggle standby flips level mode.
“In app” means in SpeakWith. If you have turned on typing into other apps, start-in-app turns it back off before the take begins, so your words land in SpeakWith rather than in whatever window happens to be in front. Plain start leaves that setting exactly as you left it. This is the one action with no Live audio counterpart — the Live audio recorder never types into other apps, so speakwith://batch/start-in-app simply does the same thing as speakwith://batch/start. And on any build that does not offer typing into other apps at all — the Mac App Store build, for one — the two are identical as well.
Focus never touches the microphone. focus brings SpeakWith forward and opens that recorder’s pane, and that is all it does: it does not power the microphone on, start a take, or change the typing-into-other-apps switch. Bind it when you want the recorder in front of you before you decide what to do next. Running it again when SpeakWith is already frontmost changes nothing.
Each AppleScript command runs inside tell application "SpeakWith" to … — for example, osascript -e 'tell application "SpeakWith" to power off recorder batch'.
A few things worth knowing. The directional commands are safe to repeat: running “start” while already recording, or “power on” while already on, simply does nothing. The four toggle commands are the exception, and deliberately so: sending one twice returns you to where you started. Standby only affects the recorder that is currently powered on; it never powers a recorder on by itself.
Typing into other apps
Typing into other apps is the switch that sends what you say into whatever window is in front, instead of into SpeakWith. Two commands control it. Neither names a recorder: only Live dictation can type elsewhere, so there is nothing to choose.
| Action | AppleScript command | URL scheme |
|---|---|---|
| Toggle typing into other apps | toggle type into app | speakwith://dictation/toggle |
| Turn typing into other apps on | set type into app enabled true | speakwith://dictation/type-into-app?on=true |
| Turn typing into other apps off | set type into app enabled false | speakwith://dictation/type-into-app?on=false |
These do exactly what the in-app switch and the global hotkey do. That includes moving the recorder, not only the setting: turning typing on starts dictating (and if a take is already running, it begins a fresh recording from that point, so the dictated audio is its own file), and turning it off ends that take, unless you have asked SpeakWith to keep recording when typing stops.
toggle flips the switch, so sending it twice returns you to where you started. The two set commands are directional and idempotent: asking for a state you are already in does nothing at all, so a script can assert “typing off” on a timer without ever interrupting a take. Both set forms require you to say which way: set type into app with no enabled, or the URL without ?on=, is refused rather than assumed to mean on.
Turning typing off is not the same as start-in-app. set type into app enabled false only turns the switch off. start-in-app turns it off and starts a take. Bind the first when you want your next words to stay in SpeakWith, the second when you want to start capturing right now.
On builds that do not offer typing into other apps at all, such as the Mac App Store build, all three commands are accepted and do nothing.
Targeting a specific build
By default these commands find SpeakWith by name. If you have more than one SpeakWith build installed, pin the exact one you want by its bundle identifier:
osascript -e 'tell application id "com.ikisystems.speakwith.macos.gumroad" to start recording recorder live dictation'The shipping bundle identifiers are com.ikisystems.speakwith.macos.gumroad (Gumroad), com.ikisystems.speakwith.macos.appstore (Mac App Store), and com.ikisystems.speakwith.macos (Developer ID direct download).
Wire it to a hotkey
Because these are ordinary commands and URLs, you can turn any of them into a keyboard shortcut today. Drop one into a macOS Shortcut, an Automator “Run Shell Script” action, or a launcher such as Raycast, Alfred, or Keyboard Maestro, and give it the hotkey you like.
If the hotkey is how you begin dictating, start-in-app is usually the one to bind: it means “capture this here” no matter how you last left the typing-into-other-apps switch.
open "speakwith://live-dictation/start-in-app"If your launcher would otherwise need a separate “activate the app” step first, focus replaces it: the command brings SpeakWith forward on its own, and it leaves the microphone alone, so a macro can put the recorder in front of you without starting a take.
open "speakwith://live-dictation/focus"For push-to-dictate into whatever window is in front, bind the typing toggle. One key turns typing on and starts dictating; the same key turns it off again.
open "speakwith://dictation/toggle"