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

1 Like

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.

2 Likes

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.

1 Like

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)

1 Like

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

This is fantastic. Because I use dark mode, I had to change the Image in the start listening to the enclosed screenshot. Now it works.
Screenshot 2025-01-24 at 12.50.56 PM

I have given up with apple-script based approaches - new update, and they go out the window!
Here's mine - I'm just performing keyboard based actions:

toggle-voice

Voice Control.kmmacros (6.8 KB)

Nice solution.

I also use Bartender, set the key to trigger and click the VoiceControl icon, and then OCR detects which one can be clicked now start listening or stop listening, then click the position.
This way I can toggle start/stop listening.

Better to set Voice Control to a fixed position using Bartender, so the status can be seen.And add a pause after keystroke, deal with dark mode and daytime mode separately.

1 Like