🏛️ Issues and Advocacy Training
Courses › AI for Voice and Music

Lesson 3 of 9 · about 16 minutes

Multi-Voice Scripts in Dialogue Editor

You'll be able to

  • Recognize the speaker-colon format Dialogue Editor reads, including continuation lines and a narrator
  • Use audio tags such as [sighs] and [pause] with a stability setting that honors them
  • Predict how a long script will be split, what the join does, and how to clean it up
  • Keep a durable record of scripts, casts and settings with the log folder and export

Dialogue Editor takes a script with speaker names and returns one audio file with a different voice for each speaker. Its help page explains why that is better than stitching separate Text2Speech clips: it uses ElevenLabs' text-to-dialogue endpoint on the Eleven v3 model, so the whole conversation is produced in one pass, with natural timing between lines. Stitched clips sound like people taking turns at a microphone. One pass sounds like people talking to each other.

The script format

One speaker per line, name first, then a colon, then the words. Here is an invented scene in the format the help page describes:

The county commission meets Tuesday. Two residents got there early.
RUTH: Did you read the new parking plan?
OSCAR: [sighs] All thirty pages.
I even read the appendix.
RUTH: And?
OSCAR: [pause] They're putting meters on the library lot.
RUTH: [laughs] The library lot. Where nobody has ever paid for anything.

The parsing rules matter, because they decide who says what:

  • Before the first name: the opening line has no name, so it goes to NARRATOR.
  • Continuation: "I even read the appendix." has no name, so it continues Oscar's turn.
  • Case: Ruth, RUTH and ruth are the same speaker.
  • Blank lines: ignored. Use them freely to keep the script readable.

The counter under the script box shows turns, speakers and characters. Watch the speaker count. If it says four when you wrote three, you have a typo in a name, and "RUHT" is about to get its own voice.

Casting

Every speaker found in the script gets a row in the Cast panel. Click the row, then a voice in the voice browser. Search matches name, accent, age, description and category; filter chips narrow by gender, age, accent and category; the play button plays the voice's preview. Favorites, marked with a star, sort to the top and have their own filter. A speaker shown in red has no voice yet, and Generate will not run until every speaker has one.

Cast for contrast. Two middle-aged American men with similar pitch will blur together in a listener's ear, especially on a phone speaker. Vary at least two of age, pitch, accent and pace. The cast is saved in the browser and comes back next time with the script, which makes a recurring segment easy to keep consistent.

Shaping the delivery

Audio tags

Tags go inside the line: [laughs], [sighs], [whispers], [shouts], [pause] and [sarcastic] are the ones the help page names, and chips under the script box insert them at the cursor. ElevenLabs' prompting guide, which it says applies to Eleven v3 as well as v4, groups tags into voice-related ones such as emotions and delivery, sound effects, and experimental ones such as accents or singing, which it says may be less consistent across voices.

A few habits save credits. Match the tag to the voice, as the guide advises: a soft, breathy voice will not shout convincingly however many [shouts] you add. Do not stack five tags on one line. And give the model enough text to work with. A two-word line gives it almost no context, so test tags inside full sentences.

Stability, seed and quality

SettingChoicesWhat it doesUse
StabilityCreative (0), Natural (0.5), and a third setting at 1Creative is the most expressive and tag-responsive and varies most between runs; the setting at 1 is the flattest and most consistentNatural for most scenes; Creative for comedy or emotion; 1 for long informational reads
Speaker boostOn or offClarity and similarityOn
SeedBlank or a numberBlank gives a fresh take each time; a number makes reruns of the same script come out the sameBlank while exploring; fix it once you like a take and are only changing the cast
QualityMP3 44.1 kHz 128 kbps, 192 kbps, or 22 kHz 32 kbpsFile quality and size128 for podcasts and video, 192 for archive, 32 only for tiny previews

Worked example: file size by quality

A finished scene runs 3 minutes, which is 180 seconds. Bit rate divided by 8 gives bytes per second.

  • 128 kbps: 128,000 / 8 = 16,000 bytes per second. 16,000 x 180 = 2,880,000 bytes, about 2.9 MB.
  • 192 kbps: 24,000 x 180 = 4,320,000 bytes, about 4.3 MB.
  • 32 kbps: 4,000 x 180 = 720,000 bytes, about 0.7 MB, at a 22 kHz sample rate that dulls the top end.

None of these is large. Pick 192 when the file will be edited further, since every MP3 generation loses a little.

Long scripts: split and joined

