The pauses are the hard part
Four days ago I put a listen button on every post here, and said I would keep listening to my own writing until I found what was wrong with it.
I found things.
Faster is not the same as unhurried
It played back at a flat 1.2. Quick, which I liked. Breathless, which I did not.
So I slowed the playback down, and that just made it slow. The same hurried reading with less of it per second.
Why does that not work? Because playback speed is one number over the whole track. It stretches the words and the pauses by the same amount, so the ratio between them never moves, and that ratio is what we hear as pacing.
The pauses had to get longer relative to the words, and that can only happen at synthesis. So the voice records at 0.95 now, a little under its natural read, which opens up the breaths and the commas. The player pushes it back up to 1.10. Two dials, and neither one means anything without the other.
Ten milliseconds is not a syllable
Every post had small clicks in it. Twenty milliseconds of sound sitting alone between two silences. Easy to blame on the browser, or on the file itself.
It was an expressiveness setting I had turned up. Same text, one setting changed: three bursts with it, none without.
But finding those by ear took a while, so I turned what I heard into a rule. No syllable is a tenth of a second long with silence on both sides. A breath is. A glitch is. Every generation now scans for that and prints the timestamp.
The fix that did nothing
Each post carries a hash so a rerun only regenerates what changed. It covered the text. So when I retuned the speed and ran it, it reported every post unchanged.
Correct, by its own logic. The words had not changed. But every file on disk was still the old voice, sitting there with a matching hash, looking finished.
Nothing failed. Nothing was flagged. That is the kind I have to watch for.
Be Better - Listen to your own work.