Measuring prosody, not vibes
Why Vocast scores pitch, pauses and sentence endings separately, and gates every render on all of them.
Most voice tools report one number, usually word accuracy, and call it quality. Word accuracy tells you the words are right. It says nothing about whether the delivery is human. A voice can be spelled perfectly and still read like a form letter, and that is exactly the version most tools ship because it is the version their one metric approves.
Vocast takes the opposite approach. We split naturalness into properties we can measure on their own, hold each to a gate, and fail the whole render if any single property regresses. A take does not get to pass by being pleasant on average while quietly falling apart in one dimension.
A prosody north-star
The headline metric is a prosody naturalness score (PNS). It is not a vibe rating from a model guessing at overall quality. It is a composite of three things we can point at:
- Pitch dynamics. How much the melody moves, and whether that range survives over a long passage instead of narrowing into a monotone by the fortieth sentence.
- Pause rhythm. Whether silences land on clause boundaries, where a reader would actually breathe, rather than on a fixed timer that ignores the sentence.
- Ending shape. Whether final words decay the way a person trails off, instead of being cut to an identical hard stop every time.
Each of these is benchmarked against a human reading the same lines, so the target is not an abstract ideal, it is what a real person actually did with that text. A perfectly clear render can still fail PNS, and when it does the failure is legible: you can see which axis dropped.
One score is not enough
PNS sits on top of a family of narrower metrics, each added because it caught a specific way the voice went wrong on real scripts:
- Boundary breathing. Scores the small breath and settle between sentences, so clauses do not run together with no room to think.
- Micro quality. Watches word endings, tricky pronunciations and the tiny breaths inside a phrase, the details that read as human up close.
- Energy stress. Checks that the stressed syllable in a word is actually pushed, so emphasis carries meaning instead of flattening out.
Gated in CI, not in a meeting
These numbers are not a report someone reads and nods at. They run in continuous integration against a set of golden takes, and a change that drops any gate fails the build the same way a broken test would. Every render carries its scorecard with it:
render.score
sim 0.931 pass (human baseline 0.909)
cer 0.0% pass
mos 3.50 pass (reference 3.24)
pns 0.88 pass (gate 0.82)When we improve the model, we do it by running a field of candidate configurations, scoring them all, and keeping the one that wins on the metrics rather than the one that sounds nice in a single clip. The gate is what turns “this take feels off” into a number we can chase.
We would rather reject a take than ship a flat one.
