> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Timed pauses and expressive audio cues in voice prompts

> Write inline performance cues directly into your voice prompts: [pause:1.5s] for timed silence, [sigh] or [laughs] for delivery. See how Cartesia and ElevenLabs voices each render them, and audition the result before you go live.

# Timed pauses and expressive audio cues in voice prompts

Your prompt tells a voice agent what to say. Performance cues, written inline in
the same text, tell it how to say it. Two cue families work in agent prompts and
voice-broadcast scripts: timed pauses (`[pause:1.5s]`) that render as real
silence, and expressive tags (`[sigh]`, `[laughs]`) that color the delivery.
This guide covers the syntax, how each voice family renders each cue, and the
preview loop to hear the result before callers do.

## Why cues exist

**Digit and code spacing.** "Your code is 4 8 1 9 2 7" read in one breath is hard
to write down. Callers chunk digits in groups of three or four; a beat between
groups gives them time to keep up. Timed pauses let you author that spacing
instead of hoping the model inserts it.

**Empathetic beats in support scripts.** A short silence before difficult news
reads as care rather than delay, and a lighter delivery on good news reads as
warmth. Support, collections, and reminder scripts use cues to place those
beats exactly where the conversation needs them, the same way a human agent
would.

## Timed pauses: `[pause:Xs]` and `[pause:Xms]`

A timed pause is an inline marker with a duration in seconds or milliseconds:

```text theme={null}
Your code is 4 8 1 [pause:1s] 9 2 7.
I repeat: 4 8 1 [pause:1s] 9 2 7.
```

The caller hears one second of silence between the two digit groups, on every
call, every time. Decimals are allowed (`[pause:1.5s]`, `[pause:300ms]`,
`[pause:.5s]`), and casing and spacing inside the brackets are tolerated
(`[ PAUSE : 2 S ]` works).

Durations are clamped to keep calls sane:

| You write | The caller hears |
| - | - |
| `[pause:50ms]` | 0.1 s (shorter values round up) |
| `[pause:300ms]` | 0.3 s |
| `[pause:1.5s]` | 1.5 s |
| `[pause:20s]` | 5 s (longer values cap here) |

A marker without a valid number and unit (`[pause:2]`, `[pause:s]`) is not a
pause at all. It is sent to the voice as ordinary text, so always pair the
number with `s` or `ms`.

Timed pauses render as exact, platform-guaranteed silence on Cartesia voices:
the speech around each marker is synthesized separately and real silence is
spliced between the parts. On other voice families the marker is handed to the
model as part of the text (see the matrix below), so if your script demands
exact spacing, for example one second between OTP digit groups, use a Cartesia
voice. See [voice clones](https://docs.orbit.devotel.io/guides/voice-clones.md) for choosing and creating
voices.

## Expressive tags: `[sigh]`, `[laughs]`, `[whispers]`, and friends

Expressive tags are bracketed cues the tag-aware ElevenLabs v3 model
interprets as delivery: `[excited]`, `[whispers]`, `[laughs]`, `[sighs]`,
`[gasps]`, `[long pause]`, and similar vocal cues. Write them where the beat
belongs:

```text theme={null}
[excited] Great news, your order shipped early! [laughs] It arrives tomorrow.
I am sorry, [sigh] that room is no longer available.
```

Three things can happen to a bracketed cue, depending on the voice that reads
it:

1. **Tag-aware model (ElevenLabs v3 with the agent's expressive audio tags
   setting on).** The cue reaches the model unchanged and colors the
   delivery: a whisper, a laugh, a sigh, an excited opener.
2. **Latency-tier model (ElevenLabs Flash / turbo v2.x, and Cartesia).**
   Recognized cues are silently removed before synthesis. The caller hears
   "I am sorry, that room is no longer available." with the wording intact
   and no bracketed text read aloud, so a script authored for v3 degrades
   gracefully on a faster voice.
3. **Arbitrary brackets, on every voice.** Text that is not a recognized cue,
   such as `[FirstName]`, `[1]`, or `[account id]`, is never stripped and
   passes through exactly as written. Your own placeholder or literal
   bracket syntax is safe; only curated performance cues are treated
   specially.

Strip matching is forgiving on the cue itself (casing and inner whitespace
are tolerated, so `[WHISPERS]` and `[long  pause]` still match) but the
brackets must be closed and the cue must be one the voice recognizes.

## Provider matrix

| Voice | `[pause:1.5s]` timed pause | `[sigh]`-style expressive tag | Arbitrary `[FirstName]` |
| - | - | - | - |
| Cartesia | Real silence, clamped to 0.1–5 s | Recognized cues stripped, never read aloud | Passes through as written |
| ElevenLabs v3 (expressive audio tags on) | Passed to the model, which paces the pause itself | Interpreted as delivery | Passes through as written |
| ElevenLabs Flash / turbo v2.x | Read as literal text | Recognized cues stripped | Passes through as written |

Read the matrix as an authoring rule of thumb: Cartesia voices give you exact
timed pauses and safely swallow expressive tags; ElevenLabs v3 gives you the
full expressive range with model-paced pauses; the latency tier is the safe
fallback that never reads a recognized cue aloud but also never renders one.

## Audition the render before you go live

Cues are interpreted at synthesis time, so always listen to the rendered
audio with the same voice your callers will get:

* **AI voice agents:** place a **Test by voice** call from the agent's studio
  and listen on your own phone. The call runs your live prompt, voice, and
  settings end to end, exactly as a caller experiences them.
* **Voice broadcasts:** use **Generate preview** on the broadcast before you
  launch it. The preview renders the script with the campaign's voice so you
  can hear every pause and digit group before a single contact is dialed.

Pay attention to the cells your script depends on: the digit-group spacing,
the beat before the key sentence, and (on v3) the delivery the tags produce.

## Pitfalls

* **Unclosed or misspelled cues.** `[sigh` without a closing bracket, or a
  cue outside the recognized set, matches nothing and is spoken literally on
  every voice. If you hear brackets on a call, check the cue's spelling and
  closing bracket first.
* **Long pauses early in the greeting.** Silence before your first word
  delays the moment the caller hears anything, and a caller who hears
  nothing may hang up or say "hello?" over your agent. Keep the opening
  sentence pause-free and place beats after it.
* **Tags read verbatim on the wrong model.** A script full of expressive
  tags only renders them on a tag-aware voice. On the latency tier the
  recognized cues are stripped (usually what you want), but unclosed or
  unrecognized brackets still get read. Audition with the voice the agent
  or broadcast actually uses, not the one you tested with.
* **Exact timing on model-paced voices.** ElevenLabs v3 interprets pause
  cues in its own way and does not guarantee a duration. When the script
  demands a precise gap, use a Cartesia voice and the timed syntax.

## Related

* [Browse and deploy voice agent templates](https://docs.orbit.devotel.io/guides/voice-agent-templates.md):
  production-ready prompts you can extend with cues.
* [Voice clones](https://docs.orbit.devotel.io/guides/voice-clones.md): choose or create the voice that
  decides which column of the matrix applies to your agent.
* [Realtime voice gateway](https://docs.orbit.devotel.io/concepts/voice-gateway-realtime-edge.md): how agent
  audio is synthesized and streamed into the live call.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.