PRO
RoboHappy
USA
Asked
One thing I still don't understand: whenever I have the "Speak Rec" robot skill operating, it picks up background noise and causes some of my Auto Position stills to activate on their own. I do use start/stop voice-activation scripts in my ARC project, but as long as Speak Rec is listening, if it hears a noise things start moving on their own and sometimes end up breaking the robot. Why does this happen?
For context: I'm using the Speak Rec robot skill and Auto Position presets in an ARC project and I'm using scripts to start and stop voice activation. I'm not sure whether my microphone is connected to the PC (USB/audio device) or to an EZB - if that matters, please let me know what detail would be helpful.
Related Hardware (view all EZB hardware)
EZ-B V4
by EZ-Robot
EZ-B v4/2 robot controller: dual Cortex ARM, Wi-Fi, audio/video, 24 servo/digital ports, I2C/UART, camera and Synthiam ARC control for custom robots
Wi-Fi / USB
Servos
24
Camera
Audio
UART
3
I2C
ADC
8
Digital
24
Related Robot Skills (view all robot skills)
Script
by Synthiam
Multi-language ARC Script: build, run and debug Blockly, JavaScript, EZ-Script or Python with Intellisense, run/save/load and Roboscratch support
Bing Speech Recognition
by Microsoft
Accurate Bing cloud speech-to-text for ARC: wake-word, programmable control, $BingSpeech output, Windows language support, headset compatible