One request carries up to about 4,500 characters. A longer script is split at turn boundaries, never mid-line, into several requests, and the pieces are joined when you download. The help page is candid about the join: it is a plain MP3 concatenation, it plays correctly everywhere, and the individual parts are offered too. For a clean single-stream file, it suggests running the result through AVPrep with a remux.

Worked example: a 9,600-character script

9,600 / 4,500 = 2.13, so at least three requests. Because splits happen only between turns, the parts will not be exactly 4,500, 4,500 and 600. A realistic split is something like 4,410, 4,380 and 810 characters.

Cost: ElevenLabs bills per character sent, and the help page says the count under the script box is the number charged. So the cost is 9,600 characters whether it goes in one request or three. Rerunning the whole thing costs another 9,600.

Listen at the two joins. Each part is a separate generation, so a voice can come back after a join a touch brighter or slower. If a seam bothers you, regenerate just that part (move its turns into a short script of their own) or end parts on natural scene breaks by putting a narrator line there.

A practical rule: if a script is longer than about two parts, break it into scenes yourself, generate each scene, and assemble in SoundStudio. You control the joins, and a fix to scene four does not cost you scenes one through three.

History and the log file

This is the part most people skip and later wish they had not. Every script you generate is kept, with its cast and settings, in the History panel, with no limit on entries. Click an entry and the script, cast, stability, speaker boost, seed and quality come back. "Save to history" keeps a script you have not generated yet, marked as saved. A search box finds scripts by any word, speaker name or voice name and lists the newest 300 matches.

Browser history can vanish when someone clears site data. The log folder is the durable copy. In Chrome or Edge, click Log folder and pick a folder on your computer. From then on every entry is also added to two files there:

  • Dialogue Editor log.txt, readable by a person: date, cast with voice IDs, settings, then the script.
  • Dialogue Editor log.jsonl, one entry per line, which Import log can read back.

The files are only added to. Nothing in the folder is overwritten or removed. Chrome asks once per page visit whether the editor may keep using the folder; click Reconnect, or just generate or save, and it asks. Anything made while disconnected is marked "not in log" and written next time. Export all downloads the whole history as one .jsonl in any browser, and Import log merges a .jsonl into another browser's history, skipping duplicates. Deleting an entry with the X removes it from the browser only. The log keeps it.

Why care? Because the log answers questions that come later. Which voice did we use for the clerk character in March? What exactly did the script say when we published? Was this line in the version the sponsor approved? Lesson 8 returns to records like this for disclosure and copyright.

Dramatize invented situations, label them as dramatizations, and never use Dialogue Editor to re-create a real conversation between real people, even from an accurate transcript.

Reporting angle

Staged conversations can pass as real ones. When you meet an audio piece with two or more voices:

  • Ask the producer whether the exchange is a dramatization and where that is stated, in the audio and in the description.
  • Ask whether any speaker is a real person, and whether that person agreed to have a voice used.
  • Ask for the script and the generation log. A script sent in one pass leaves a record of what each line was told to say.
  • Never present a re-created conversation between real people as if it happened, even from an accurate transcript.

Common mix-ups

  • Claim: Stitching separate Text2Speech clips gives the same result. What the evidence shows: Separate clips have no shared timing or reaction. One-pass dialogue generation exists because conversation depends on how each line answers the last.
  • Claim: More tags mean more emotion. What the evidence shows: ElevenLabs' guide says tags must fit the voice's character. Overloaded lines tend to come out strange, and the help page says tags work best at Creative or Natural, not at the flattest setting.
  • Claim: A long script costs more because it is split. What the evidence shows: Cost is per character sent. Splitting changes how many requests, not how many characters.

Check yourself

1. In Dialogue Editor, what happens to text typed before the first speaker name?

2. Which stability choice does the help page recommend for audio tags like [laughs] and [whispers]?

3. A script is 9,600 characters. What does Dialogue Editor do?

4. You set Seed to 4417 and generate the same script with the same cast and settings twice. What should you expect?

5. Where are the two log files written when you choose a Log folder?

6. A three-minute dialogue exported at 128 kbps is about how large?

Terms in this lesson

Turn
One speaker's stretch of lines before another speaker takes over.
Audio tag
A bracketed direction inside a line, such as [sighs] or [whispers], that shapes how an expressive model delivers it.
Seed
A number that fixes the random starting point of a generation so the same input gives the same output.
Concatenation
Joining audio files end to end. A plain MP3 concatenation plays fine but can carry small seams or header quirks.
JSONL
A text file with one JSON record per line, easy for programs to read back and append to.

Full glossary

Sources