NMS Faux Odometry icon NMS Faux Odometry Estimate pose odometry from movement distance for robots without encoders, calibrated by speed. Suited for DIY navigation; pose drifts with lidar. 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

Your robot can be more than a simple automated machine with the power of ARC Pro!

Author Avatar
PRO
USA
#1   — Edited

All is good now, always did work, just windows going it's thing, oh well

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#2  

Speech recognition uses the built-in microsoft speech recognition engine. There is nothing synthiam can do to enhance or change the engine, as it's not opensource and owned by Microsoft. Follow the instructions above

Author Avatar
PRO
USA
#3  

All is good now

just did the old windows reboot, now works

Author Avatar
Australia
#4   — Edited

Hi there,

Sometimes when I open ARC, my speech recognition box doesn't detect the soundwaves. It shows the soundwave box as grey and not the red and green lines, even when I have connected the program with my microphone.

The person I am working with came to the conclusion that it might be because I didn't start with the JD Bare file when I opened the project. He has been starting with the JD Bare project every time we open the program and merging it with the previously saved program, rather than opening the saved program directly because of this issue with the speech recognition. But I thought it was inconvenient to do that and that surely I should be able to open previously saved projects and have them work.

I have run out of ideas. Any suggestions on how to fix this are much appreciated.

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#5  

Can you verify the speech recognition skill that you’re using is the bing speech recognition? Or just speech recognition?

Author Avatar
Australia
#6  

General speech recognition, not bing.

Author Avatar
PRO
Synthiam
LinkedIn Thingiverse Twitter YouTube GitHub
#7  

Okay - I’ll see if I can reproduce it. Stay tuned

Author Avatar
Australia
#8  

Thanks, DJ:)

This is what the Speech Recognition window looks like for me sometimes when I open my previously saved programs. Notice how the soundwaves cannot be seen up the top right? I'm baffled!

User-inserted image