If you have ever listened to a single text-to-speech voice read a novel, you know the problem: every character, the narrator, and the stage directions all come out in the same flat tone. Dialogue stops sounding like dialogue. For non-fiction that is fine, but for fiction it falls apart fast.
I wanted to see how far automated tooling has come at solving this, specifically the "full cast" problem: giving each character their own voice without hand-editing every line. Here is the pipeline that actually worked, and the technical details that matter if you want to build or just use something like this.
What "a full cast" means in practice
A full-cast audiobook assigns a distinct voice to each speaking character, plus a separate narrator voice for the prose. The hard part is not the speech synthesis itself; modern models are already good at that. The hard part is the parsing:
- Splitting the manuscript into chapters.
- Figuring out who is speaking in each line of dialogue.
- Mapping each detected character to a consistent voice.
Get those three right and the rest is rendering.
The pipeline
The workflow I used with ai audiobook narration looks like this, and it is a reasonable reference even if you roll your own:
1. Upload the source. It takes EPUB, PDF, DOCX, TXT, or Markdown, or you can paste a single chapter to test. One caveat worth repeating: scanned-image PDFs do not work, because there is no text layer to parse. Export a real text format first.
2. Chapter and speaker detection. The tool walks the text, detects chapter boundaries, and attributes each line of dialogue to a speaker based on dialogue tags and surrounding context. This is the step that saves hours. You review the detected cast rather than annotating every quote by hand.
3. Voice assignment. Each character and the narrator get a distinct voice. There are standard and premium voices, and the assignment stays consistent, which matters a lot the moment you have a series: book two should sound like book one.
4. Direction. You can steer a line with bracket notes like [whisper] and drop sound tags like [laugh] inline. This is the closest thing to a director's note, and it is where a plain TTS pass can't compete.
5. Export. Output is M4B with chapter markers, or MP3 if you need the flat file.
The detail that saves you: regenerate one line
The feature I did not expect to care about but ended up using constantly: you can regenerate a single line without re-rendering the whole chapter. If one delivery lands wrong, you fix that line and leave everything else untouched. For an iterative medium like audio, that is the difference between "usable" and "I'll never touch it again."
A quick mental model for the code-minded
If you were building this, the interesting architecture is less about the synthesis model and more about the attribution layer:
manuscript -> chapter segmentation -> dialogue extraction + speaker attribution -> character -> voice map (stable across the project) -> per-line render (direction tags applied) -> stitch + chapterize -> M4B / MP3 The speaker-attribution step is where most of the quality lives. English prose works best here, because dialogue-tag conventions are the most predictable.
Practical notes before you start
- Rights matter. Only run text you actually have the rights to: your own writing, or public-domain works. Don't feed in something you merely bought a copy of.
- Cost. Signing up is free and there is no card required to create a project, but rendering audio is a paid step (plans start around $9.90/month, or a one-time top-up). Budget for the audio, not the account.
- Distribution. Worth knowing up front: the major retail audiobook programs do not currently accept AI-narrated audiobooks. This tooling is a great fit for indie and self-published authors, web-novel and LitRPG writers, fiction podcasters and audio-drama makers, YouTube storytellers, and teachers building classroom read-alouds, rather than for a retail ACX pipeline.
Who this is actually for
If you write fiction and have been putting off audio because narration is expensive and single-voice TTS sounds lifeless, a full-cast pipeline is the first version of this that feels worth shipping. The speaker detection and per-character voices do the heavy lifting; the per-line regeneration keeps the editing loop sane.
I'm curious whether anyone here has tried building the speaker-attribution step themselves, and what heuristics worked beyond dialogue tags. That is still the fun unsolved part.
