Pipeline steps
Voiceover: voices, providers, speed, and pauses
The voiceover step renders every voice block of your script to audio. Bind voices first — one narrator voice on the project, one voice per speaking character — then generate blocks individually or all at once, and regenerate any block until the read is right. The storyboard step unlocks once every voice block has audio.
Providers and models
Framesail offers two TTS providers, selectable per project:
- ·MiniMax — Speech 2.8 HD and Speech 2.8 Turbo, with a curated set of narrator voices, each with a pre-generated preview.
- ·ElevenLabs — v3, Flash v2.5, and Multilingual v2, with ElevenLabs' premade voice list and live previews.
Language
Each project has a language. Script analysis detects it from the script, and running analysis again resets it to what the script is written in; you can change it on the voiceover page. The voice engine is told the language, and the storyboard writes on-screen words in it. For languages other than English, ElevenLabs Multilingual v2 reads numbers best.
Voice binding
The narrator voice is set on the project; each speaking character gets its own voice on its asset. If a speaker in the script has no voice bound, generation is blocked with an error that names the character — there is no silent fallback voice.
Narrator speed
Speed is a project-level setting with a provider-specific range — 0.7–1.2 on ElevenLabs, 0.5–2.0 on MiniMax. ElevenLabs v3 does not support speed control.
Pauses and delivery
- ·Only explicit break tags reliably pause the read:
<break time="0.5s" />in the script is honored by TTS. Punctuation like ellipses and dashes is cosmetic — it does not guarantee a pause. - ·Audio tags such as
[laughs]or[sighs]go inline where the cue should land — in narration or inside a character's quoted line.
Generate and regenerate
Each block has its own generate/regenerate action, and Generate All renders whatever is missing. Batch runs skip blocks that are already generating, so retries never double-bill. Every clip is loudness-normalized to −16 LUFS at generation, so blocks sit at a consistent level regardless of provider.
What the voiceover feeds
Voiceover output carries precise timing data that downstream steps consume: the storyboard is planned against the finished narration so cuts and animations sync to what is actually said, and captions are built from the same subtitle timings.
If you edit the script after generating voiceover, use Re-extract from Script to rebuild the voice blocks without touching your assets — see script scan.