This usually happens because the Speech Recognition skill is hearing ambient noise as if it were a valid phrase, and then it runs the command tied to that phrase. If one of those phrases is mapped to an Auto Position action or frame, ARC will execute it immediately.
A few important points:
Why it happens
What to check first
1) Confidence setting
Open the Speech Recognition skill’s kebab/hamburger menu and go to Config.
Look for the Confidence setting.
2) Phrase list
Review the phrases in the skill.
3) Microphone placement
This matters a lot.
If you’re using an EZ-B speaker for responses, that can also cause the microphone to hear ARC talking back and accidentally re-trigger commands.
Best practices to stop unwanted Auto Position triggers
Use a "listening mode"
Instead of leaving Speech Recognition fully active all the time, use a script to:
That way the robot is not always listening to ambient noise.
Make your voice commands more specific
For example:
instead of:
Separate movement commands from speech commands
If possible, keep movement-related actions behind a second confirmation or a safer trigger.
For example:
That can reduce accidental movement.
Where to configure it in ARC
In the Speech Recognition skill:
Microphone detail that would help
Yes, this detail matters:
If you tell me:
I can help you tune it so it stops reacting to background noise.
If you'd like, I can also help you redesign the script so the robot only listens during a short "voice window" and ignores everything else.
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
I am using the Bing Speech Recognition skill
The microphone is on the Laptop I use
The microphone sensitivity is usually set around 70
I do use a wake word before I speak a command
Simple commands like "Robot move forward", Raise right arm", "Open gripper" can get activated while the Speech Rec is still open.
I do already use a word to stop the Speech Rec or I sometimes will click on the Pause icon
That helps a lot - since you’re using Bing Speech Recognition with a laptop microphone, the most likely cause is false recognition from ambient noise or robot sound being interpreted as a command.
What’s probably happening
Bing Speech Recognition is cloud-based and generally accurate, but it still needs a clean audio signal. A laptop mic at 70% sensitivity can easily pick up:
If the skill is still listening, even briefly, it can recognize something close enough to:
robot move forwardraise right armopen gripperand then ARC runs the Auto Position action attached to that phrase.
What I’d change first
1) Lower the microphone sensitivity
A setting of 70 is fairly high for a robot environment.
Try:
If you’re too far away from the mic, move closer instead of increasing gain.
2) Use push-to-talk or very short listening windows
Since you already use a wake word, the next improvement is to make listening very brief:
That reduces the time ARC is exposed to background noise.
If you’re currently leaving it open after the wake word, that’s the window where false triggers happen.
3) Increase the wake word confidence
In the Bing Speech Recognition skill settings, raise the Min Wake Word Confidence value a bit.
Example:
0.75, try0.80or0.85That makes accidental wake triggers less likely.
4) Use more unique phrases
Your commands are understandable, but some are still a bit generic.
For example:
robot move forwardraise right armopen gripperThese are okay, but if the mic is hearing partial words or noisy speech, you can make them even more distinct:
robot advance forwardrobot raise right armrobot open gripper nowShort, unique commands tend to work better than very common words.
5) If possible, move the mic away from the robot
A laptop mic is often better than a mic mounted on the robot, but if the laptop is near the robot’s speaker or motors, it can still hear them.
Try:
About the Pause icon and stop word
That’s good practice, but the issue is usually during the time it is active.
If the skill remains unpaused long enough for background noise to be interpreted, the commands can still fire.
Best-practice setup
For the most reliable behavior:
A headset mic is often much better than a laptop mic for robots because it hears you, not the room.
ARC tip
For Bing Speech Recognition, you can review the skill’s options from the kebab menu / three-line menu and tune:
Here’s the skill page for reference:
My recommendation for your setup
Based on what you described, I’d try this order:
If you want, I can help you set up a safer voice-control flow in ARC so the robot only accepts commands for a few seconds after the wake word, then automatically disables listening.
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
@Robohappy, I feel your pain. I've feared exactly this happening. I have robot arms that are inside the robot and need to extend out before they start moving. You can only imagine what would happen if they started moving around while inside the robot. It's happened and was not a pretty sight. I since have implemented a few failsafe measures to keep this from happening and if it does to keep any damage from happening. Here's what I did:
Thankfully the motor that moves the arms up and down is a DC motor and is powered by an "intelligent" motor controller. The motor controller is a Sabertooth with a Kangaroo daughter board. This controller can sense a runaway or stall motor event. This has saved my butt a number of times.
I moved from using the microphone on the computer to a nice one that is plugged into it. Neither worked well. I was getting all sorts of false positive script triggers or just plain no response when I spoke. I ended up switching to a high quality headphone mic with noise canceling. I tried several and ended up loving the Plantronics - Voyager 5200 UC. It can be turned off and on easily (it will quickly reconnect to the computer) and quickly if you want to have complete disconnect from the computer. It comes with a bluetooth USB dongle and is made to be used with a computer via Usb. Now I have at least 98% positive recognition with no false triggers. It's a bit pricey but worth every penny in my opinion. The downside is that I'm the only person that can command the robot with SR.
Like you I use a wake word. It's a simple word that I don't use much in conversation. I use "Robot" I also have a visual set of lights that are programmed to come on for the duration of the "listening" period I have set. That way I have a visual of when to start speaking and for how long. I also have the Wake word confidence set pretty high in Bing SR skill that helps to stop the false triggers.
Another fail safe I use it to set a variable for moving parts that may get damaged if they move at the wrong time. This also helps with operator error. for example, I'll have a global var set to 0 called "$botharmsextended" that's set in ARC's int script at start up (because the arms are always inside the robot at start up). After the arms are commanded to extend, that script will check that the arms are indeed out of the robot (by checking both position and a triggered microswitch). If the script can confirm that the arms are indeed extended it will change the var $botharmsextended to a 1 meaning that it's safe to move the arms. If not the var stays at 0. Now the trick is to have other scripts related to the arm check this global var to make sure they are safe to move. I use this method on other moving parts that may be damaged if they move before I'm ready. This method stops any damage but also adds a layer of complexity to your scripts.
I hope this helps somehow. Good luck with your issue.
That’s a solid set of safeguards, and it lines up really well with what I’d recommend in ARC.
What Dave described is basically the right mindset for a robot that can physically damage itself: don’t rely on speech recognition alone as the safety gate. Use speech as the trigger, but let ARC verify whether motion is allowed.
The best takeaway
For risky motions like:
you should add a safety condition before the action runs.
Good pattern in ARC
Instead of letting a speech phrase directly call an Auto Position action, do this:
$botharmsextendedThat way, even if Bing Speech mishears something, the robot won’t move unless the state is safe.
Example approach
If you use a global variable like:
$botharmsextended = 0means unsafe$botharmsextended = 1means safethen your voice command script can check it first.
JavaScript example
If you want, you can also make the robot speak a warning:
Even better: use a state-check script
For each risky command, wrap it in a simple "permission check" script. That gives you:
For example, you could also check:
$IsSpeakingAbout the microphone side
Dave’s mic advice is excellent too. A noise-canceling headset mic or a bluetooth headset like the Voyager 5200 UC can make a huge difference compared with a laptop mic.
For your current setup, I’d suggest:
ARC-specific suggestion
You can put these checks right in the All Recognized Script of Bing Speech Recognition, or in the script that gets called by the phrase.
If you haven’t already, open the Bing Speech skill’s kebab menu / three-line menu, go to Config, and use:
That gives you a clean place to filter commands before anything moves.
My recommendation
For your robot, I would treat speech recognition as an input, not a permission system.
So:
That’s the safest way to prevent surprise motions.
If you want, I can help you write a single ARC JavaScript safety wrapper for your Auto Position commands so all your voice commands go through the same protection logic.
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
@Athena, Great suggestions, I will look at my settings to start with then see where it all stand and get back to you
@Dave Thanks for the external mic suggestion, I have been thinking about something like that for some time, so I think I will look further into now
That sounds like a good plan.
Start with the Bing Speech Recognition settings first, then test with a few commands while keeping the robot in a safe pose. If you find the false triggers still happen, a noise-canceling headset or external mic will likely help a lot more than the laptop mic.
A few things I’d check in ARC:
$botharmsextendedbefore allowing risky Auto Position actionsIf you want to make the safety part more robust, I can help you build a small JavaScript wrapper in ARC so all voice commands check a safety condition before running Auto Position.
Useful links:
If you’d like, send me a screenshot of your Bing Speech Recognition config and I can point out exactly what to adjust.
I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
One thing I mistaking, I generally use the regular Speech recognition skill more for the typical robot commands more than the Bing one. This now brings a new question. Stick with the regular Speech recognition skill or is it preferred to use the Bing Speech rec skill as of late?