Natural Sounding AI Voice: 12 Script Tips That Work
Get a natural sounding AI voice with 12 script tips: write numbers out, control pauses, direct tone in plain words, and fix mispronunciations. Sources included.
To make an AI voice sound natural, write the script for the ear. Spell out numbers, use punctuation to set the pace, add pauses where the voice needs them, describe the delivery in plain words and fix mispronunciations before you scale up. The 12 tips below cover habits that vendor documentation supports, with the source for each one.
The 12 tips at a glance
| # | Tip | Main evidence | |---|---|---| | 1 | Write short, spoken sentences | Gemini guidance on natural spoken language | | 2 | Read the script aloud first | Editorial advice | | 3 | Give each idea its own line or turn | Gemini guidance on splitting turns | | 4 | Write numbers out in full | ElevenLabs normalization examples | | 5 | Spell out abbreviations and units | ElevenLabs normalization examples | | 6 | Use punctuation to set the pace | ElevenLabs and Azure punctuation guidance | | 7 | Add explicit pauses only where needed | Azure, Amazon Polly and ElevenLabs break tags | | 8 | Describe the delivery in plain words | Gemini style field, OpenAI instructions | | 9 | Use expressive tags sparingly | ElevenLabs and Azure tag guidance | | 10 | Keep direction short and consistent | Gemini guidance on voice drift | | 11 | Fix pronunciations with respelling or aliases | ElevenLabs, Azure and Google pronunciation options | | 12 | Test a short section, then scale | ElevenLabs request limits and continuity options |
Write the script for the ear (tips 1 to 3)
Short sentences are easier to pace. Read the script aloud before you generate audio. If you stumble, the voice will probably stumble too. Gemini's speech guidance asks for natural spoken language, including the small hesitations people use in conversation.
Keep one idea in each line, and split a script into separate turns when the delivery changes. Gemini's documentation recommends separate turns with different styles when the prosody changes in the middle of a dialogue.
Spell out numbers, dates and symbols (tips 4 and 5)
Normalization is the step that turns written text into spoken words. It is on by default in most tools, but results differ by model. ElevenLabs gives examples of how its models read common written forms:
| Written | Spoken as | |---|---| | 123 | one hundred twenty-three | | 2nd | second | | 3.5 | three point five | | 100% | one hundred percent | | 100km | one hundred kilometers | | Dr. | Doctor | | 2024-01-01 | January first, two-thousand twenty-four | | 14:30 | two thirty PM |
Slash dates such as 01/02/2023 depend on the locale, so state the format you want. Abbreviations are another trap. "St. Patrick" should not become "Street Patrick," so write out the word when it matters.
Control pauses and pace (tips 6 and 7)
Punctuation does most of the pacing work. ElevenLabs says ellipses "add pauses and weight," and capitalizing a word adds emphasis. Azure says it handles punctuation automatically, pausing after a period and using the right intonation when a sentence ends in a question mark.
When you need a specific pause, use the break tag your vendor supports:
| Vendor | How to add a pause | Limit |
|---|---|---|
| Azure | <break> with a strength or a time | 0 to 20,000 ms; strength steps run from 250 ms (x-weak) to 1,250 ms (x-strong) |
| Amazon Polly | <break> with a strength or a time | Time up to 10 seconds |
| ElevenLabs | <break time="x.xs" /> on SSML-capable models | Up to 3 seconds; not supported by Eleven v4 or v3 |
ElevenLabs also warns that too many break tags "can cause instability." Use pauses at real turning points, not after every clause. Speed controls differ too. ElevenLabs uses a speed setting from 0.7 to 1.2, with 1.0 as the default, and warns that extreme values may reduce quality. Google's Chirp 3: HD uses a speaking rate from 0.25 to 2.0, so do not reuse one tool's values in another.
Direct tone in plain words (tips 8 to 10)
Newer voices accept direction in plain language. Gemini takes the transcript as "strictly" verbatim text and puts sustained delivery in a short style field, such as "calm and relaxed." OpenAI's gpt-4o-mini-tts accepts instructions about tone, emotion, speed and whispering. Azure's HD voices accept bracketed styles, such as [excited], and ElevenLabs uses audio tags such as [whispers] and [sighs].
Keep the direction short. Gemini's guidance says long persona paragraphs are "the most common cause of voice drift," so reuse one short style string. Use expressive tags sparingly and match them to the voice's character. ElevenLabs notes that tags can be read aloud or heard as a sound effect, and that describing the voice, such as "[low, gravelly voice]," reduces that risk. Its experimental tags are "less consistent across voices," so test them on your chosen voice.
Fix pronunciation (tip 11)
Pronunciation fixes depend on the model. ElevenLabs phoneme tags work only with eleven_flash_v2. Eleven v4 reads IPA wrapped in forward slashes, while Multilingual v2 does not support phoneme tags, so respell the word or use an alias. For acronyms, an alias such as "UN" read as "United Nations" is often the simplest fix.
Azure has an enhancePronunciation setting, off by default, that applies extra work to proper nouns, acronyms and context-dependent words on its NeuralHD voices. For deterministic control, Azure still recommends SSML pronunciation elements. Google's Chirp 3: HD accepts custom pronunciations written in IPA or X-SAMPA.
Test short, then scale (tip 12)
Generate a short section first and listen to it on the device your audience will use. Then scale up. ElevenLabs lists per-request character limits, so split long text into segments. Its docs also describe previous_text and next_text for keeping prosody consistent across chunks. Models are nondeterministic, so use the seed option if you need consistent takes.
Common mistakes to avoid
- Tags read aloud: ElevenLabs notes that emotional guidance text may be spoken, so check the audio for stray words.
- Too many pauses: Too many break tags can make output unstable.
- Mixed emotions in one turn: Split the line when the feeling changes.
- Model-specific surprises: ElevenLabs reads "$1,000,000" correctly on Multilingual v2 but as "one thousand thousand dollars" on Flash v2.5.
Where OndaLabs fits
OndaLabs controls delivery by describing it in plain words and with supported expressive tags in the script. Expressive tags are available on the Free plan. Onda Lite is on all plans at 1 credit per character, and Onda Flash is the most expressive model on paid plans at 1.5 credits per character.
Test a short passage in the text to speech studio, adjust the wording, then generate the full script. If you write two-speaker scripts, the dialogue tool is built for that format. For the delivery side, see SSML vs expressive tags, and for the basics of neural voices, see how neural text to speech works.
Frequently asked questions
How do I add pauses to text to speech?
Start with punctuation, since periods, commas and ellipses already shape pacing. For a precise pause, use the break tag your vendor supports. Azure and Amazon Polly support <break>, and ElevenLabs supports it on some models only, up to 3 seconds. Use pauses sparingly.
How do I fix mispronounced words in AI voices?
Respell the word phonetically, or use an alias if the tool offers one. Some models accept IPA, and some accept phoneme tags only on specific models. Check the model's documentation first, then test the fix in a short passage.
Should I write numbers and abbreviations out in full?
Usually yes, because normalization can read them differently across models and contexts. ElevenLabs gives examples such as "123" becoming "one hundred twenty-three" and "Dr." becoming "Doctor." For dates, state the format you want, since slash dates depend on locale.
Do I need SSML to make an AI voice sound natural?
No. Plain punctuation, clear sentence structure and short direction often do most of the work. SSML gives exact control over pauses and pronunciation on the vendors that support it, so use it when you need precision. Support varies by voice and model, so test it.
How do I make text to speech sound emotional?
Describe the delivery in a short, plain sentence, then test it. Use expressive tags sparingly, and make sure they fit the voice. Split the line when the emotion changes, because one long emotional direction can drift over a long script.
How long should sentences be in an AI voice script?
None of the vendor sources set a number of words. Short sentences are easier to pace and check, so write one idea per sentence and read the script aloud. Adjust the length when you hear a rushed or breathless passage.