Asked — Edited
Resolved Resolved by thetechguru!

Sound Servo

I'd like to experiment servos simulating the robot mouth moving while EZB is speaking recorded messages. There is " talk servo", but this control seems to be only for speech synthesis. There's " sound servo", but this doesn't seem to be for recorded messages. How can I get servo movement from the pre-recorded messages that are now being spoken from soundboard v4 and EZB speaker? Please give some example.


Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.


Adding "sound servo" to my project, I see a window with a waveform of the sound from the PC microphone and the servo moves following that sound. But i need to make it move following pre-recorded messages activated by scripts. I don't know how to do that.


Ok , DJ, tutorial man ! there's not much there to let me understand. Something happens with "sound servo" , but movements are very small. "update speed" is in milliseconds , (100-60000 ? very long times ).The servo position is periodically updated to the audio signal level ? What's "scalar" meant for, and what's the meaning of those numbers (0.25 to 9.75) ? The servo moves by itself , with or without sound in EZB (!) No mic in the PC. What's the use of "variable name" ? for scripts, I think, but how should it be used ?


DJ, The servo always moves, with or without sound in EZB. Speaking to the PC mic the servo moves well, but never stops moving, even in perfect silence. Playing a pre-recorded speech, no mic, EZB speaks well, but the servo moves only a very small amount or nothing at all, and never stops, even if EZB finishes playing.


Are you sure you are using the right sound servo object? There are three different Sound servo objects (plus talk servo).

Sound servo (PC Mic) reacts to sounds the PC microphone hears.

Sound servo (PC Speaker) reacts to sounds played by the PC, whether originated from EZ-B or other applications)

Sound servo (EZ-B Playback) reacts to sounds sent to the EZ-B, either speech or sound script or objects that play to the EZ-B speaker.

Talk servo reacts to Text to speech, either on the PC or EZ-B, but only for speech, not for other sounds.



Use the question marks in the software to understand functions. Once you learn or have your question answered, create a user tutorial to contribute to the community ecosystem. The ezrobot product is supported by the community. For example, you have asked 12 questions and created 0 tutorials. When a question is answered, an email is sent with information inquiring you to create a tutorial with what you've learned to help others.

If a tutorial is missing, feel free to create one based on your new knowledge.:) it's how we share and grow!

For more information regarding the control in question, click here:

Or use the ? Question mark next to the X close button. If no user tutorials exist, ask in the community like you just did. Once you get assistance, contribute back to the community by creating a user tutorial to assist others.

User tutorials are connected to controls - with the 12 questions you have had answered, user tutorials will greatly affect others:)


Alan, I couldn't imagine that there were 2 different controls, both named "sound servo", one in the servo section and one in the audio section ! and with the two windows absolutely identical ! I suspected something when I noticed some reaction to the room noise taken by the PC mic. I have learned that I need the one "for ezb playback". Now I need to understand "update speed","scalar", "variable name" in the configuration window and how such parameters can affect servo operation.

To DJ. Sorry, I consider myself very ignorant about EZB, and I never thought I could write tutorials to teach someone else! But I can try , in the specific issues i have learned.


to Alan . It works, but the mouth starts moving well before the sound comes out from the ezb speaker !


Update Speed is how frequently the servo will move. It's in milliseconds.

The scalar is a scalar - it's how much to multiply the audio level. Audio is in DB and the scalar will multiply the DB. Remember, the servo position is a multiple of the DB, so the scalar changes that. Changing the scalar to 2 will make the servo 2 times sensitive.

Variable name holds the data in a variable if you wish to use it in an ez-script. You will not use this.

The link i have been sending you is EZB PLAYBACK, that is the one you want based on the question you asked. The question in the first post is what i'm referring to about having an audio file play out of the ezb speaker. Use the link of that i have been sending you, it contains instructions how to add it to your project.

Don't worry - we are all noobs when it comes to the ez-b:D It's a project that has no end and always growing


OK. One last question. I start, by a keyboard command, a pre-recorded message stored in soundboard v4 for playing by the ezb speaker, and I have also the sound servo control for ezb playback. I'd expect the servo to start moving when the sound begins and stop when it ends. Instead , the servo moves immediately, the sound begins 1-2 seconds later, and the servo stops moving before the message ends. The duration of the servo movement is the same of the message, but the speech is delayed with respect to servo movement. Unpleasant behavior for a speaking robot ! How to resolve ?



The duration of the servo movement is the same of the message, but the speech is delayed with respect to servo movement.

This has been reported before, and I believe is somewhere on DJ's todo list to be fixed, but a good reminder that it is still a problem. It seemed to be better (although not perfect) for a while, and seems to have gotten worse again in the past few releases.

Much more work, but you can also trigger specific actions to specific points in your soundboard. This is best demonstrated in the SIX project, where different dance movements occur at different points of a song, but you could build speech actions and trigger them within the soundboard at the right points.



Not much more can be done about the sound servo timing. All wifi networks and connections and environments will have a unique speeds. It's impossible to know when the ezb has buffered and began playing the audio that has been streamed to it. This is an expected behavior of the sound servo ezb.


Thanks DJ. That explains why I thought it was fixed then got worse. After the last bit of tuning, I was doing most of my robot work in my office, in the same room as the router. I have since moved everything down to my new workshop in the basement. I have a network extender nearby, but certainly not as strong a signal as the previous location.



I always forget ezb isn't a real-time system. It's great for many things , but not for all. This function seems that can't be done this way. Nevertheless I thank Alan, who helped to understand the various options for sound servo, so I could do some experimentation. I specify him as the member who solved my question. I'm wandering if ezb alone might perform functions like automatic object finding and grasping , and automatitc movement of robot to a specified location.



I'm wandering if ezb alone might perform functions like automatic object finding and grasping , and automatitc movement of robot to a specified location.

Certainly not with the current version. Would need a different processor. I am interested in seeing if using the x/2 USB adapter will resolve any of the latency related issues. Of course to use that I'll also need to use a webcam on the emdedded PC since the USB connector uses the camera connector slot.



I don't know that usb adapter. Is it already available or only a future project to interface ezb to an embedded PC?


Usb is future (hopefully shipping very soon). Will require an upgrade to the top half if the EZ-B (also hopefully shipping very soon) or all new EZ-Bs once it is available.

DJ hasn't given the price yet, but said it will be an affordable upgrade.



I was asked by the Ez support to specify who solved my question. I clicked several times thetechguru (Alan), but I neved had a confirmation (i.e. a green window with a credit for him), as I usually have had for other threads. I don't know why.


I clicked once again just now. Now the confirmation has arrived.