A human narrator reads between the lines. They add inflection, adjust pacing on instinct, and pause before a reveal. In Vois, you can make those performance decisions visible in the script with speaker tags, expression tags, punctuation, and pause nodes.
That control is useful when the recording needs to be repeatable. The editor keeps the structure with the text, so you can review what the listener will hear, revise one beat, and generate again without reconstructing the performance.
The sections below show how each formatting feature supports that workflow, from role assignment through the final pacing pass.
How Do Speaker Tags Work?
Every multi-character project starts with speaker tags. They tell Vois who's talking, and each speaker gets their own voice from the 100+ production voices across 21 categories.
To insert a speaker tag, type / anywhere in the editor. Select Speaker from the menu. Type a name (or pick an existing one from the suggestions). Press Enter. A colored pill appears in the editor, and anything you type after it becomes that character's dialogue.
[Narrator]: The letter arrived on a Tuesday.
[Elena]: I wasn't expecting anything.
[Narrator]: She would remember that detail for the rest of her life.
Three speakers. Three voices. Each tagged, each colored differently in the editor so you can see the structure of your script at a glance.
Multi-line continuation works naturally. Text on lines below a speaker tag (without a new tag) continues that speaker's dialogue:
[Narrator]: The sun set slowly over the mountains.
The colors painted the sky in shades of orange and purple.
It was the most beautiful evening anyone could remember.
All three lines are spoken by the Narrator in a single block.
For rapid exchanges, you can place multiple speakers on the same line:
[Host]: What's your take? [Guest]: I completely agree! [Host]: Perfect.
Three separate segments, three voice changes, one line. Natural back-and-forth.
Can You Add Emotion to AI Speech?
When using the expressive engine, you can insert paralinguistic tags that add non-verbal expression to your dialogue. Type [ right after a speaker tag to see what's available.
Vois supports nine expression tags:
| Tag | Effect | Best For |
|---|---|---|
[laugh] |
Natural, genuine laughter | Comedy, warmth, shared moments |
[sigh] |
Audible exhalation | Frustration, resignation, relief |
[gasp] |
Sharp intake of breath | Shock, fear, surprise |
[cough] |
Natural cough sound | Nervousness, interruption |
[chuckle] |
Soft, understated amusement | Dry humor, gentle warmth |
[groan] |
Frustrated or pained sound | Displeasure, exasperation |
[shush] |
Hushing sound | Quieting someone, urgency |
[sniff] |
Audible sniff | Crying, cold, disdain |
[clear throat] |
Brief throat clearing | Before speaking, nervousness |
Place them right after the speaker tag, before the dialogue text:
[Host]: [laugh] That's the funniest thing I've heard all week.
[Guest]: [sigh] I know, right? It gets worse.
[Elena]: [shush] Don't let him hear you.
The nine tags in this list work with the expressive engine. The fast and multilingual engines ignore them. Omni is Pro-only and has its own native tag set, so keep expressive and Omni tags distinct when preparing scripts.
How Do You Control Silence and Timing?
Pacing is what separates natural-sounding audio from a wall of monotone speech. Vois gives you two systems for controlling it: punctuation and pause nodes.
Punctuation as Natural Pacing
Every punctuation mark in your script shapes the audio rhythm. No special markup needed.
| Punctuation | Use in the script | What to listen for |
|---|---|---|
Comma , |
Keep a related clause connected | A smooth phrase rather than a string of fragments |
Semicolon ; |
Join closely related thoughts | A deliberate relationship between ideas |
Period . |
End one thought before the next | A clear shift in energy or idea |
Ellipsis ... |
Let a thought trail off | A hesitation that supports the meaning |
Punctuation shapes phrasing rather than giving a fixed silence duration. Short sentences can create urgency, and longer sentences with commas or semicolons can feel measured. Listen to the rendered scene before deciding whether a pause node is necessary.
[Narrator]: She couldn't cry.
Not anymore.
The tears had stopped somewhere around midnight.
Around the time hope had run out.
Four short lines. Staccato rhythm. Emotional weight in every sentence break.
Pause Nodes for Exact Timing
When punctuation isn't precise enough, pause nodes give you exact control. Type / and select Pause. Pick a duration from the presets (300ms, 500ms, 1s, 1.5s, 2s, or 3s). An amber pill appears in the editor showing the duration. Click any existing pause pill to fine-tune it with a slider.
[Narrator]: She opened the envelope.
[pause=2000]
[Narrator]: And there it was.
That two-second gap is a lifetime in audio. The listener sits in the silence, waiting.
You can also cut and paste pause pills like any inline element, or type [pause=500] directly.
| Need | Use |
|---|---|
| Natural sentence rhythm | Punctuation (periods, commas, ellipsis) |
| Exact silence duration | Pause node ([pause=NNN]) |
| Dramatic beat over 1 second | Pause node ([pause=1500]) |
| Scene transitions | Pause node ([pause=2000]) or blank line between blocks |
| Breathing room between segments | Pause node ([pause=400]) |
For more on pacing in fictional dialogue, see our guide on audiobook dialogue pacing techniques.
How Do You Organize Long Scripts?
Real projects have structure beyond just dialogue. Chapter headings. Scene markers. Notes to yourself about tone or delivery. The Vois editor handles all of these through slash commands, and none of them get read aloud.
Type / and pick from:
| Command | What It Does | Read Aloud? |
|---|---|---|
/heading |
Chapter or section heading | No |
/title |
Episode or content title | No |
/section |
Visual divider between parts | No |
/note |
Editorial comment or reminder | No |
Each type renders with a small monochrome badge in the editor (H, T, S, N) so you can tell them apart at a glance. Notes appear in italics, titles in bold. But when you generate audio, they're all silently skipped.
[Title]: Episode 12: The Reckoning
[Heading]: Chapter One
[Note]: Open with tension. Elena's voice should feel strained here.
[Elena]: I told you this would happen.
[Section]
[Heading]: Chapter Two
[Narrator]: Three weeks earlier...
That script is organized for editing but clean for generation. The title, headings, note, and section divider exist only in the editor. When you generate audio, they're silently skipped. You can also insert them via / slash commands in the editor, or paste/import them using the bracket syntax above.
For a complete production workflow, check the podcast production guide or the audiobook creation guide.
What Does It All Look Like Together?
Here's a full scene using every formatting feature: speaker tags, emotions, pause nodes, punctuation pacing, and organizational comments.
[Heading]: The Confrontation
[Note]: Build slowly. Elena is controlled at first, then cracks.
[Sam]: Where were you last night?
[pause=700]
[Elena]: [sigh] I told you. I was working late.
[pause=400]
[Sam]: That's not what Marcus said.
[pause=1200]
[Elena]: Marcus is... Marcus is lying.
[pause=800]
[Sam]: Is he?
[pause=2000]
[Elena]: [sniff] I can't do this anymore.
[Section]
[Narrator]: The room went quiet.
Neither of them moved.
Speaker tags assign voices. The [sigh] adds weariness, the [sniff] signals she's breaking down. Pause nodes control the silence between lines (the 1,200ms gap where Elena's resolve breaks, the 2,000ms before her confession). Ellipsis in "Marcus is... Marcus is lying" creates a stammer. Short final lines from the Narrator slow the scene to a crawl.
Quick Reference: All Script Formatting Features
| Feature | How to Insert | Effect |
|---|---|---|
| Speaker tag | Type / then Speaker |
[Name]: dialogue text (assigns a voice) |
| Emotion tag | Type [ after speaker |
[laugh], [sigh], [gasp], etc. (expressive engine only) |
| Pause node | Type / then Pause |
Exact silence (300-3000ms) |
| Heading | Type / then Heading |
Editorial label, not read aloud |
| Title | Type / then Title |
Editorial label, not read aloud |
| Section divider | Type / then Section |
Visual divider, not read aloud |
| Note | Type / then Note |
Editorial note, not read aloud |
| Ellipsis | Type ... |
Trailing thought or hesitation; review it in the rendered line |
| Period | Natural punctuation | End of a thought; the voice phrases it in context |
| Comma | Natural punctuation | Connects a related phrase without a fixed pause |
Your script is the performance. Every pause node, expression tag, and punctuation choice shapes what the listener hears. Build the structure in the Vois script editor, then get started to review the first complete scene in context.
The Vois Team