Directing lines
The speech model treats a line's text as a verbatim transcript: anything you type there may be spoken. So direction is split by how long it lasts. Sustained delivery goes in the style note, and momentary events go inline as tags.
| Scope | Where | Examples |
|---|---|---|
| Whole line | Style note | angry, speaking rapidly, out of breath, whispers, sarcastic |
| One moment | Inline tag in the text | Wait... <gasp> did you hear that? |
| Permanent traits | The voice itself | Age, gender, accent, timbre: pick a voice that has them |
Style notes
Keep them short; two to six words beats a paragraph. Most lines need no style at all, so start empty and add one only where the default read is wrong. Reuse the exact same string across lines when you want a consistent baseline.
A character's default style applies to every line that has no style of its own. The editor offers these presets:
If the emotion shifts mid-line, split it into two lines with different styles. For combat barks, a style like shouting over gunfire changes projection and pace more reliably than capital letters.
Inline vocal tags
Put tags at the exact moment they happen, written in angle brackets. Use the English tags even when the line is in another language. Stick to human vocalizations: sound effects like explosions aren't supported.
| laughter | <laugh> <laughter> <chuckle> <chuckles> <giggle> <snicker> <cackle> |
| breath | <breath> <heavy breath> <exhales> <pant> <sigh> <sighs> <phew> <yawn> |
| pain | <groan> <grunt> <moan> <whimper> <argh> <cry> <sob> |
| aggression | <growl> <grr> <hiss> <shout> <scream> <shriek> <cheer> |
| reaction | <gasp> <tsk> <pff> <snort> <cough> <sneeze> <throat-clearing> |
| timing | <short pause> <long pause> |
| delivery | <whispers> <whispering> |
Open a line and use Insert vocal tag to add one at the cursor. Each tag costs a flat 10 credits, since the model renders real audio for it; see Credits & plans.
The linter
Every line is checked as you type. Lines with problems show ⚠ check tags in the script. The linter flags:
- Unknown tags. Anything in angle brackets that isn't in the table above. It may be read aloud or ignored.
- Suspected stage directions. A line that starts with
[…]or(…), a line that starts likesays angrily:, and any[…]of 2–40 characters. The model would read these out loud. Move them to the style note or swap them for a tag.
✗ [angry] Get out of my shop!
✓ Get out of my shop! style: angry
✗ (sighs) Fine. I'll do it.
✓ <sigh> Fine. I'll do it.Pacing, pauses and emphasis
- Commas, dashes (
--) and ellipses give natural hesitation. <short pause>and<long pause>put silence exactly where you want it.speaking slowlyorspeaking rapidlyin the style note sets the pace for the whole line.- Capitalize a word for stress:
This is a VERY bad idea. - Write disfluencies the way people talk, like
Oh, uh... yeah, I think so, for a less read-aloud delivery.
Two-speaker dialogue and backchannels
The playground's two-speaker mode (and POST /v1/dialogue) renders an exchange between two characters as one file. When both speakers use studio voices, it's rendered in a single pass with natural turn-taking. Acteme Specials and library voices are rendered turn by turn and joined.
Wrap a listener's short reaction in pipes inside the other speaker's line to get overlapping speech:
Varga: So the job's Thursday |mhm| and nobody's asked what's in the crate.
Tamsin: Because nobody wants to know |fair| and I'm not starting now.Backchannels can be up to 40 characters and aren't counted as spoken characters for credits.
Pronunciation
Invented names are where text-to-speech stumbles. Add them to the project lexicon with a respelling, such as Xal'tharion → Zal THAR ee on. Only the audio input changes; the script keeps the original spelling.
Keeping a character consistent
- Build the character once, as a voice. Don't re-describe them in every line's style.
- Don't add instructions like "keep the same voice". Extra instructions tend to make the voice drift.
- Split long monologues into several lines. It also makes pickups cheaper.
- Use takes. Render three for important lines and pick one; your choice sticks.