SSML (Speech Synthesis Markup Language) is an XML-based markup language that tells a text-to-speech engine how to say a piece of text: where to pause, how to pronounce a word, how to read a number or a date, and how fast, loud or high to speak. The engine reads the tags as instructions and does not speak them.
SSML is a World Wide Web Consortium (W3C) standard. The current version, SSML 1.1, became a W3C Recommendation on 7 September 2010 and was produced by the W3C's Voice Browser Working Group. The spec states its purpose as giving authors "a standard way to control aspects of speech such as pronunciation, volume, pitch, rate, etc. across different synthesis-capable platforms".
An SSML document is XML with one root element, <speak>. This short example is valid SSML 1.1:
<speak version="1.1" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
Your code is <say-as interpret-as="characters">B7X4</say-as>.
<break time="400ms"/>
It ships to <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">Manitoba</phoneme>
on <say-as interpret-as="date" format="yyyymmdd" detail="1">2026-11-19</say-as>.
Questions go to <sub alias="Doctor">Dr.</sub> Lee.
</speak>The figure shows what a listener hears for each tag when the engine supports it.

Descriptions follow the W3C spec.
| Tag | What it does | Example |
|---|---|---|
<speak> | Root element of every SSML document. In SSML 1.1 the version and xml:lang attributes are required, plus the SSML namespace. | <speak version="1.1" xml:lang="en-US"> |
<break> | Adds a pause or prosodic boundary, set by strength (none to x-strong) or by time. | <break time="400ms"/> |
<say-as> | Tells the engine what kind of text it is reading, such as a date, a time, a number or a currency amount. | <say-as interpret-as="characters">B7X4</say-as> |
<phoneme> | Gives a phonetic pronunciation for the enclosed text. The spec says engines should support the ipa alphabet. | <phoneme alphabet="ipa" ph="..."> |
<sub> | Speaks the alias value in place of the written text. | <sub alias="Doctor">Dr.</sub> |
<prosody> | Changes the pitch, speaking rate and volume of the enclosed text. | <prosody rate="slow"> |
<emphasis> | Asks for stress on a word or phrase, with a level of strong, moderate, none or reduced. | <emphasis level="strong"> |
Two details in the spec explain why results vary. First, it defines <say-as> but "does not enumerate the possible values for the attributes", so the list of interpret-as values is each vendor's own. Second, it calls prosody values "indicative" and lets the engine decide how to render emphasis.
Each engine implements its own subset, and newer voice models often support less markup than older ones. From each vendor's docs, read November 13, 2026:
<emphasis>, other tags "will be ignored", and streaming requests take no SSML.<emphasis> is not available on neural, long-form or generative voices, and an unsupported tag on standard, neural or long-form voices returns an error.mstts elements for speaking styles, and word-level emphasis works on three named English voices.<break> for pauses up to 3 seconds, and <phoneme> on Flash v2 only. Eleven v3 and v4 do not support break tags.The same document can be honored by one engine, silently ignored by another and rejected by a third. Test markup on the exact voice and model you will run.
A caller cannot see the text. In voice AI, a wrong reading costs a repeat or a wrong record:
SSML suits scripted prompts, where a developer tags each line once. That fits an IVR menu. It fits a live AI voice agent less well.
In an LLM-driven agent, a large language model writes each reply during the call and the text streams to the speech engine as it is generated (how the STT, LLM and TTS pipeline works). Nobody tags sentences by hand, and streaming adds a catch: Cartesia's docs warn that a speed or volume tag split across streamed tokens gets read aloud. Teams use four methods instead:
Retell AI's documentation does not describe raw SSML input. It documents these controls:
<spell> tags read a code or account number one character at a time. Retell converts the tag "to the format that works best for your agent's voice".See also how AI voice agents work on a call.
It controls how a text-to-speech engine reads text aloud: pauses, pronunciation, the reading of numbers and dates, and pitch, rate and volume.
No. Each engine supports its own subset of the W3C spec and adds its own tags, so markup often needs changes between engines.
Partly. Its docs describe break tags for pauses up to 3 seconds and phoneme tags on the Flash v2 model. Eleven v3 and v4 do not support break tags (as of November 2026).
SSML tags sit inside one piece of text and apply only there. A pronunciation dictionary is a separate word list that the engine or platform applies to every matching word.
Some do, where the speech engine accepts it. Many rely on prompting, text normalization and pronunciation dictionaries, because replies are generated live and some newer voice models accept little SSML.
Retell AI is an AI voice agent platform for contact centers. You can control pauses, spelling and pronunciation for each agent and hear the result in a web call test. Talk to the Retell team.
How Retell handles audits, data retention and access control.
Table of contents