EZMQTT Client icon EZMQTT Client MQTT client for ARC: connect to brokers, publish/subscribe topics, map incoming messages to variables (incl. binary arrays) and run scripts. Try it →
 
Thumbnail

Speech Recognition

Windows Speech Recognition skill: detect custom phrases via PC mic, trigger configurable scripts/actions with adjustable confidence.

Compatible with: Compatible with Microsoft Windows 10 or 11 Windows

How to add the Speech Recognition robot skill

  1. Load the most recent release of ARC (Get ARC).
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Robot Skill from the button ribbon bar in ARC.
  4. Choose the Audio category tab.
  5. Press the Speech Recognition icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Speech Recognition robot skill.


How to use the Speech Recognition robot skill

The Speech Recognition robot skill uses the built-in Microsoft Windows Speech Recognition Engine to listen for known phrases using your computer’s default audio input device (microphone). Phrases are configured manually in the Settings, and each phrase can trigger a custom action using scripts and commands.

This skill is not free-form dictation. Only the phrases you configure (plus the optional Enable/Disable phrases) are loaded into the recognizer’s dictionary. Anything else you say is either ignored or reported in the log as heard but not matched.

Main Window

Speech Recognition - Main Window

1. Pause Checkbox
Pauses phrase actions. While paused, the microphone keeps listening and the waveform keeps updating, but recognized phrases will not execute their scripts. The Enable and Disable phrases are the exception — they are always processed, which is what allows you to unpause the skill with your voice.
The pause state is saved with your project and restored when the project is loaded.

2. Phrase List Button
Toggles a window listing the phrases configured in the Settings, so you can quickly review what the skill is listening for. Clicking a phrase in that window triggers it exactly as if it had been spoken with 100% confidence, which is handy for testing your scripts without a microphone. Press Esc to close the window.

Speech Recognition - Phrase List

3. Audio Waveform
Displays live audio waveform feedback to confirm your microphone is configured correctly and actively receiving sound. The waveform is drawn in green when the skill is active and in red when it is paused.

4. Response Display
Shows detection and execution feedback. When a phrase is recognized, the log displays the matched phrase and its confidence in brackets, for example robot move forward (0.89). Other messages you may see:

  • Low confidence: <phrase> (0.62) — heard, but below your confidence threshold.
  • Enabled / Disabled — the Enable or Disable phrase was recognized.
  • Weird, heard but not detected: <phrase> — the engine returned a phrase that is not in the current list (usually after the list was changed while listening).

5. Audio Quality Messages
When the recognition engine reports an audio signal problem, a short hint is displayed: No audio signal, Speak slower, Speak faster, Speak quieter, Speak louder, or Background audio too noisy. The message is cleared the next time a phrase is successfully matched.

Automatic Pause While The Robot Speaks

The skill automatically pauses itself while ARC is speaking, so the robot does not recognize its own speaker output as a command. When speech begins, Pause is checked. When all speech has finished, the Pause checkbox is restored to the value you had set before the robot started talking — so if you had manually paused the skill, it stays paused afterward.

Overlapping or back-to-back speech is counted, so the skill only resumes after the last utterance completes. If a completion event never arrives (for example, speech that is rendered to a file or a stream that fails), a watchdog force-resumes after 60 seconds and notes the recovery in the Response Display.

Settings

Speech Recognition - Settings

Listening is paused while the Settings dialog is open, and resumes when the dialog is closed.

1. Confidence Drop-down
Sets the minimum confidence required for a phrase to be accepted, selectable from 0.50 to 0.95 (default 0.75). Phrases detected below this threshold do not execute their action; they are logged as Low confidence and run the Low Confidence script instead. If your phrases are not being detected reliably, reduce the confidence setting.
Note: Lower confidence thresholds increase the chance of false positives.

2. Setup Microphone Button
Opens the Windows Recording devices dialog (Sound control panel). Use this to verify the correct input device is selected and to confirm the audio meter responds when you speak.

3. Recognition Scripts
All Recognized runs whenever a phrase from the list is matched at or above the confidence threshold. It runs before that phrase’s own script and completes first, so it is a good place for logging, diagnostics, or common setup shared by every phrase.
Low Confidence runs when a phrase was heard below the confidence threshold. It does not run while the skill is paused.

4. Enable / Disable Phrase Fields
Optional phrases that unpause and pause the skill by voice. They are added to the recognizer dictionary automatically and are matched even while the skill is paused, which is how the Enable phrase can wake it back up. Leave them blank if you do not want voice-controlled pausing. Matching is case-insensitive.

5. Enable / Disable Command Scripts
The scripts executed when the Enable/Disable phrases are recognized. This is commonly used to control robot behavior such as entering a “listening mode” or disabling speech during loud activities.

