Start here
What these recordings are, and what every number on these pages means. Written for someone comfortable with machine learning in general but with no background in speech or audio. Five minutes.
1. What a “trajectory” is
A handful of short speech clips from the same speaker, played back to back, in
which some measured quality changes across the clips — anger builds,
warmth fades, the voice gets breathier.
They were found, not performed. Nobody was asked to act an emotional
arc. Every clip is an ordinary piece of existing recorded speech; a scoring model rated
each clip on 40 emotions and 57 voice descriptors, and the mining searched those scores
for stretches where one of them happens to move steadily in one direction. So a
trajectory is a discovery about recordings that already existed — which
also means it can be wrong, which is why you are being asked to listen.
2. The 0–1 numbers are percentiles, not intensities
This is the single most misread thing on these pages.
When a clip shows
Anger 0.90, that does
not mean “90 % angry”.
It means
this clip is angrier than 90 % of all clips in the corpus.
Why do it that way? Because the raw scores from different emotion heads are not
comparable — one may output 0.3 for furious, another 4.0 for mildly amused. So
every emotion is
rank-normalised: replace each clip's score with the fraction of
the corpus it beats. Afterwards 0.5 is the median clip for that emotion, and
“moved 0.25” means the same thing on every axis:
you crossed a
quarter of the corpus.
One consequence worth holding on to: if most clips have literally no trace of
an emotion, they all tie, and a tie has no internal order — they all collapse onto
one number. That is exactly what breaks Sadness
(
the whole story).
3. T — how big the change has to be
T is the minimum total change
required between the first clip and the last, measured on that percentile scale. A tier
with T=0.20 accepts any chain that shifts by a fifth of the corpus.
T=0.80 demands a chain that climbs from near the bottom to near the top.
Bigger T means a more dramatic arc — and dramatically
fewer of them. This is the real count for the one-sided emotion rule:
| T | chains available | hours | possible chain lengths |
|---|
| 0.20 | 21,543,847 | 214,925 | k=2, k=3, k=4, k=5 |
| 0.25 | 9,393,332 | 106,540 | k=2 (only 5), k=3, k=4, k=5 |
| 0.40 | 1,711,911 | 19,336 | k=3, k=4, k=5 |
| 0.50 | 383,880 | 4,595 | k=4, k=5 |
| 0.60 | 100,844 | 1,224 | k=4, k=5 |
| 0.70 | 16,409 | 212 | k=4, k=5 |
| 0.80 | 2,257 | 30 | k=5 |
From 21,543,847 chains at
T=0.20 down to 2,257 at
T=0.80 — a factor of about
9,545. That trade-off is the whole
point of having a ladder of tiers: you pick how strong an example has to be, and pay for
it in how many you get.
4. The step cap — why the change has to be gradual
Reaching the target is not enough. The rule also caps
how far the score may move between two consecutive clips — almost always
0.25. Without that cap you would get chains that sit flat and then jump the
entire distance in one cut, which is a scene change, not an emotional build. The cap
forces the change to be spread out.
It has an arithmetic consequence that explains the table above. A chain of
k clips has k−1 steps, so the furthest it can possibly
travel is (k−1) × cap. Therefore:
| clips (k) | steps |
furthest reachable | so it can serve… |
| 2 | 1 | 0.25 | T < 0.25 only |
| 3 | 2 | 0.50 | T up to 0.50 |
| 4 | 3 | 0.75 | T up to 0.75 |
| 5 | 4 | 1.00 | any T |
You can watch that happen. There is one tier
that keeps T=0.25 but tightens the cap to 0.20. Two clips can
then reach at most 0.20, which is less than the 0.25 required — and sure enough it
holds 0 chains at k=2, against
3,895,947 in total. Tightening the cap did not make the
chains shorter; it made the short ones impossible.
Read that against the ladder and it matches exactly:
at T=0.80 only k=5 chains exist, because four steps of 0.25 is
the only way to cover 0.80. And k=2 all but vanishes the moment
T equals the cap — a two-clip chain would have to move
exactly the cap and not a hair more. That is why nearly every tier reports zero
chains at k=2; it is arithmetic, not a gap in the data.
5. k
Simply the number of clips in
the chain. Longer chains have more room to move gradually, and take longer to listen
to.
6. One-sided vs two-sided
One-sided (B1): only the target emotion has to get where it
is going. Whatever else the voice does is not the rule's business.
Two-sided (AB2): the chain must move on both axes at
once — one emotion clearly falling while another clearly rises. That is a
much stronger claim about what is happening, and much rarer:
at T=0.25 the one-sided rule finds
9,393,332 chains against the two-sided rule's
324,658 — about 29× more.
There is also proxy (PXR), for emotions that do not ramp
cleanly on their own: the step cap is applied to a stand-in axis that tracks the target.
And VoiceNet (VN1), where the moving quantity is not an emotion at
all but a description of the voice or recording — tempo, breathiness, nasality,
and 54 others.
7. “Same speaker” is checked, and it was not free
A trajectory is only meaningful if it is
one person throughout. Otherwise you are not hearing an emotion develop, you are
hearing two different people spliced together.
The catch: only MLS ships real speaker identities. Everywhere else
“speaker” really meant “same source recording”, which is a much
weaker guarantee — in podcast, only 54.6 % of consecutive clips inside
one nominal speaker track are actually the same person. So a voice-embedding model was
run over the clips and their similarity measured directly.
Why it is anchored to the first clip. Checking only neighbouring pairs is
not enough: A can resemble B and B resemble C while A and C are plainly different people
— similarity does not chain. So every clip is also compared against the
first clip. Both numbers are shown: min_cos_consec for neighbours and
min_cos_anchor against the first. 1.00 would be an identical voice; mining
used a 0.80 threshold.
Where it is missing, the page says so. 864 of the 1,764
trajectories here carry a measured score. The rest — chiefly podcast, which has no
embedding store in this build — show no number rather than a guessed one. The
voice profiles need no check: one profile is one cloned voice by construction.
8. The voices are not unified yet — you may hear them shift
These chains are found clips stitched
together, not one continuous performance. Even when every clip genuinely comes from
the same person, they are still different recordings — different moments,
different microphone distance, different room. So as a chain plays you may notice the
voice itself shifting a little from segment to segment, on top of the emotional change
you are being asked to judge.
To be precise about what has and has not been done: the speaker check described
above filters chains, discarding those whose voices do not match closely enough.
It does not unify them. Voice conversion has not been applied yet in this
build. A planned pass will re-render every segment onto the first segment's voice, at
which point this effect disappears and only the emotional trajectory remains.
Until then, when you hear a change, it is worth separating the two questions:
is the emotion moving? and is that just the recording changing? Each
sample prints its own match score so you can tell a tight chain from a loose one.
The voice profiles are the exception. Chains from
vprof_vc are a single cloned voice per profile by construction, so they
carry no speaker-identity risk at all and no such caveat.
Update — for the emotion tiers, this pass has now been run. The paragraph
above still describes
this build, which is unchanged. A parallel build exists in
which segments 2…
k of every emotion chain were re-synthesised onto
segment 1's voice with ChatterboxVC and restored with SIDON. It did not simply
remove the problem: measured processing-matched the voices do become more alike, measured
against the raw anchor they do not, and the emotional move the chains were mined for
survives at a median 96 % of its original size. The VoiceNet tiers and the
voice-profile tiers were deliberately left alone.
Listen to both → ·
the measurements →
9. Why the audio has been loudness-normalised
Each clip was volume-normalised independently
long before any of this, so gluing them together produces level jumps that have nothing
to do with the trajectory — in this set the worst seam is
18.0 dB. A jump like that is very easy to mistake for the emotion
itself.
So every clip here is scaled to the same loudness before joining, and the
safety limiter is applied once to the finished chain rather than per clip, so
the relative levels stay intact. The gain applied is printed under every clip. The first
few items of each tier also carry an un-normalised version so you can hear the raw
seam if you want to.
10. The rescue tiers
Some emotions — Sadness, Awe, Distress,
Disappointment — return
zero trajectories under the rules above, for a
measurable reason to do with how their scores are distributed. The tiers whose names
begin
sad- use deliberately
looser rules to recover listenable
examples anyway. They are kept visually separate everywhere and each one states what its
rule relaxed and what that cost. They are
not strict-rule trajectories and should
not be counted as such.
The full explanation →11. The Script blocks under each player
Every card lists its chunks in order. Each chunk shows
two things: the clip's procedurally generated voice caption — age, perceived
gender, delivery, timbre, clarity, recording quality and so on, collapsed to one line and
expandable — and the clip's transcript. Non-speech vocal sounds such as
(ahem), (low mumble) or (wistful sigh) appear
inline, in place, where the burst pass found them.
Most chunks have no such markers, and that is correct. Bursts are sparse:
across the clips on this site only about a quarter carry one. A chunk with a clean
transcript simply had no detectable non-speech sound — nothing has been invented to
make the pattern look even.
One repair was applied to these captions. The versions stored in the
corpus index were written with two ordinal ladders running backwards, so a high
“gender” score — which actually indicates a masculine voice
— was captioned as feminine, and a high “background” score —
which actually indicates a cleaner recording — was captioned as noisier.
The underlying numbers were never wrong. Those two clauses have been re-rendered here
from the numeric buckets using the corrected wording, so the captions you read do not
contradict the measurements.
The emotion clause has been re-derived, and it used to be wrong. The 40 emotion heads are not on a common scale — Interest has a median of 2.08 and is never zero, while Infatuation is zero on 87.7 % of clips — and the caption named an emotion whenever its raw score cleared an absolute 1.0. Interest therefore appeared in 94.8 % of captions and Sadness in almost none: the clause was reporting the scale of the head, not the emotion of the clip. An emotion is now named only when it lands in the top 10 % for that emotion, against a pooled tie-aware mid-rank ECDF over 132,833,726 utterances spanning every dataset and language. Interest now appears in 6.2 %, all 40 emotions occur, and a clip that is ordinary on all 40 says “no dominant emotion” rather than being forced to pick one (21.8 % of clips). This is the same scale the trajectory miner selects on, so the caption and the mining now refer to the same quantity: the mined target emotion is named in the final clip's caption on 73 % of chains, up from 46 %.
What to do now
Go to
the tier index and open anything. Each example carries a written
description generated from its own numbers, so you can read what it claims to be and then
check by ear whether it delivers. The honest answer to “does this sound like the
emotion is building?” is the thing being asked for — including when the answer
is no.