Relative Servos icon Relative Servos — Synchronize servos by designating a master; slave servos mirror scaled (decimal/negative) positions with min/max limits and pause control Try it →
 
Advanced Speech Synthesis Robot Skill

Advanced Speech Synthesis

by Synthiam Inc.

Azure neural text-to-speech for ARCx scripts and skills, with multilingual voices, SSML support, and EZB audio output.

Requires ARCx v5 (Updated 9/30/2026)
Tags: Audio
Compatible with: Compatible with Microsoft Windows 10 or 11 Windows Compatible with ARM Linux (Raspberry pi, etc) ARM Compatible with Linux Linux Compatible with MacOS MacOS

How to add the Advanced Speech Synthesis robot skill

  1. Load the most recent release of ARCx on a compatible operating system (Get ARCx).
  2. Press the + Skills menu from the top menu bar in ARCx.
  3. Choose the Audio category tab.
  4. Press the Advanced Speech Synthesis 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 Advanced Speech Synthesis robot skill.


How to use the Advanced Speech Synthesis robot skill

Advanced Speech Synthesis

Natural sounding text to speech using Microsoft Azure neural voices, in many languages.

This robot skill is a text to speech engine: it does not speak on its own, it is what ARCx uses whenever anything in the project asks for speech. Add it, pick a voice, and every Audio.Say() in your scripts - plus the voice of skills such as Autonomous AI - uses that voice.

Requirements

  • You must be logged into your Synthiam account in ARCx. The audio is synthesized through Synthiam's web service, and without a login the skill raises "There is no user logged into ARC."
  • An internet connection.
  • Only one instance of this skill per project, and only one text to speech engine skill in a project at a time.

Adding it to a project

  1. Add the skill to the project (Audio category).
  2. Open its configuration.
  3. Type the Text To Speech Voice code you want, for example en-US-JennyNeural. The question mark beside the field opens Microsoft's list of every supported voice: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/language-support?tabs=tts
  4. Type something in the Test box and press Test to hear it.
  5. Save.

The window

Advanced Speech Synthesis  <a href='/Support/Skills/Skills-Overview' target='_top'>robot skill</a> window

  • Stop Speaking - stops whatever is being spoken right now, immediately.
  • Log - the last 25 lines of activity, including what was spoken and any errors.

Configuration

Advanced Speech Synthesis configuration settings

Setting Meaning
Text To Speech Voice The Azure voice name, such as en-US-JennyNeural, en-GB-RyanNeural, fr-FR-DeniseNeural, ja-JP-NanamiNeural. Default is en-US-JennyNeural.
Test Type a phrase and press Test to hear the current voice speak it.

Picking a voice code

Voice codes follow the pattern language-REGION-NameNeural. Copy the Voice name column from Microsoft's language support page exactly - if the code is wrong the service returns an error, which appears in the log.

The Window tab sets the robot skill's window title, its size on the workspace and notes about what it does in this project.

Window configuration tab

SSML

If the text handed to the engine is SSML, it is detected and passed to Azure as SSML, so you can control emphasis, breaks, rate and pitch:

Audio.SayWait("<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis'; xml:lang='en-US'><voice name='en-US-JennyNeural'>Hello <break time='500ms'/> world</voice></speak>");

Speaking from a script

Audio.Say("Hello, I am a robot");          // PC speaker, returns immediately
Audio.SayWait("Hello, I am a robot");      // PC speaker, waits until finished
Audio.SayEZB("Hello from my own speaker"); // EZB #0 speaker
Audio.SayEZBWait("Hello", 0);              // EZB #0 speaker, waits until finished

When the audio is destined for an EZB, the skill resamples it to the rate and sample size the EZB asked for (8 bit or 16 bit), so it plays correctly out of robot hardware.

Troubleshooting

Symptom Cause
"There is no user logged into ARC" Log into your Synthiam account in ARCx.
An error in the log mentioning the voice The voice code is misspelled or is not one Azure offers. Copy it from the Microsoft page.
Nothing is spoken No text to speech engine in the project, or two engines are fighting - keep only one.
Audio out of the EZB sounds bad The EZB speaker is low fidelity by design; try 16 bit if the EZB supports it.

See also

  • Basic Speech Synthesis - English only, no configuration
  • Windows Speech Engine - offline, uses the voices installed in Windows

Control Commands for the Advanced Speech Synthesis robot skill

There are Control Commands available for this robot skill which allows the skill to be controlled programmatically from scripts or other robot skills. These commands enable you to automate actions, respond to sensor inputs, and integrate the robot skill with other systems or custom interfaces. If you're new to the concept of Control Commands, we have a comprehensive manual available here that explains how to use them, provides examples to get you started and make the most of this powerful feature.

Control Command Manual

This skill has no control commands.

It is a text to speech engine. It does not receive commands; it provides the voice that ARCx uses whenever something asks for speech.

How to make it speak

Use the Audio object from a JavaScript or Python script:

Script command What it does
Audio.Say("text") Speaks out of the PC speaker and returns immediately.
Audio.SayWait("text") Speaks out of the PC speaker and waits until it has finished.
Audio.SayEZB("text") Speaks out of the speaker on EZB #0.
Audio.SayEZB("text", ezbIndex) Speaks out of the speaker on the given EZB.
Audio.SayEZBWait("text") Speaks out of EZB #0 and waits until it has finished.
Audio.SayEZBWait("text", ezbIndex) Speaks out of the given EZB and waits.

Example:

Audio.SayWait("Bonjour, je suis un robot");

SSML is accepted by these commands and is passed through to Azure untouched.

Changing the voice from a script

The voice is a configuration setting, not a control command. Change it in the skill's configuration dialog, or programmatically through ARCx's configuration API using the VoiceCode field of this skill's configuration.

Stopping speech

The Stop Speaking button in the skill's window stops playback. There is no control command equivalent in this skill.


ARC Pro

Upgrade to ARC Pro

Get access to the latest features and updates before they're released. You'll have everything that's needed to unleash your robot's potential!

#5  

This robot skill has been updated to v5.

What has changed

updated to support latest audio service of ARCx 2026.09.28.02