Emotional Text to Speech: Getting Real Feeling From AI
Emotional text to speech lets AI voices sound warm, angry or sad. Compare four ways tools add emotion, OndaLabs tags and presets, and tips for emotive lines.
Emotional text to speech changes how an AI voice delivers a line, such as warm, angry or whispered, so the audio fits the meaning of the script. Tools add emotion in four ways: inference from the text, a style instruction, SSML style markup and inline audio tags. The method you choose decides how much direct control you get.
Four ways emotional text to speech adds feeling
Vendors use different methods, and most combine two or three of them. The table compares the approaches as of October 2026.
| Method | How you write it | Example from vendor docs |
|---|---|---|
| Infer from the text | Write with emotional context and punctuation | ElevenLabs gives a narrative cue such as "he exclaimed triumphantly" |
| Instruction or style prompt | A sentence describing the delivery | OpenAI instructions: "Speak in a cheerful and positive tone."; Google style "whispered urgently" |
| SSML or style markup | A named style, with optional intensity | Azure mstts:express-as with style "sad" and styledegree "2" |
| Inline audio tags | Words in brackets or angle brackets inside the script | ElevenLabs [whispers]; Azure [whispering]; OndaLabs <whispers> |
ElevenLabs says its models "interpret emotional context directly from the text input". The other rows depend on what you write, so you control the outcome more directly. For a recurring character, the same method applies across scenes; see how to create AI character voices. For two-speaker scenes, see multi-speaker text to speech. Sources: OpenAI's text to speech guide, Microsoft Learn on speech markup, ElevenLabs' best practices and Google's speech generation docs.
Emotion from context: how text structure steers delivery
Before you add any direction, check the wording. ElevenLabs' examples use a narrative cue, such as "he exclaimed triumphantly", and exclamation marks for emphasis. Its guidance also says that ellipses add pauses and weight, and that capital letters increase emphasis. For its v3 and v4 models, ElevenLabs recommends punctuation over SSML break tags.
Punctuation works best when it matches what you want the listener to feel. An ellipsis tells the voice to hesitate. A full stop after a short word gives a firm close. Use capitals sparingly, because a whole sentence in capitals usually sounds like shouting.
Style directions: set the mood of a whole line
A style direction sets the mood for a whole line. In OndaLabs, a direction can be any description up to 200 characters. The product tip is shorter: "Keep directions short: one or two words per line."
OndaLabs includes ten style presets: Friendly, Narration, Calm, Excited, Whisper, Newscaster, Promo, Sarcastic, Sad and Angry. The Sad preset is "sad and subdued, quiet and slow". The Angry preset is "angry and tense, clipped words". You can also write your own.
The job interview example in the product shows the contrast. The candidate's line carries the direction "nervous, rushing a little", and the interviewer's line is "warm and professional". The candidate's line reads: "Oh, um, great question. <short pause> I love building things people actually use."
Google's guidance supports the same split. Put sustained delivery, such as "whispered urgently", in the style field. Keep age, gender, names and permanent accent changes out of it, because they belong to the voice itself.
Inline tags for moments: laughs, sighs and whispers
Tags handle moments: a laugh, a breath or a whisper that happens inside a line. OndaLabs has 33 tags in seven groups. Wrap every tag in angle brackets, as the table shows.
| Group | Tags |
|---|---|
| Pauses | <short pause>, <long pause> |
| Laughter | <laugh>, <chuckle>, <giggle>, <snicker>, <cackle>, <snort> |
| Breath | <breath>, <heavy breath>, <exhales>, <sigh>, <pant>, <yawn>, <phew> |
| Emotion | <gasp>, <cry>, <sob>, <whimper>, <groan>, <moan> |
| Loud | <cheer>, <shout>, <scream>, <shriek> |
| Sounds | <cough>, <sneeze>, <throat-clearing>, <grunt>, <growl>, <hiss>, <tsk> |
| Voice | <whispers> |
Google's cloud documentation says a specific prompt works better than a bare tag, so describing the moment in words, such as "react with an amused laugh", is worth trying when a tag alone falls flat.
Write lines that sound emotional
Good emotional lines come from a few habits:
- Name the feeling in one or two words in the direction, not in the spoken text.
- Put moments in tags and the mood in the direction. A sigh is a tag, and "weary" is a direction.
- Use punctuation for timing. Ellipses for hesitation, question marks for lift, full stops for finality.
- Match tags to the voice. ElevenLabs notes that a playful tag may not suit a serious voice.
- Keep guidance out of the spoken words. Anything you write as plain text may be read aloud, so put emotional guidance in the direction field.
- Choose deliveries the voice can do well. ElevenLabs notes that whispers and shouts are easier to reproduce when the voice's training data includes them.
- Test one line at a time. Change one thing per generation, so you know which change helped.
Common problems and fixes
| Problem | Likely cause | Fix | |---|---|---| | Flat read | A neutral direction, or no tag at the emotional peak | Add a short direction, then one tag at the key moment | | Over-acting | Several tags in one line, or an extreme direction | Remove tags and keep the direction to one or two words | | Voice drifts over a long script | A long run of text with many changing directions | Split the script into scenes and keep each direction short | | Emotion does not match the words | The direction contradicts the line | Rewrite the line so the words and the direction agree |
Google's documentation warns that extra meta-instructions "increase drift", so keep directions short even in long projects.
How researchers frame controllable speech
The research field has a name for this work: controllable speech synthesis. The survey "Towards Controllable Speech Synthesis in the Era of Large Language Models: A Systematic Survey" by Xie, Rong, Zhang, Wang and Liu (arXiv 2412.06602) traces the field from natural-sounding speech to fine-grained control of emotion, timbre and style, including control through natural-language prompts. The version we read is v3, dated 2025-08-25, and its arXiv comments say it was accepted to the EMNLP 2025 main conference. The survey organizes the field by model architecture, control strategy and feature representation.
Try emotional text to speech in OndaLabs
OndaLabs gives you a style direction of up to 200 characters, ten presets and 33 tags, in the text to speech studio and in the Dialogue studio. Onda Flash is the most expressive of the two models, and the product describes it as one that "Follows style directions and expressive tags closely". Flash costs 1.5 credits per character and is available on paid plans. Tags work on the free plan with Onda Lite. You can compare plans on the pricing page or sign up.
If you are comparing other tools, note this: Hume is sunsetting its TTS and EVI APIs, and access ends on November 13, 2026 at 12:01 a.m. EST. Its Octave 2 model, launched in preview on 2025-10-01, was built to infer delivery from the script, but do not plan new work on it. Our Hume AI Octave review covers it in more detail.
Frequently asked questions
How do I make an AI voice sound sad, happy or angry?
Pick a style direction that names the feeling, keep it to a few words, and add tags for specific moments. OndaLabs has presets such as Sad ("sad and subdued, quiet and slow") and Angry ("angry and tense, clipped words"). Listen to the result, then change one thing at a time.
What are audio tags in text to speech?
Audio tags are cues inside the script, such as a laugh or a sigh, that change one moment of the delivery. OndaLabs uses 33 tags in angle brackets, such as <sigh> and <whispers>. Other vendors use their own syntax, such as ElevenLabs' square-bracket tags.
Can I control how strong the emotion is?
Not with a slider in OndaLabs. Azure's SSML lets you set a style intensity with styledegree. OndaLabs takes a free-text direction of up to 200 characters instead. To make a feeling stronger, write a clearer direction or add a matching tag, then listen.
Why does my AI voice sound flat?
Usually the line has no direction and no tag at its emotional peak, or the words themselves are neutral. Add a short style direction, put one tag where the feeling should peak, and check the punctuation. ElevenLabs notes that ellipses add pauses and emphasis.
Which text to speech tools support emotion?
The vendors in this post each offer some form of emotional control, but they use different methods, as the table shows. Features change, so check each vendor's current documentation. This post did not test the tools against one another, so it makes no ranking.