Emotion & tone
Shape Soniox Text-to-Speech delivery with audio tags, text formatting, and punctuation to make speech expressive and emotional.
Overview
Soniox Text-to-Speech lets you control how the words are delivered, not just which words are spoken. You have two toolkits, and they combine freely:
- Audio tags — bracketed cues like
[excited],[whispering], or[laughs]that control emotion, tone, human sounds, and delivery. - Text formatting & punctuation — capitalization, emphasis, elongation, and punctuation marks written into the words themselves (
UPPERCASE,*stress*,sooo,...,—,?!).
Both are written directly into the text you send via API:
These controls shape the expressive layer: emotion, sounds, emphasis, and
local pacing. To change the overall speaking rate use the speed parameter
instead.
Audio tags
Place a bracketed tag before the text you want to affect to set how it is delivered. The tag describes the feeling or manner; the words after it inherit that delivery.
The tags listed below are not exhaustive. Other tags may also work — test them before relying on them in production.
Always write audio tags in English, regardless of the text language.
Localized tags (for example, [emocionado] instead of [excited]) are not
supported.
Emotion & tone
| Category | Tags |
|---|---|
| Emotion | [happy] [sad] [angry] [excited] [nervous] [fearful] [surprised] [annoyed] [relieved] [disappointed] [curious] [delighted] [calm] |
| Tone & manner | [warm] [stern] [serious] [playful] [sarcastic] [flirty] [deadpan] [sincerely] [reassuringly] [dramatically] [mockingly] |
Human sounds
Non-lexical actions you can't spell as a word go in brackets:
| Category | Tags |
|---|---|
| Amusement | [laughs] [chuckles] [giggles] |
| Sadness | [sobs] [sniffles] [whimpers] |
| Relief / exasperation | [sighs] [exhales] |
| Surprise | [gasps] |
| Effort / pain | [grunts] [groans] |
| Physiological | [clears throat] [coughs] [yawns] |
Spoken interjections like Hmm, Um, or Mhm are different: write them as ordinary words, not tags — see Spoken interjections.
Sound effects related to the environment ([dog barks], [phone rings]) are
not supported.
Volume, pace & pitch
Tags that control the mechanics of delivery: how loud, how fast, and at what pitch.
| Category | Tags |
|---|---|
| Volume | [whispering] [softly] [loudly] [shouting] [getting louder] [getting quieter] [trailing off] [muttering] |
| Pace & rhythm | [slowly] [quickly] [rushed] [drawn out] [hesitantly] |
| Pitch | [high-pitched] [low voice] [monotone] |
| Voice quality | [breathy] [raspy] [trembling voice] [shaky] |
Pauses
Use tags to insert deliberate silence:
[pause]— the default pause; use it for most cases.[long pause]— a longer, more dramatic gap; use occasionally.
For shorter beats inside a sentence, use punctuation (..., ,) instead.
Tag limitations
Tags work best when they stay close to the short, single-purpose forms listed above.
- Keep each tag simple.
[laughs]and[shouting]are reliable; compound directions like[laughs and screams really loud]or[says the next line sarcastically]are not. Rewrite the intent into the words themselves. - Stack sparingly. Two tags before a clause (
[warm] [softly]) normally combine well. Five stacked tags pull in different directions and will not produce a good result. - Unrecognized tags may be spoken. If the model doesn't interpret a tag as direction, it can read the bracketed words aloud. Test any tag outside the tables above before shipping it.
- The voice has to support the direction. A soft, narrative voice asked for
[shouting]will only go so far. Pick a voice whose range matches the scene instead of forcing it with tags.
Text formatting & punctuation
You can shape delivery without any tags, just by how you write the words. These conventions are language-agnostic and stack with audio tags — for example, [sad] *please* don't go... combines an emotion tag, an emphasized word, and a trailing pause.
Formatting
| Convention | Effect |
|---|---|
UPPERCASE | Loud / shouting / strong emphasis |
*stress* | Stress this word (pitch + emphasis) |
sooo, noooo, waaait | Vowel elongation - drawl, sarcasm, whining |
I-I-I don't... | Stutter / stammer |
lowercase everything | Flat / muted / deadpan |
Punctuation
| Convention | Effect |
|---|---|
... | Pause / trailing off / hesitation |
— / -- | Abrupt cut-off / self-interruption |
, | Short pause / breath |
! / !!! | Rising excitement / intensity |
? / ??? | Question / disbelief |
?! | Incredulous / startled |
Keep these conventions close to how people actually write. A few repeated
characters read as intent (waaait, !!!, N-n-no); dozens of them
(whaaaaaaaaaaaaaaaaait, !!!!!!!!!!) will degrade delivery. The same goes for stacking
everything at once — SOOOO *AMAZING*!!!??? is more likely to sound off than
emphatic.
Spoken interjections
Interjections the voice should actually say are written as ordinary words. Do not put these in tags.
| Sound | Conveys |
|---|---|
Hmm, Hm | Thinking |
Um, Uh | Hesitation / fillers |
Mhm, Uh-huh | Agreement |
Ugh, Eww | Disgust |
Oof, Ow, Ouch | Pain |
Mmm | Pleasure / satisfaction |
Phew | Relief |
Putting it together
The real power comes from layering both toolkits together. Below are three examples with fully annotated input. Pick a voice whose character matches the scene and try in our playground.
Audio tags don't override the text. They work together with it. The model
reads the tag in the context of the words that follow, so [excited] on a
flat sentence sounds forced, while [excited] SURPRISE!!! sounds natural.
Write the words with the emotion already in them, then use a few well-placed
tags to lead the clause and let punctuation and formatting carry the rest.