6. Language Drop-down
ARC uses the speech recognition capabilities built into Windows, so the list contains only the recognizer languages installed on your computer. ARC defaults to EN-US if installed, otherwise it uses the first installed language that supports speech recognition. If multiple supported languages are installed, select the desired language here.

For more information on installing additional speech recognition languages, view: https://www.tenforums.com/tutorials/120631-change-speech-recognition-language-windows-10-a.html

Here is how to add a new language pack:

  1. Go to Start and open Settings.
  2. Select Time & language > Language.
  3. Select the language you want to add speech to, then select the Next button.
  4. Select the speech options you want included with the language.
  5. Sign out and sign back in for the new speech pack to be added to speech options.
  6. Go back to Settings > Time & language > Language, select your new language, and move it to the top to make it default.
  7. Go to Speech and ensure the Speech language setting matches your new default language.
  8. Sign out and sign back in for the new settings to take effect.
  9. Select the desired language from the ARC Speech Recognition configuration menu.

7. Confidence Variable
The global variable that stores the confidence value (decimal, 0 to 1) of the last recognized phrase. Defaults to $SpeechConfidence. The name must begin with a $.

8. Phrase Variable
The global variable that stores the text of the last recognized phrase. Defaults to $SpeechPhrase. The name must begin with a $.
Both variables are updated for every recognition — including low confidence results and while the skill is paused — so a script can inspect what was heard even when no action was executed.

9. Phrase List
The list of phrases to recognize. You can customize the defaults and add additional phrases. Rows with an empty phrase or an empty command are discarded when you press OK, and leading/trailing spaces are trimmed from phrases.

10. Command List
The command/action corresponding to each phrase in the same row. Each row can be an EZ-Script, Blockly, JavaScript, or Python script. You can customize commands and add additional rows.

11. List Management Buttons
Buttons for managing phrase rows: move up/down, insert, append, and delete.

Recognition Order

When Windows reports a recognized phrase, the skill processes it in this order:

  1. The phrase and confidence variables are updated.
  2. If the confidence is below the threshold, the result is logged as Low confidence, the Low Confidence script runs (unless paused), and processing stops.
  3. If the phrase matches the Enable phrase, Pause is turned off and the Enable script runs. This happens even while paused.
  4. If the phrase matches the Disable phrase, Pause is turned on and the Disable script runs.
  5. If the skill is paused, processing stops here — no phrase script runs.
  6. The phrase list is searched (case-insensitive). On a match, the All Recognized script runs to completion, then the phrase’s own script is started.
  7. If nothing matched, the log shows Weird, heard but not detected.

Control Commands

Other robot skills and scripts can control this skill with ControlCommand(). Replace Speech Recognition with the title of this skill if you have renamed it.

Command Description
ControlCommand("Speech Recognition", "PauseOn") Pauses phrase actions.
ControlCommand("Speech Recognition", "PauseOff") Resumes phrase actions.
ControlCommand("Speech Recognition", "PauseToggle") Toggles the paused state.
ControlCommand("Speech Recognition", "PauseMS", milliseconds) Pauses for the specified number of milliseconds, then resumes automatically. Calling it again restarts the timer.
ControlCommand("Speech Recognition", "PhrasesShow") Populates and displays the phrase list window.
ControlCommand("Speech Recognition", "PhrasesHide") Hides the phrase list window.
getVar(ControlCommand("Speech Recognition", "PauseGet")) Returns the current paused state as a boolean. Available to scripting languages that support return values.

How to Use Speech Recognition

  1. Install, configure, and test your audio input device (see Resources below).
  2. Add the Speech Recognition skill to your ARC project: ProjectAdd SkillAudioSpeech Recognition.
    Note: This is different from Advanced Speech Recognition.
  3. In Settings, configure your phrases and the corresponding commands/scripts.
  4. Save your settings, then speak your configured phrases into the microphone to trigger the actions.
  5. Use the Phrase List button to test a phrase by clicking it, which runs the action without needing to speak.

Requirements

Headset or External Mic

Headset or External Microphone

A headset or external microphone produces better results than a built-in PC/laptop microphone. It helps the recognition engine capture your voice clearly with less background noise. Laptop fans, motors, radio interference, and room echo can cause false positives (the skill recognizes an incorrect phrase). An external mic also helps prevent the speech engine from hearing the robot’s own speaker output.

Resources

Configure Audio Input Device

Configure Microphone Input Device

You may need to adjust your microphone input volume/gain. Use the Windows Volume Mixer and ensure you have selected the correct input device. Some systems have multiple microphones (for example: webcam microphone, headset microphone, Bluetooth microphone). Follow these steps:

  1. Right-click the speaker icon in the system tray.
  2. Select Open Sound Settings.
  3. In the Input section, confirm the correct microphone is selected and that the VU meter moves when you speak.
  4. Click Device Properties and adjust the volume slider. We often use a value around 78, but your setup may differ.
  5. Adjust volume so normal speech peaks near the middle of the VU meter. If the gain is too high, audio distorts and recognition quality drops.

