Voice Clone Has Unnatural Breathing and Pauses

Your AI voice clone says the words but breathes in the wrong place, pauses mid-clause, or never breathes at all. Fastest fix: re-punctuate the script and match pause control to your model (audio tags for Eleven v3, SSML for v2).

Your ElevenLabs (or PlayHT, or Hume) clone reads your script, the words are correct, the voice is yours, but it sounds wrong. The clone takes a breath mid-clause where no human would. Or it powers through three sentences without breathing and you can hear the model running out of air. Or it pauses awkwardly between “the” and “computer”. TTS voice clones are good at timbre and emotion, but their breath modeling is fragile and highly sensitive to your input text.

Fastest fix: re-punctuate the script (add commas and break long sentences) and use the pause-control method your model actually supports. This matters more than ever in mid-2026, because ElevenLabs changed the rules: Eleven v3 became the default model on March 24, 2026, and v3 does not support SSML <break> tags. If you copied break tags from an old tutorial, v3 ignores them, and your only pause controls are punctuation and bracketed audio tags like [pause]. Most “unnatural breathing” complaints are fixed by editing the script, not by switching tools.

First, know which model you are on

The right fix depends entirely on the engine and model version, because pause controls differ. Check your ElevenLabs model picker (Studio, or the model_id in your API call).

ModelDefault? (June 2026)SSML <break> tagsPause control to use
Eleven v3Yes (default since Mar 24, 2026)Not supportedAudio tags [pause], ellipses ..., line breaks, dashes
Eleven Multilingual v2 (eleven_multilingual_v2)No (still selectable)Supported (<break time="..."/>)SSML breaks, commas, dashes
Eleven Turbo / Flash v2.5NoSupportedSSML breaks, commas

If you are on v3 and trying to use <break> tags, that alone explains “no pauses where I asked for them”. Jump to Step 2.

Common causes

Ordered by what most often fixes the problem.

1. Script has no commas or short sentences

The model uses punctuation as breath cues. A script written as one long paragraph with no commas tells the model “speak this in one breath” — which is impossible — so it inserts breaths at semantically wrong points.

How to spot it: Read your script aloud. If you naturally breathe at points that have no punctuation, the model lacks a cue at those points.

2. Reference audio had no breaths (or all breaths)

Voice clone models learn breath patterns from your reference. If your reference is 30 seconds of clean, edited speech with breaths removed (typical for marketing samples), the clone learns “no breath” as the natural state — and it pushes that to comical lengths in long form.

How to spot it: Listen to your reference audio. Count the breaths. If there are zero in 30+ seconds, that is the issue.

3. Pause tags not used, or wrong type for your model

This is the most common cause in 2026 because the rules changed. On SSML-aware engines (Eleven Multilingual v2, Turbo/Flash v2.5, PlayHT, Azure) you control pacing with tags like <break time="500ms"/> or <break strength="medium"/>. Send plain text to those engines and you lose pacing control. But Eleven v3 dropped SSML break support entirely — paste a <break> tag into v3 and it is either ignored or, worse, leaks artifacts. v3 uses bracketed audio tags instead: [pause], [short pause], [long pause], and [breathes], plus ellipses ... for weight.

How to spot it: Check which model you selected (see the table above). Send one test line with a single pause tag for that model, then listen:

  • Pause appears -> correct tag for the engine.
  • Model literally says “break time five hundred milliseconds” -> the engine does not parse SSML; you are on v3 or a non-SSML engine. Switch to [pause] / ellipses.
  • Nothing changes at all -> you used a <break> tag on v3 (silently ignored). Switch to [pause].

Note: ElevenLabs warns that too many break or pause tags in one generation destabilizes the model (it can speed up or add audio artifacts). Use them sparingly and let punctuation do most of the work.

4. Sentence too long for the model’s context

Many TTS models process speech in chunks of about 30-60 seconds. A 90-second-long single sentence forces breath placement to be guessed. The model places breaths at the chunk boundaries, regardless of meaning.

How to spot it: Find the exact word where the weird breath happens. If it lands at about 30 seconds into a sentence, you hit a chunk boundary.

5. Stability setting is too high (or wrong preset on v3)

“Stability” controls how much the voice can vary in prosody. Maxed-out stability produces flat, monotone, anti-breathy speech; the voice never breathes because variation is suppressed. The control looks different depending on your model:

  • Eleven v3 (UI): stability is now a three-way preset, not a slider. Creative is the most expressive (adds sighs, breaths, emotion, but can hallucinate), Natural is the balanced default, and Robust is highly stable but barely responds to audio tags and behaves like v2 at max stability. If your v3 voice never breathes, you are probably on Robust; switch to Natural or Creative.
  • v2 models / the API: stability is still a 0.0-1.0 number. Above 0.7 flattens speech; 0.4-0.5 is a good narration range.

How to spot it: On v3, switch the preset to Natural and re-generate. On v2/API, lower stability to 0.4-0.5. If breathing returns to natural, stability was the cause.

