SSML Explained: How to Control Pauses, Emphasis, and Pronunciation in TTS
Plain text gets you 90% of the way to great speech. SSML gets you the last 10% — the pauses, emphasis, and pronunciation fixes that turn a good AI voice into a natural one. Here is a friendly introduction with copy-paste examples.
When you paste text into a text-to-speech engine, it makes its best guess about how to say it: where to pause, which words to stress, how to read a number or a date. Usually that guess is good. But sometimes you need more control — a dramatic pause, the correct pronunciation of a brand name, or a phone number read digit by digit. That is exactly what SSML is for.
What Is SSML?
SSML stands for Speech Synthesis Markup Language. It is a small, XML-based language — a set of tags you wrap around your text — that tells the TTS engine precisely how to speak. If you have ever written HTML, SSML will feel familiar: you mark up text with tags, and each tag changes how the enclosed words are rendered as audio instead of as visuals.
A minimal SSML document looks like this:
<speak>
Hello, and welcome to eidosSpeech.
</speak>
Everything you add lives inside that <speak> wrapper. Let's look at the tags you will actually use.
Adding Pauses With <break>
The single most useful SSML tag is <break>. It inserts a pause of a length you choose — perfect for pacing, suspense, or separating ideas:
<speak>
Let me think about that<break time="800ms"/> yes, absolutely.
</speak>
You can specify the pause in milliseconds (time="500ms") or seconds (time="1s"). Use short breaks between clauses and longer ones between sections. A well-placed pause is often the difference between speech that feels rushed and speech that feels considered.
Controlling Rate, Pitch, and Volume With <prosody>
The <prosody> tag adjusts the delivery of whatever it wraps. You can change three things:
- rate — how fast the words are spoken (
slow,fast, or a percentage like90%). - pitch — how high or low the voice sits (
high,low, or+2stfor semitones). - volume — how loud it is (
soft,loud, or a decibel value).
<speak>
<prosody rate="90%" pitch="+1st">
This part is a little slower and slightly higher.
</prosody>
</speak>
Prosody is powerful for tone: slow the rate slightly for serious announcements, or raise the pitch a touch for friendly, upbeat lines.
Stressing Words With <emphasis>
To make a word stand out, wrap it in <emphasis>. Levels are reduced, moderate, and strong:
<speak>
This is <emphasis level="strong">completely</emphasis> free.
</speak>
Use emphasis sparingly. Just like writing in all caps, stressing every other word makes nothing stand out.
Reading Numbers and Dates With <say-as>
By default the engine interprets ambiguous strings on its own — and sometimes gets it wrong. The <say-as> tag removes the guesswork by declaring what a value is:
<speak>
Call <say-as interpret-as="telephone">1800123456</say-as>.
The event is on <say-as interpret-as="date" format="dmy">28-06-2026</say-as>.
</speak>
Common interpret-as values include telephone, date, time, cardinal, ordinal, and characters (which spells out each letter). This is essential for anything with codes, IDs, or phone numbers.
Fixing Pronunciation
Brand names, acronyms, and foreign words are frequent trouble spots. There are two common fixes. The simplest is a "spell-it-how-it-sounds" substitution using <sub>:
<speak>
Welcome to <sub alias="eye-doss-speech">eidosSpeech</sub>.
</speak>
For precise control, the <phoneme> tag lets you specify the exact pronunciation using a phonetic alphabet such as IPA. That is more advanced, but invaluable when a name absolutely must be said correctly.
Putting It All Together
Real scripts combine these tags. Here is a short, natural-sounding welcome message:
<speak>
<prosody rate="95%">
Hi there<break time="300ms"/> and welcome.
Today we'll cover <emphasis level="moderate">three</emphasis> simple steps.
</prosody>
<break time="600ms"/>
Let's begin.
</speak>
A Few Practical Tips
- Not every voice supports every tag. Test your SSML with the specific voice you plan to use.
- Start small. Add a couple of breaks first, then layer in prosody and emphasis only where needed.
- Escape special characters. Because SSML is XML, encode
&as&and<as<inside your text. - Keep a plain-text fallback. If a system does not accept SSML, your content should still read acceptably as plain text.
Try It Yourself
The best way to learn SSML is to hear the difference. Try it now in our free SSML Playground — write a sentence, add a <break> and some <prosody>, and hear the result instantly. You can also experiment in the eidosSpeech app or through the API. New to text-to-speech entirely? Start with our beginner's guide, then come back here to fine-tune your voices.