Voice Control Start/Stop Listening Command Testing

Hello, after much frustration from discovering that Apple voice control does not have a default setting to set a keyboard shortcut for starting and stopping listening, I've come up with a solution using the following macro. (Note: there are solutions for turning voice control on and off but these solutions prevent you from using voice commands to resume listening)

In outline the macro holds a variable marking whether or not voice control is listening and then checks whether or not the voice control icon is visible on the screen in the menu bar.

  • If the variable is on and the icon is visible it turns voice control off via menu bar hotkey and mouse click.
  • If the variable is on in the icon is not visible, it turns the variable off.
  • And vice versa if the variable is off.

I'm using bartender to open the voice control menu bar menu with a hotkey, but this could also be done with a static click at the location where your voice control menu icon is if you don't use bartender. I have included the on voice control icon I use in the find image step.

Hope this helps someone else! I'm very open to better ways to do this.


Voice Command Start:Stop Listening.kmmacros (16.1 KB)
Voice Control On

Good work.

Lately I've been having Voice Control come on accidentally(?) every few hours. I have no idea why.

I just looked into whether Voice Control has a setting in the "defaults" area of macOS, (using a method of reading that file before and after changing the setting and then checking the difference) but I couldn't find anything. If there was a setting in there, this could be made even easier to fix.

Just for fun, and totally silly to some degree, but I just made a 1step macro in Keyboard Maestro with the "Speak Text" action, to say the words "stop listening". I have speakers and a camera mic tied to a Mac Studio, and it works as if I'd said it out loud myself. :stuck_out_tongue_winking_eye:

Clearly a workable option for turning on and off Voice Control, as long as having the computer speak out loud isn't a problem in the given location.

1 Like

That's literally "thinking outside the box". The box being the Mac, and the "outside" being the sound waves that travel from the Mac's speaker to the Mac's microphone. In a sense, you have built "self modifying code" and you're the kind of person who might someday built SkyNet.

Love it!

Now, if somebody's got Sound Source or similar -- could you script things to route output directly to input for just this one action so the computer doesn't speak out loud?

I have SoundSource, but I don't think it can route output to input. Loopback by RogueAmoeba might, and I have it, but haven't tried. That said, I did create two other macros...one to start & one to stop listening using the menubar items for VoiceControl. Somewhat similar to pbhope's, I suppose, but this works for me as needed, for what little that's worth to anyone else.

Click Start Listening.kmmacros (8.4 KB)
Click Stop Listening.kmmacros (8.6 KB)

You could probably layer TCP/IP over Speaker/Mic.