6. Style exaggeration is too high (v2 / API)

On v2 models and the API, the style parameter (0.0-1.0) pushes the voice toward more dramatic, emotional delivery. At 0.8+ it can introduce gasps, sighs, and theatrical breaths that sound unnatural in narration. On v3 there is no separate style slider; emotional intensity is driven by the stability preset (Creative is the loud one) plus audio tags, so the equivalent fix is “stop using Creative and drop the dramatic tags”.

How to spot it (v2/API): style at 0 produces a flat read; 0.5 produces natural emotion; above 0.7 you get melodramatic breathing.

7. Script uses unusual orthography (ALL CAPS, ALL.PERIODS)

Writing “WE WILL FIGHT THEM” in caps makes the model emphasize each word — and emphasized words get inserted micro-breaths between them. “We. will. fight. them.” with periods has the same effect.

How to spot it: Convert to sentence case with one ending period. Re-generate. If breathing normalizes, formatting was the cause.

Before you start

  • Save your current script and reference audio. You may need to compare.
  • Identify which TTS engine and which model version you are on. SSML support varies.
  • Decide whether the problem is “too many breaths in wrong places” or “no breaths at all”. The fixes are different.

Information to collect

  • Full script text (the exact bytes sent to the API).
  • Reference audio file used for cloning, and its duration.
  • Engine and model: ElevenLabs v3, eleven_multilingual_v2, Turbo/Flash v2.5, PlayHT, etc. (the model_id if you call the API).
  • Stability preset (v3: Creative/Natural/Robust) or numeric Stability / Similarity / Style values (v2/API).
  • Whether you used SSML <break> tags or v3 [pause] audio tags.
  • Whether the clone is an Instant Voice Clone or a Professional Voice Clone (the breath behavior differs).
  • The timestamp(s) in the output where the unnatural breath occurs.

Step-by-step fix

Step 1: Re-punctuate the script for natural breath cues

Add commas at every natural pause:

BEFORE: After we finished the report we sent it to the client
        who asked us to come back the next day to present the
        findings in person.

AFTER:  After we finished the report, we sent it to the client.
        She asked us to come back the next day, to present the
        findings in person.

Shorter sentences with commas give the model 3-4 breath slots in a 5-second span. The model now picks one of them rather than guessing.

Step 2: Add explicit pauses where you want a beat (method depends on model)

On SSML-supported engines (Eleven Multilingual v2, Turbo/Flash v2.5, PlayHT, Azure):

<speak>
  After we finished the report, <break time="400ms"/>
  we sent it to the client. <break time="600ms"/>
  She asked us to come back the next day.
</speak>

400ms is a short breath, 600ms is a sentence break, 1000ms is a beat for emphasis. ElevenLabs caps a single break at about 3 seconds, and warns that stacking many break tags in one generation can make the model speed up or add artifacts, so use them sparingly.

On Eleven v3 (the default since March 2026), <break> tags do nothing. Use bracketed audio tags and ellipses instead:

After we finished the report, [pause] we sent it to the client. [breathes]
She asked us to come back the next day... to present the findings in person.

Useful v3 pacing tags: [pause], [short pause], [long pause], [breathes], and ... (ellipses) for a natural held beat. Keep these sparse for the same instability reason. If you literally need a fixed-length silence in v3, generate without the pause and insert the gap in your DAW or with ffmpeg.

Step 3: Re-record reference audio with natural breathing

If your clone learned “no breath” from a clean, breath-stripped reference, re-record with natural pauses left in. Read a paragraph of normal prose conversationally. Do not over-edit. How much audio you need depends on the clone type (as of June 2026):

  • Instant Voice Clone: ElevenLabs recommends roughly 1-2 minutes of clean audio. A 60-90 second conversational sample is the practical sweet spot.
  • Professional Voice Clone (PVC): the training set is much larger; ElevenLabs recommends at least 30 minutes, with around 3 hours being optimal. For breath behavior specifically, make sure that 30+ minutes includes plenty of natural pauses and audible breaths, not just dense edited reads.
- Instant clone: 1-2 minutes; Professional clone: 30 min minimum (~3 hr optimal)
- Multiple sentences, conversational delivery
- Natural breaths between sentences left in (do not remove)
- One speaker only, no background music or noise
- Same mic / room as your target use case

Re-train the clone with this reference. Breath behavior improves noticeably, and v3 in particular reproduces natural breaths better when the source retains them.

Step 4: Set stability to allow prosody variation

v2 models / API (stability is a 0.0-1.0 number):

{
  "stability": 0.5,
  "similarity_boost": 0.75,
  "style": 0.3
}

These are good defaults for natural narration. stability above 0.7 flattens speech; below 0.3 over-varies it.

Eleven v3 (UI): there is no numeric stability slider; choose a preset. Use Natural for narration (balanced, closest to the source voice). Use Creative only when you want maximum expressiveness and are willing to risk the occasional hallucinated breath or sigh. Avoid Robust if your problem is “never breathes” — it is the flattest preset and the least responsive to audio tags.

