Why naive text-to-speech drifts
If you feed a novel into a text-to-speech engine paragraph by paragraph, nothing remembers who is speaking. Dialogue gets read in whatever default voice is active, attribution is lost between chapters, and a character who was assigned one voice early can quietly shift later. Listeners notice immediately — an inconsistent character voice is the fastest way to break immersion.
The root problem is that the voice is attached to the text, not to a character. Each chunk is treated in isolation, so there is no stable identity to anchor the read.
Bind the voice to a character identity
The fix is to make character identity the unit that carries the voice. When every line of dialogue is attributed to a specific, canon-grounded character, the voice assignment follows the character — not the paragraph. The same identity reads the same way wherever it appears.
This is why understanding the manuscript matters before audio. Marvox builds character profiles from the source text first (CharacterOS), and voice bindings attach to those identities. Consistency across the book is a property of the identity layer, not something you have to babysit line by line.
Why review still matters
Identity binding solves the drift problem, but attribution is never perfect on the first pass — ambiguous dialogue tags, nested quotes, and unusual point-of-view shifts can misassign a line. That is exactly why scene review exists: you confirm the attribution while it is still cheap to change.
Done in this order — analyze, bind, review, then produce — consistency stops being a gamble and becomes a checkable property of the project.