ARC Pro

Upgrade to ARC Pro

Synthiam ARC Pro is a new tool that will help unleash your creativity with programming robots in just seconds!

Author Avatar
PRO
Canada
#1  

To program your JD Humanoid to speak in Dutch using the Azure Text To Speech robot skill, you'll need to set the language to Dutch and choose a Dutch voice provided by the Azure Text to Speech service. Here's how you can do it:

  1. Add the Azure Text To Speech Robot Skill:

    • If you haven't already, add the Azure Text To Speech robot skill to your ARC project.
  2. Configure the Azure Text To Speech Robot Skill:

    • Open the configuration menu of the Azure Text To Speech robot skill.
    • In the Neural Voice field, enter the name of a Dutch voice provided by Azure. You can find the list of available voices on the Microsoft Azure website. For Dutch, you might find voices like "nl-NL-FennaNeural" or "nl-NL-CoenNeural".
    • Save the configuration.
  3. Write Your EZ-Script:

    • Open the EZ-Script editor in ARC.
    • Use the ControlCommand() function to interact with the Azure Text To Speech robot skill. You'll need to use the Speak command followed by the text you want the robot to say.

Here's an example EZ-Script that makes JD Humanoid speak a phrase in Dutch:

# Set the language to Dutch and select a Dutch voice
ControlCommand("Azure Text To Speech", "SetVoice", "nl-NL-FennaNeural")

# Make JD Humanoid say "Hallo, hoe gaat het?" which means "Hello, how are you?" in Dutch
ControlCommand("Azure Text To Speech", "Speak", "Hallo, hoe gaat het?")

Replace "nl-NL-FennaNeural" with the Dutch voice you prefer from the Azure Text To Speech service. The SetVoice command is used to change the voice, and the Speak command is used to make the robot speak the text.

  1. Run Your Script:
    • Execute the script in ARC to hear JD Humanoid speak in Dutch.

Remember to ensure that your Azure subscription has access to the Dutch language neural voices and that you have entered the correct voice name in the script. If you encounter any issues, double-check the voice names on the Azure website and ensure that your Azure Text To Speech API key is correctly configured in ARC.


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.
Author Avatar
PRO
Iraq
#2  

Okay, I'll use this method for the Arabic language and move the robot's mouth using a single servo motor. Thank you.

Author Avatar
PRO
Canada
#3  

Great - that will work. Below are stepbystep instructions to make JD speak Arabic with the Azure Text To Speech skill and move the mouth with a single Talk servo v2 servo. I recommend using an ARC Script (JavaScript) rather than EZScript - I can’t create EZScript for you, but I’ll provide readytopaste JavaScript and explain the Skill configuration and tuning you’ll need.

What you’ll do (high level)

  • Configure Azure Text To Speech to use an Arabic neural voice.
  • Configure Talk servo v2 with the servo port (e.g., d0) and min/max positions.
  • Use a Script (JavaScript) to set the voice and trigger both the Azure TTS speak and the Talk servo animation (Talk servo v2 accepts a Speak ControlCommand to animate mouth movement from a text string).

Useful docs

Step 1 - pick an Arabic voice in Azure

  1. Open the Azure Text To Speech robot skill config (press the kebab/hamburger or Config on the skill window).
  2. Click View List and find Arabic voices from Microsoft. The Synthiam manual references the Microsoft voice list: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support?tabs=tts
  3. Copy the "voice id" (the grey text in the Microsoft chart) for the Arabic voice you want, e.g. a voice id might look like:
    • ar-EG-SalmaNeural (Egyptian Arabic example)
    • ar-SA-ZariyahNeural (Saudi Arabic example) (Use the Microsoft list to pick the exact voice id you prefer.)
  4. Paste that id into the Neural Voice field and Save.

Step 2 - configure Talk servo v2

  1. Open Talk servo v2 config (press the kebab / Config on the Talk servo v2 skill).
  2. Set the servo port to the EZB port you’re using (for example d0). Remember servo port constants are not in quotes (d0).
  3. Set Minimum and Maximum positions for the mouth servo (experiment: try min ~ 60 and max ~ 120 as a starting point; tune for your servo/jaw geometry).
  4. Leave Pause unchecked (or use ControlCommand to unpause).
  5. Tune Start Delay, Constant Delay, Vowel Delay and Period Delay to sync the animation to the speech. Defaults (Start Delay ~460ms, Constant ~90ms, Vowel ~40ms) are a good starting point; you’ll likely reduce Start Delay for shorter phrases.

Important: you must be connected to the EZB for servo motion to work.

Step 3 - Script (JavaScript) to set voice and speak + animate mouth Add a Script robot skill (Project -> Add robot skill -> Scripting -> Script), open the script editor, choose JavaScript, and paste this:

// Example JavaScript for ARC Script skill
// 1) Set Azure TTS to an Arabic voice
ControlCommand("Azure Text To Speech", "setVoice", "ar-EG-SalmaNeural");
print("Azure voice set to ar-EG-SalmaNeural");

// 2) Text to speak (Arabic). Replace with whatever you want the robot to say.
var text = "  "; // "Hello, how are you?" in Arabic

// 3) Trigger Talk servo v2 to animate mouth using the same text
ControlCommand("Talk servo v2", "Speak", text);
print("Talk servo animation started");

// 4) Speak using Azure and wait until completed
ControlCommand("Azure Text To Speech", "speakWait", text);
print("Azure finished speaking");

Notes about the code:

  • Use ControlCommand(...) exact skill names that appear in your project. If you renamed the skill window, use that name.
  • I used speakWait to block until speech completes. If you prefer asynchronous speak, use "speak" instead.
  • Talk servo v2's Speak command will animate the servo based on the text provided. Tune Start Delay inside the Talk servo config to get better sync with Azure audio.
  • Use print() for debug output in ARC scripts.

If you prefer the Talk servo to automatically animate when Azure TTS speaks:

  • In the Azure TTS skill config you can enable any "Replace Audio Script Commands" or similar option (see the Azure skill config). If the Azure skill is replacing Audio.say, Talk servo listens to the built-in Say() commands. But the explicit approach above (sending both commands) is simpler and gives you control over timing.

Tuning tips

  • If the mouth animation starts too early or late, reduce/increase Talk servo v2’s Start Delay.
  • If jaw movement amplitude is too large or small, adjust servo Min/Max in Talk servo config.
  • Test with short phrases, then longer ones.
  • If using the EZB speaker (Speak out of EZB option in Azure skill), verify EZB audio is connected (Audio.isConnected()) and that you selected "Speak out of EZB" in the Azure skill config.

Limits and reminders

  • Azure TTS limits in ARC: generated speech is limited to 500 characters per call and 1000 daily calls for ARC Pro (see Azure skill manual).
  • Make sure your Azure credentials (if required by the skill) are configured in the Azure TTS skill settings.
  • Servo ports are constants like d0 (don’t put them in quotes when configuring servo positions in scripts).

Would you like:

  • A tested sample phrase list in Arabic to try different mouth motions?
  • Help tuning Start Delay and vowel/constant delays (I can suggest values based on your initial test)?
  • If you still want an EZScript version, paste the EZScript you are trying and I’ll convert it into JavaScript for you.

Any of the above I can help with - which servo port will you use (d0, d1, etc.) and which Arabic voice did you pick from the Microsoft list?


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.