Voice Training

You can train Windows Speech Recognition using the built-in training wizard. Open the Windows Control Panel, search for Speech Recognition, and run the training wizard to improve accuracy for your voice.

Troubleshooting

  • If you receive an error that the input device could not be opened, Windows privacy/security settings may be blocking microphone access for Synthiam ARC. Follow this guide to enable microphone access: https://synthiam.com/Support/troubleshooting/camera-audio-microphone-issues .
  • If you receive an error stating Voice Recognition was unable to start (invalid OS or missing device), verify:
    1. A microphone is set as the default recording device in Windows sound settings.
    2. A Windows language pack is installed that supports Windows Speech Recognition.
  • If the waveform is red and nothing responds, the skill is paused. Uncheck Pause, speak the Enable phrase, or check whether a script is issuing a PauseOn/PauseMS control command.
  • If a phrase near the bottom of your list never triggers, confirm the list contains 10 or fewer phrases, or assign an ARC subscription to this computer.
  • If the log repeatedly shows Low confidence, lower the confidence threshold in Settings or improve microphone placement and input level.

To confirm Windows Speech Recognition is working, open the built-in Windows Speech Recognition application: click the Start button and type Speech Recognition. Launch Windows Speech Recognition to verify your microphone, operating system, and language support. This Microsoft tool includes diagnostic dialogs that ARC does not provide.

Windows Speech Recognition App

Video

Related Tutorials

Related Hack Events

Related Questions


ARC Pro

Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

Author Avatar
PRO
USA
#9   — Edited

Hi, I am not trying to interfere between you and DJ (he knows the best) but it looks like to me you don't have a  mic setup.

If you are using Windows 10:

Did you check your windows program and make sure it is setup like the information above?

Also check your in windows, Resources - Configure Audio Input Device

in Control Panel\All Control Panel Items - there is sound item for you to adjust to the correct levels (playback and recording)

Make sure, in the "sound item" you microphone is "enabled" in "recording"

I did the test, disabled it and it looked your your example above,

then "restart ARC"  - I enabled the mic in sound, all good in speech recognition. ( you can do this also in the speech recognition, setup mic)

EzAng

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#10  

Do you have an icon in the system tray that shows the mic being used?

windows controls what apps can use the mic and shows when it’s in use.

Author Avatar
Australia
#11  

Thankfully, it's not ARC that cancels. It's the speech recognition script I am running. When the pause button on the speech recognition tab is not activated, background noise is still able to be picked up by the software and in some cases, the "robot stop" command is accidentally triggered causing my voice recognition program script to terminate before it has completed its run.

At the time this snapshot below was taken, I was not talking at all, yet as you can see, for some reason, robot stop was still detected. I have been avoiding this by clicking the pause button and that way the background noise isn't detected.

User-inserted image

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#12   — Edited

Yes - that’s a challenge with speech recognition across the world:)

are you using a lapel style mic as described in the speech recognition manual?

a Microphone that listens to the entire room is going to have a very very very very difficult time understanding noise vs commands. There’s no consciousness that can relate the current activity to what noises to focus on in a computer vs animal life. We take for granted the number of things our brain does to "focus" on particular events around us and filter out things that don’t matter to the current situation.

you can help A robot focus by limiting the sensory input. In this case using a microphone that has shorter range such as a lapel or Bluetooth headset etc

also, if you weren’t talking and stuff is being picked up - looks like the mic volume might be cranked because you’re attempting to use a laptop microphone

this conversation should be in the correct thread, not soundboard. This should be in the speech recognition skill for proper categorization. I moved it for you

Author Avatar
United Kingdom
#13  

Is there a way to script the pause to unpause per say ? every time i boot the robot and ARC autoloads the pause is activated on the app, i tried ControlCommand("Speech Recognition", "UnpauseListening") it doesnt work ?

Thanks :-)

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#14  

You can see the list of controlcommands for each robot skill. There is one to unpause but I’m on my phone so can’t look it up. Here’s the manual page for how to see the list: https://synthiam.com/Support/Programming/control-command

strange that it’s paused though. I know there was a bug with Microsoft Windows for a while that caused something similar. Hopefully the bug didn’t return

#15  

Try manually unclicking the pause button then save your project and reboot the computer.

Additionally you can place the ControlCommand unpause command in an INT script that starts automatically every time a windows desktop shortcut is clicked.

#16  

when installing, starting, writes the following error:

User-inserted image

The microphone works, in the settings I see a green bar jumping.