Pilot voices — ten complete profiles

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.

How were these takes ranked?

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.

The formula, in one place
reward = (genuineness + wblend·blend + 1.25·target) · (1 − WER) score = reward · durationFloor · lengthCeiling · identityRank · floorPenalty

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.

Why raw scores and not z-scores — and what that cost

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-scoredrawchange
vocal-burst blend3.654.74+30 %
target strength1.781.87+5 %
genuineness0.7380.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.

Emotions — intense conditions (A, B)
target = emotion_strength // as measured, higher is better

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.

Emotions — moderate conditions (C, D)
target = band_fit(emotion_strength, lo, hi) = 1.0 inside the band, decaying linearly outside it

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.

Contained conditions (C, D) — the two extra terms
wblend = 0.6 (instead of 1.0) reward += 0.5 · z(−vulnerability)

Two adjustments, both because containment is the opposite of letting it out:

VoiceNet dimensions (tempo, breathiness, vocal fry, …)
target = sign · dim_target, sign = +1 for "high" cells, −1 for "low" cells

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.

Character clusters — the emotion term is switched OFF
target = 0 reward reduces to (genuineness + blend) · (1 − WER) · identity · duration

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.

Edge cases (screams, sobs, groans) — and why WER is computed differently

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.

The four multipliers, and the failures each one prevents
multiplierwhat 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.
Why A and B subsets are ranked separately

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.

What this ranking does not tell you

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.

The ten voices

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.

voiceidgenderlanguagesource DNSMOS
Poised Intellectual Professionalemolia_c1699femaleEnglishemolia3.54
Fragile Matriarchk395_age3_bg1femalenanchar3.39
Fading Elder Prophetessk91_age5_bg0femalenanchar3.50
Scholarly Matriarch Historianemolia_c2570femaleEnglishemolia3.48
Velvet Sage Baritonek325_age3_bg1malenanchar3.59
Cynical Streetwise Youthemolia_c1682maleEnglishemolia3.52
Breathless Exile's Whisperanime_088maleEnglishanime3.51
Measured Slavic Historianemolia_c0542maleEnglishemolia3.44
The Serene Storytellerk10_age3_bg1othernanchar3.41
Whispering Teutonic Chroniclermediathek_0184maleGermanmediathek3.58

How each profile was built

Data and models

One page per voice; each plays the winning take of every condition with the scores that selected it.