Ten reference voices, each rendered through all 832 conditions in English and German. 402,560 candidate takes in total.
What changed since the single-voice profile. The published
first profile generated 32 takes of one sentence per
condition: its group list carried no cond_key, so every group silently took a
fallback path and the A/B design never ran. These ten use the intended path. Measured on the text
pools: ~15,465 distinct English sentences per voice against 114 before.
Every group generated many candidates. All of them were scored and stored; the one you hear is whichever scored highest. Nothing is discarded — re-ranking never needs regeneration.
Four sensors produce the inputs, all automatic:
Why multiply by (1 − WER) rather than divide by (1 + WER)? The project manual specifies the dividing form. Measured over 28,698 candidates it is too lenient: a take that rambles past the written line keeps accumulating emotional content, so genuineness, blend and strength all rise while ÷(1+0.79) only scales it by 0.56. One 28-second take of a 20-word line — whose transcript wanders into "meant in staying in the dist…" — outranked an 8-second take of the same line with a quarter of the word errors. Switching to ×(1−WER) moved 28 of 808 winners.
An earlier version z-scored each term within the group. That sounds fairer but has a flaw: normalising inside a group means a group whose takes are all badly blended still hands its best one a good z-score. Blend then stops competing across groups, and the whole corpus drifts toward flat delivery.
Switching to raw values, measured on the same 28,698 candidates:
| metric (median winner) | z-scored | raw | change |
|---|---|---|---|
| vocal-burst blend | 3.65 | 4.74 | +30 % |
| target strength | 1.78 | 1.87 | +5 % |
| genuineness | 0.738 | 0.626 | −15 % |
The genuineness loss is a real trade, not an oversight: blend and strength are bought with it. It is recorded here rather than buried, because a reader comparing this corpus against another on genuineness alone would otherwise reach the wrong conclusion.
The straightforward case: the emotion classifier's reading of that emotion, and more is better. Condition A is intense and freely expressed, B is intense but held in.
B additionally gets the containment treatment described under moderate/contained below — being intense and being contained are independent axes here.
This is the one people find counter-intuitive. A "moderate sadness" group is not scored for being as sad as possible — it is scored for landing in a band. Maximising is what the intense conditions are for. A take that overshoots into full grief is as wrong for this cell as one that is flat.
Two adjustments, both because containment is the opposite of letting it out:
Here the target is the dimension being steered, not an emotion. The sign flips for the low end, so an "extremely low tempo" cell is rewarded for being slower, using the same formula as the high end rather than a separate rule.
Without the sign flip, every low cell would be ranked by how much of the dimension it had — i.e. ranked backwards.
A character group's target is a voice, not a feeling, and there is no per-character classifier to score against. If the emotion term were left on, the twelve character clusters would be ranked by whichever emotion happened to leak into each take — the dragon would be represented by its angriest reading rather than its most draconic one.
So the term is zeroed and the ranking asks only: clean, in character, long enough, and not accidentally emoting.
These rank like intense emotions, with one important difference in how WER is measured: inline
burst tags such as <sobs> are stripped from the reference before WER is
computed.
This was a real bug. The code emitted <sobs> while the stripper
matched only round brackets, so the tag stayed in the reference text and every burst-carrying take
was charged word errors for failing to pronounce the word "sobs". The ranker was
selecting against exactly the takes the bursts were meant to improve. After the fix, bursts
win: emotion 2.532 → 2.788, vulnerability 4.666 → 5.085.
| multiplier | what it does |
|---|---|
| duration floor |
(dur / MIN_DUR)², capped at 1. Nothing else in the score preferred a longer take, so a
group could be represented by a 1.8-second fragment that scored well because it was short:
few words means few chances to misread, so WER goes to zero and the other terms are computed over a
near-silent clip. Short takes are crushed rather than banned, so a group where every candidate is
short still resolves to its best member. |
| length ceiling |
expected duration is words / 2.8 words-per-second; nothing is penalised up to 1.6× that,
beyond which the score falls off quadratically. This is the explicit fix for runaway takes that
×(1−WER) alone did not catch — takes over 2.5× expected length dropped from 14 to 7. |
| identity rank |
0.81 + 0.19 · similarity. Speaker similarity is ranked, never gated high, at
19 % weight. The reason is measured: among listener-confirmed same-speaker pairs the median
similarity was 0.632 and 55 % fell below the old 0.68 gate — gating there would have thrown
away more than half of genuinely correct takes. |
| floor penalty | ×0.25 below a hard 0.40 similarity floor. Not a ban: a take that far off is almost certainly a different speaker, but the group still needs a representative. |
Subset A is 32 different sentences; subset B is 16 shared ones rendered across all four sub-conditions. They answer different questions, so a single ranking would let whichever subset happened to draw easier sentences crowd the other out of the top slot the page shows. Ranks are computed within subset; the z-scores stay group-wide so both remain on one scale.
Every number above comes from automatic sensors. Their agreement with a human listener on spoken material is only about ρ ≈ +0.21. Treat the ranking as useful, not authoritative.
This project has produced four separate cases of a scorer confidently rewarding broken audio: a genuineness gain that turned out to be a generator running to its length cap; an aesthetics head scoring a model 4.12 while human-facing judges scored it 0/30; the WER stripper described above; and a caption model whose "improvement" tracked a label-noise artefact. Where a number here surprises you, listening is the tie-break, not the score.
Not the first ten of anything. The gated pool of 4,187 candidates is 76 % male and 87 % English, so ranking by quality and cutting at ten would have shipped a cohort the corpus does not look like. Selection was stratified first and quality-ranked only inside a stratum, then spread by farthest-point in the VoiceNet space so the ten differ from each other.
| voice | id | gender | language | source | DNSMOS |
|---|---|---|---|---|---|
| Poised Intellectual Professional | emolia_c1699 | female | English | emolia | 3.54 |
| Fragile Matriarch | k395_age3_bg1 | female | nan | char | 3.39 |
| Fading Elder Prophetess | k91_age5_bg0 | female | nan | char | 3.50 |
| Scholarly Matriarch Historian | emolia_c2570 | female | English | emolia | 3.48 |
| Velvet Sage Baritone | k325_age3_bg1 | male | nan | char | 3.59 |
| Cynical Streetwise Youth | emolia_c1682 | male | English | emolia | 3.52 |
| Breathless Exile's Whisper | anime_088 | male | English | anime | 3.51 |
| Measured Slavic Historian | emolia_c0542 | male | English | emolia | 3.44 |
| The Serene Storyteller | k10_age3_bg1 | other | nan | char | 3.41 |
| Whispering Teutonic Chronicler | mediathek_0184 | male | German | mediathek | 3.58 |
One page per voice; each plays the winning take of every condition with the scores that selected it.