Step 5: Break long passages into chunks at sentence boundaries

If your script is 5 minutes, do not send it as one API call. Split at sentence boundaries:

chunks = re.split(r'(?<=[.!?])\s+', script)
for chunk in chunks:
    audio = tts.generate(text=chunk, voice=voice_id, ...)
    audio.export(f"chunk_{i}.mp3")

Concatenate the resulting audio files in your DAW or with ffmpeg. The model now has fresh context for each chunk and breath placement improves.

Step 6: Use the engine’s “speed” setting instead of fighting breaths

If breathing feels rushed, the underlying issue is often speed. In ElevenLabs the speed setting ranges from 0.7 (slowest) to 1.2 (fastest), with 1.0 as default. Nudge it down:

{"speed": 0.92}

At a slightly slower rate, the model has more time to place breaths naturally. Do not go below about 0.85 for narration or the read starts to drag.

Step 7: Post-process to clean residual artifacts

If one stubborn breath sounds wrong:

# Identify the breath timestamp
ffmpeg -i out.mp3 -af "volumedetect" -f null - 2>&1 | grep mean
# Cut a 200ms region
ffmpeg -i out.mp3 -ss 12.4 -t 0.2 -af "volume=0.2" out_fixed.mp3

Or in a DAW: locate the breath, attenuate by 6 dB, or replace with a recorded breath sample of your own voice.

How to confirm it is fixed

  • Listen to a 60-second sample of the new output. Breath placement should align with sentence and clause boundaries.
  • Compare against a 60-second reference of your own natural speech. Breath count should be within +/- 2.
  • Loop the segment that originally had the unnatural pause. The pause should now be either gone or musical.
  • If you added pause tags, confirm they are being applied: on v3, a [pause] should produce a beat, not silence the rest of the line or get read aloud; on v2, a <break time="400ms"/> should produce a clear gap. If a tag is read aloud, you used the wrong tag type for your model.

Long-term prevention

  • Write scripts in conversational sentence structure with explicit punctuation; this is the single biggest factor.
  • Match your pacing method to the model: SSML <break> tags on v2/Turbo, [pause] audio tags and ellipses on v3. Do not rely on the model to guess pacing.
  • Re-test your clone after every ElevenLabs model change. The v3 default switch on March 24, 2026 silently broke every script that relied on SSML breaks; the next version bump can do the same.
  • Pick a stability setting per use case: v2/API around 0.5 for narration, lower (0.3) for conversational; v3 Natural for narration, Creative only when you want strong emotion.
  • Chunk long scripts at sentence boundaries; never send a 10-minute monologue in one call.
  • Save a “known-good” reference audio + script + parameter preset and benchmark new model versions against it.

Common pitfalls

  • Writing scripts in marketing-copy register with no commas. (“We are the trusted leader in AI productivity helping teams ship faster delivering value every day.”)
  • Re-using a 5-second voice sample for an Instant Clone. Way too short for prosody learning; aim for 1-2 minutes.
  • Cranking style to 1.0 (or using v3 Creative) because it sounds more emotional in a 10-second test. Over a 5-minute narration it becomes exhausting and breathy.
  • Sending an entire chapter of an audiobook as one API call.
  • Pasting <break> SSML tags into Eleven v3, where they are silently ignored, then wondering why your pauses vanished. Use [pause] instead.
  • Stacking dozens of break or pause tags in one generation, which destabilizes the model (speed-ups, artifacts).
  • Trying to remove all natural breaths in post. Breath-less speech sounds robotic.

FAQ

Q: My <break> tags stopped working after ElevenLabs updated. What happened?

Eleven v3 became the default model on March 24, 2026, and v3 does not support SSML <break> tags. Either switch your generation back to eleven_multilingual_v2 (which still parses SSML), or rewrite your pauses as v3 audio tags: [pause], [short pause], [long pause], and ellipses ....

Q: My clone never breathes. Is breath suppression a feature?

It is a side effect of clean, breath-stripped training data, sometimes combined with the wrong setting. Re-record the reference with natural breaths included, and on v3 make sure you are not on the Robust stability preset (it is the flattest). Add a [breathes] tag where you want an audible breath.

Q: Why does the same script sound natural in one model and unnatural in another?

Each model’s breath inference is trained differently. Switching from Eleven v3 to v2, or from ElevenLabs to PlayHT, can fix breathing for one script and break another. Test critical scripts on the exact model you will ship on.

Q: Can I record my own breath sounds and splice them in?

Yes — record a few of your own breaths at the same mic/room as the script and use them as inserts in a DAW. For long-form production work this is a common pro workflow.

Q: Does multilingual voice clone breathing differ across languages?

Yes. Breath placement is language-specific and the model may not transfer it perfectly. A clone trained on English and asked to speak Mandarin will often breathe at English clause boundaries that do not match Mandarin prosody. Re-train with a sample in the target language.

External references:

Tags: #Troubleshooting #voice-clone #tts #elevenlabs #prosody