The pitch QA gate, what F0 median + p90 excursion catches that composite scores don't
A composite quality score for an AI dub is an average. That is its whole purpose, and it is also its blind spot.
You run a feature through a naturalness model, a speaker-similarity model, an intelligibility metric, you weight them, and you get one number per track. The number goes up when the dub gets better, and a team can optimise against it. What the number cannot do is tell you that on cue 814, a male character spoke one line in falsetto. Across a 1,200-cue track, one ruined cue moves the composite by less than a thousandth. The score still reads "good." The cue is still ruined. The ear catches it in half a second.
This is the failure mode the rest of this piece is about, and the gate we built to catch it.
Why averaging hides the catastrophe
The mean opinion score, the foundation of nearly every modern speech quality metric, is defined by the ITU as the arithmetic mean of individual ratings: see ITU-T P.800.1. Every learned predictor that approximates it inherits the same shape. UTMOSv2, the system that won the VoiceMOS Challenge 2024 (first place in 7 of 16 metrics), predicts a per-utterance naturalness score, and a track-level number is the mean of those. So is a speaker-similarity average. So is a composite of the two.
Averaging is the right tool for gradual quality. If the whole dub is a little robotic, the mean drops and you know to retune. The problem is catastrophic per-cue failure, the kind where 1,199 cues are excellent and one is unusable. A mean is dominated by the bulk and suppressed by the count. The single bad cue, the one a buyer's spot-check will land on, is exactly the event the mean is built to wash out.
The Slator 2025 AI Dubbing Report, in its quality-assurance section, frames buyer-grade naturalness as a voice "free from robotic artifacts, glitches, or odd speech patterns." A glitch is not an average property. It is a rare event. You do not find rare events by averaging; you find them by scanning for outliers and gating on the worst one. That is the design difference between a scorer and a gate, and a serious dub pipeline needs both.
F0 is the voice's gender carrier
To catch the falsetto break you have to measure the one signal that moves when it happens: the fundamental frequency, F0, the rate at which the vocal folds vibrate.
F0 is the dominant acoustic correlate of perceived vocal gender. The voiced speech of a typical adult male sits roughly between 90 and 155 Hz; a typical adult female between 165 and 255 Hz (see Voice frequency). The two ranges nearly meet but barely touch, around 155 to 165 Hz, which is precisely why F0 is such a reliable gender discriminator: most of the time, a single number puts a voice clearly on one side or the other.
We estimate it per cue with pYIN (Mauch & Dixon, ICASSP 2014), a probabilistic F0 estimator that emits multiple pitch candidates with probabilities and Viterbi-decodes a smooth track through them. It is robust on short, expressive utterances, which is exactly what dub cues are. From that per-frame track we take two statistics, and the choice of which two is the whole game.
The two failure modes
A cloned voice can fail on pitch in two distinct ways, and they need two distinct tests.
Wrong-median. The cue's median F0 contradicts the character's gender. A male character's line comes back with a median of 247 Hz, deep in female territory. This is a gross failure, the clone has wandered off identity entirely for the duration of the cue, and the median alone catches it. ElevenLabs, like most expressive TTS, occasionally renders a cloned male voice this way when the per-cue stability setting is low enough to let the pitch drift. The lower the stability, the more expressive the read, and the more room the model has to wander.
High-pitch excursion. This is the subtle one. The median is fine, the cue reads as male on average, but inside the line the voice spikes into falsetto for a syllable or two and snaps back. A median is, by construction, insensitive to this; half the frames can be normal and the median sits comfortably in the male band while a partial break ruins the take. The transition into falsetto is a genuine mechanical event in the voice, the vocal folds shift from full-body vibration to vibrating only at their ligamentous edges, and it is heard as a sudden jump in pitch (see Falsetto). A synthetic voice reproduces the same artifact when it breaks.
The median is the wrong statistic for the second mode. You need a statistic that is sensitive to the high tail of the distribution while ignoring the bulk that the median already certifies.
Why p90 is the right second statistic
The 90th percentile of the per-frame F0 is that statistic. It asks: ignoring the worst-case spikes (the top 10%, which may be pYIN octave errors), how high does this voice routinely get pushed? A clean male cue has a p90 that stays in the male band. A cue with a falsetto break has a normal median and a p90 that climbs into female territory, the mathematical signature of "mostly fine, occasionally not."
Concretely, our gate flags a male-character cue when either the median contradicts the gender, or the median passes but p90 exceeds 215 Hz, or more than 15% of voiced frames sit above 200 Hz. The 215 Hz line sits well above the male modal range and inside the female one, so crossing it is unambiguous. The percent-of-frames test is a second net for a break too brief to lift p90 on its own. Two statistics, three conditions, because the failure has more than one shape.
A composite scorer would have to be told, per cue, "alarm on the high tail, but only against this character's expected band," and even then it would feed a single averaged number to an optimiser that cannot act on one cue. The percentile test does the alarming directly. It is a threshold, not a mean. That is what makes it a gate.
The re-render loop
Detection is half the gate. The other half is the fix, and the fix has to be verified the same way it was caught.
When a cue is flagged, we re-synthesise it at high stability, 0.9 to 0.97, which constrains the model's expressivity and sharply reduces its room to wander into falsetto. We do not trust the first re-render. We run a short retry loop: synthesise, measure F0 again on both the median and p90, and keep the least-spiky take, the one whose p90 sits lowest while the median stays in band. A high-stability read is slightly flatter in delivery, so we spend that flatness only on the cues that need it, never across the track, where it would flatten the whole performance. The flagged cue is repaired; the rest of the track keeps its expressive delivery.
This is also why the gate sits last, after mastering. The composite score and the loudness master operate on the whole track and are blind to the single-cue event by design. The pitch gate is the final reader that listens for the one thing they average away.
What it found on Kumite
On our French dub of The Last Kumite (2024), the gate's first scan of the finished track flagged 5 wrong-median cues and 8 high-pitch excursion cues, all on male characters. Every one passed the composite score; every one was audibly wrong.
One example of each mode. A male lead came back on one line at a median of 247 Hz, a clean wrong-median, re-synthesised to 76 Hz. And a calm spoken question, median perfectly in the male band, carried a p90 of 244 Hz from a single rising syllable that tipped into falsetto; the re-render brought that p90 down to 171 Hz with the median untouched. Thirteen cues, on a track that a single composite number had already called finished.
That is the case for the gate in one sentence: the score said the dub was done, and it was wrong thirteen times, and only a statistic built to find the worst cue could say so.
Why this is a gate, not a scorer, said plainly
A scorer ranks. It tells you whether version B is better than version A, and you optimise against it. A gate blocks. It refuses to let a deliverable ship while a single cue is broken, no matter how good the average is. They answer different questions, and a pipeline that owns only a scorer will ship the falsetto break every time, because the scorer was never built to see it.
Fonti Studio runs the pitch gate as the mandatory final step on every dub we deliver, after the composite score has already said the track is finished, because the score and the ear disagree on exactly the cues that get a film noticed for the wrong reason. If you have a feature going into a dubbed release and you want the per-cue failures caught before a buyer's spot-check finds them, email us a brief. We will tell you where your current dub breaks before we quote you on fixing it.
Fonti Studio is an AI-native subtitle and dubbing service for film distributors and sales agents. Original-cast voice clones, broadcast-loudness masters, every dub passed through the pitch QA gate. €3,500 per language per dub. Flat. EUR. Free 5-minute preview before you pay.
Heading into a delivery window?
Send a film master, trailer, and CCSL or original-language SRT. We send back a free preview in your target languages and tell you up front whether the master will pass.
Email us a brief