Thumbnail

Talk Servo V2

by Synthiam

Bind a servo to spoken audio to move a mouth similating speaking

How to add the Talk Servo V2 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 Talk Servo V2 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 Talk Servo V2 robot skill.

How to use the Talk Servo V2 robot skill

This skill will bind to the Text-to-speech engine and move servos to simulate jaw movement when speaking. Whenever a text-to-speech script command is executed (i.e. Say, SayEZB, SayWait, SayEZBWait), this skill will move the specified servos to simulate a mouth movement. If your robot has servos connected to simulate a mouth, this skill will move those servos while speaking.

There are parameters to configure for the voice and voice settings selection in this skill. Every voice and different voice settings (i.e. speaking speed) will require custom settings. The settings are delays for each type of audio. For example, there are delay specifications for Constants and Vowels. The mouth is closed when a Constant is detected and opened when a vowel is detected. The mouth is again closed at the end of a word or sentence. The delays for each of these settings can be specified to tune your effect.

Main Window



User-inserted image


1. Text Display
Displays the text that is being sent by a script to activate the servo movement.

2. Pause Checkbox
When checked the talk servo skill will be paused and won't execute servo commands until unchecked.

3. Stop Button
This button will stop the servo movement at any time.

4. Script
A script must be used to activate the Talk servo skill. Use commands like Say, SayEZB, SayWait, or SayEZBWait to activate the servo movement.

Settings



User-inserted image



1. Title Field
This field contains the title of the Talk servo skill. You can change it if you'd like.

2. servo Settings
This section allows you to set up servo movement parameters such as servo port, board index, servo configuration, max/min degree limitations, multiple servo control, and inverted direction.

3. Constant Delay Drop-down
For each consonant in the text being executed by this skill, the talk servo will go to the minimum servo value. The value in this drop-down determines how long the servo will stay in that position. The range is 10-1995 milliseconds. The default is 90 ms.

4. Vowel Delay Drop-down
For each vowel in the text being executed by this skill, the talk servo will go to the maximum servo value. The value in this drop-down determines how long the servo will stay in that position. The range is 10-1995 milliseconds. The default is 40 ms.

5. Period Delay Drop-down
For each period or coma in the text being executed by this skill, the talk servo will go to the minimum servo value. The value in this drop-down determines how long the servo will stay in that position. The range is 10-1995 milliseconds. The default is 300 ms.

6. Start Delay Drop-down
The text-to-speech engine and audio buffer have a slight delay before the audio begins to play. Use this drop-down to adjust the delay before the Talk servo movement begins. Use this delay to sync up the servo movements with the audio. The range is 10-1995 milliseconds. The default is 460 ms.

How to use Talk Servo


In this short tutorial, we will demonstrate how the Talk servo works when the robot is instructed to speak. Any control that uses the text-to-speech engine will cause the Talk servo robot skill to move the servo. This tutorial will use Blockly to have the robot speak and move the servo. 

1) Attach a servo to the EZB controller on port D0

2) Add this Talk servo skill to your ARC project (Project -> Add Skill -> Audio -> Talk Servo).
User-inserted image



3) Add a Script skill to your ARC project (Project -> Add Skill -> Scripting -> Script).
User-inserted image



4) Press the config button on the Talk servo robot skill
User-inserted image



5) The Talk servo config menu will display. Select the port for the servo. Also, specify the Min and Max positions for that servo. Press SAVE to save these configuration settings.
User-inserted image



6) Press the Config button on the Script robot skill.
User-inserted image


7) Switch to the Blockly tab
User-inserted image


8) Expand the AUDIO section. Select one of the two blocks for having the robot speak. The Say EZB block will speak out of the EZB speaker (if supported). The Say PC block will speak out of the PC speaker.
User-inserted image


9) Expand the TEXT section. Drag the text string and fit it into the Say block.
User-inserted image

User-inserted image


10) Edit the string to some text that you wish the robot to speak.
User-inserted image


11) Save the script
User-inserted image


12) Ensure you are connected to an EZB (required to move the servo). Now, press the START button on the script. Watch the servo move as the robot speaks your phrase.
User-inserted image


Now that you have seen how the Talk servo works, you can have any robot skill that speaks move the servo. Take a look at the chatbot robot skills, such as AIMLBot, BotLibre or PandoraBot in the Artificial Intelligence section of the robot skill store.



Requirements



A servo motor and an EZB I/O controller.

ARC Pro

Upgrade to ARC Pro

ARC Early Access will give you immediate updates and new features needed to unleash your robot's potential!

PRO
USA
#1  
Is this free like it use to be?
#3   — Edited
I just noticed this said V2. Is this a new issuance or is it the same rev from the last 12 months or so? The one I was using worked very well.

Thanks,
Perry
PRO
Synthiam
#4  
I don’t think there was an update to the skill. Only the description was updated in this skill. I think a tutorial was added to it
PRO
United Kingdom
#5   — Edited
Hi All, 1st time post.   Been using ARC a while love it.   I was using the above example on Vern my as yet Half InMoov.   When I used. 

Code:

SayPC (Hello World)
The talk servo worked as expected, with the voice coming from PC speaker.

When I used

Code:

SayEZB (Hello World}
The voice came from speaker in robot attached to EZB controller as expected but no movement from Talk Servo. 

I tried with an IoTiny and got the same result.  Also tried with another PC and got the same result.

Hope this is clear.  I have the most recent update of ARC.  I’m a bit stumped,  It was working all as expected correctly on previous update.

Many thanks
PRO
USA
#6   — Edited
User-inserted image


I use:
min = 1
max - 180
PRO
United Kingdom
#7  
Thank you,    I'll give it a go and report back..
#8  
We can confirm the talk servo v2 isn't working with EZB - I've filed a bug report, and it'll be addressed asap. Thank you for the kind words about ARC; I'll share them with the team :D. Apologies for the talk servo bug - we'll resolve it shortly.
PRO
United Kingdom
#10  
;) amazing, thanks DJ and Synthiam support.  All working correctly,  Vern can speak again
PRO
United Kingdom
#12  
Hey EzAng,  video really cool, nice one,  did you use Arduino and uart to sync the LEDs ?
PRO
USA
#13   — Edited
Sorry it took so long to get back with you, I have been gone for a few days.

Thanks for your comments...

No, this time I used the Ezb4 controller, connected the LEDs to ground and signal to work

I used:
the Talk servo V2, fine tuning all the adjustments
audio toolbox for different voices and script
Script for the audio
5 LEDs
small servo for mouth,
wires,
tape,
EZB4 controller,
ARC,
servo city parts for stand,
mask, cut for the mouth


User-inserted image


You can use the Arduino if you prefer, it works the same way with DJ's Arduino software.
On my Arduino I have a shield, easy to plug servos, LEDs or whatever into it. Also, I use an external power source for bigger servos.

COM 3. baud 57600

User-inserted image