Pronunciation and speech control
Three layers decide how a voice AI Agent says names, numbers, and codes. The text of the reply comes first. The text-to-speech (TTS) settings then decide how the voice reads that text. The speech-to-text (STT) settings decide how well the AI Agent hears the same words from the caller.
| Problem | Fix | Where |
|---|---|---|
| The voice reads a symbol, a date, or a URL badly | Write the text the way it is said | Voice guidelines and dialog responses |
| The voice reads numbers or abbreviations badly | Text normalization | Voice settings, text-to-speech row |
| The voice says a brand or a name wrong | Pronunciation dictionary | Voice settings, text-to-speech row |
| The voice is too fast or too slow | Speed | Voice settings, text-to-speech row |
| The transcript misspells a name or a term | Keyterms, keywords, or context terms | Voice settings, speech-to-text row |
Write text the way it is said
For a reply that the AI Agent generates on a call, Moveo adds a voice formatting rule to the prompt. The rule removes markdown, emojis, and URLs. It also writes numbers, dates, amounts, and acronyms in spoken form. A text response that you write in a dialog does not always get this rule. Write those responses in spoken form yourself.
| Before | After |
|---|---|
€1,250.50 | one thousand two hundred fifty euros and fifty cents |
15/03/2026 | the fifteenth of March, twenty twenty-six |
support@example.com | support at example dot com |
GR16 0110 1250 0000 0001 2300 695 | the account ending in six nine five |
ATM | A T M |
Visit https://example.com/pay | You can pay on our website |
Text normalization
Text normalization turns digits and abbreviations into words before the voice reads them. For example, it reads "1984" as "nineteen eighty-four" and "Dr." as "Doctor".
| Provider | Setting | Values |
|---|---|---|
| ElevenLabs | Text normalization (apply_text_normalization) | auto (default) decides for each text. on always applies it. off reads the text as written. |
| MiniMax | English normalization (english_normalization) | On or off. It improves numbers and dates in English, with a small latency cost. |
For eleven_flash_v2_5 and eleven_turbo_v2_5, ElevenLabs allows on only on an Enterprise
ElevenLabs plan. On other plans, use auto and write numbers in spoken form, or use
eleven_multilingual_v2.
Cartesia has no normalization setting in Moveo. For Cartesia, write numbers in spoken form.
Pronunciation dictionaries
A pronunciation dictionary holds rules that tell the voice how to say a word. For example, a rule
can make the voice say SEPA as "see-pa". Moveo-hosted ElevenLabs and Cartesia rows have the toggle
Use account pronunciation dictionary. A row with your own speech model does not show the toggle,
because your key cannot read the provider account of Moveo.
- Moveo keeps the dictionary in its own provider account. The name of the dictionary is your account
ID, or starts with your account ID and
_. - If no dictionary matches, the toggle is disabled and shows "No dictionary found for this account."
- For ElevenLabs, the row saves the current version of the dictionary. After a change to the dictionary, open the voice settings and click Save again.
With the API, you can also set the dictionaries of
your own provider account on a step with your speech model. An ElevenLabs step takes dictionaries in
pronunciation_dictionary_locators. Each locator must have a pronunciation_dictionary_id and a
version_id. Moveo ignores a locator without a version_id. ElevenLabs accepts at most three, so
set no more than three. A Cartesia step takes one pronunciation_dictionary_id.
{
"speech_model_id": "<speech_model_id>",
"provider": "elevenlabs",
"config": {
"model_id": "eleven_flash_v2_5",
"voice_id": "21m00Tcm4TlvDq8ikWAM",
"pronunciation_dictionary_locators": [
{ "pronunciation_dictionary_id": "<dictionary_id>", "version_id": "<version_id>" }
]
}
}
Speed and delivery
| Provider | Settings |
|---|---|
| ElevenLabs | Speed 0.7 to 1.2. Stability 0 to 1, default 0.85. Similarity 0 to 1, default 0.75. |
| Cartesia | Speed 0.6 to 1.5, default 1.0. Volume 0.5 to 2.0, default 1.0. Emotion neutral, calm, or content. |
| MiniMax | Speed 0.5 to 2.0, default 1.0. Volume up to 10, default 1.0. Pitch -12 to 12, default 0. |
Higher Stability keeps the voice consistent, but it can sound flat. Lower Stability adds expression. Click Test voice in the row to hear the result before you save.
Help the AI Agent hear terms
The speech-to-text row has settings that help the model hear names, products, and jargon.
| Provider and model | Setting | Limit |
|---|---|---|
Deepgram nova-3 and Flux | Keyterms (keyterm) | 30 terms, 128 characters each |
Deepgram nova-2 | Keywords (keywords) | 30 words, 128 characters each |
Deepgram nova-3, nova-2 | Numerals (numerals) writes "twenty one" as "21" | On or off |
| Soniox | Terms (context.terms) | 100 terms, 256 characters each |
| Soniox | Context (context.text) | 10,000 characters |
ElevenLabs scribe_v2_realtime has no vocabulary setting in Moveo. The next table shows an example
of the effect of a term.
| Caller says | Transcript without a term | Term to add | Transcript with the term |
|---|---|---|---|
| "Moveo" | movie oh | Moveo | Moveo |
| "Kifisias Avenue" | key fiss yes avenue | Kifisias | Kifisias Avenue |
Next steps
- Write the conversation rules in the voice guidelines.
- Check names and numbers on a real call with Test a voice AI Agent.
- See which providers support your language in Languages and providers.