My AI voiceover ignores pauses, or speeds up and adds noises
AI voice (ElevenLabs) Last checked 2026-10-14
Newer ElevenLabs models do not support SSML break tags, and overusing break tags in older ones causes instability — the voice speeds up or adds artefacts. Control pacing with punctuation and line structure, and split long scripts into chunks.
What you saw
You add break tags for timing and they are read as nothing, or worse, as literal text.
The delivery accelerates partway through a long generation, or picks up breaths, clicks and mouth noises that were not in earlier takes.
Pacing is right in a short test and wrong in the full script.
The same line read twice has noticeably different energy, so two adjacent clips do not cut together.
What it actually means
Break-tag support is model-dependent, not universal. ElevenLabs' own documentation states that Eleven v4 and Eleven v3 do not support SSML break tags, and directs you to model-specific prompting techniques instead.
Where break tags are supported, the docs also warn that using too many in a single generation can cause instability: the model may speed up or introduce additional noises and audio artefacts.
Voices differ. The docs note voice-specific behaviour around pauses, particularly for voices trained with filler sounds like 'uh' or 'ah'. A technique that works on one voice can misbehave on another.
Long generations drift. The further the model gets from the start of a request, the more the delivery can wander — which is why a 15-second test sounds perfect and a four-minute narration does not.
The fix
Check what your model actually supports before using any markup. If you are on v3 or v4, drop break tags entirely — they are not supported and you are debugging a feature that does not exist.
Use punctuation for pacing instead. Dashes give short pauses, ellipses give a hesitant tone. These are less precise than tags, but they are what the model is actually reading.
"It… well, it might work."
"Wait — what's that noise?"
Chunk the script. Generate per paragraph or per beat rather than in one long call, and assemble in the edit. Shorter generations drift less and let you re-roll one bad line instead of the whole take.
Put the silence in the edit, not in the prompt. A measured gap on the timeline is exact, repeatable and free; a prompted pause is a request the model may decline.
If you must use break tags on a model that supports them, use few and use them consistently. The failure mode is cumulative — the instability shows up after several in one generation.
Test pronunciation of names and technical terms with your chosen voice before production. Eleven v4 accepts IPA wrapped in forward slashes, but the docs are explicit that results can still vary by voice and phrase.
The term "/ˌbaɪoʊˈkemɪstri/" refers to the study of chemical processes.
How to stop it happening again
Lock one voice, one model and one settings profile per project, and record all three in the project config. Changing any of them mid-series is audible.
Keep a reference take — one approved clip — and A/B every new session against it before you generate the day's work.
Write the script for the ear: short sentences, one idea per line, punctuation where you want air. Scripts that read well out loud need less markup.
Normalise loudness as a pipeline step so take-to-take level differences do not become an edit problem.
Re-test after every model update. Prompting behaviour, tag support and voice response all change between versions, and nothing announces it in your pipeline.
Related questions
Which models support break tags?
Not v3 or v4 — ElevenLabs' documentation states both lack SSML break tag support and points to model-specific prompting instead. Check the docs for the exact model id you are calling rather than assuming.
Why does it add breaths and clicks only sometimes?
Instability in a generation. Overusing break tags is one documented cause; long single generations are another. Shorter chunks and fewer tags usually clear it.
Can I force an exact pause length?
Not reliably through the model. If the timing has to be exact — matching a cut or an on-screen action — put the gap in your editor instead.