Ten and a half million ordered lists of clips, each one a single speaker walking a single emotional or vocal dimension from one end towards the other. It contains no audio at all — every row is a specification that names the clips by identifier and records where on the dimension each step sits. It exists because a model that can hit “angry” on demand still has to be able to get angry gradually, and nothing in this project measured that.
Every measurement in the main technical report is a measurement of one utterance in isolation. A clip is generated, four scorers are run on it, and it is compared against what the prompt asked for. That is the right unit for “can this model perform contempt at the 95th percentile”, and it is the wrong unit for almost everything a director actually asks for.
Direction is about change. A line reading is built out of a starting state, a movement and an arrival. The interesting instructions are “start polite and let it curdle”, “come down off it slowly”, “he gets angrier with every sentence”. None of those is expressible as a single target percentile, none of them can be scored by running an instrument on one clip, and consequently nothing in this project has ever trained on or evaluated one.
A trajectory is the smallest object that makes that measurable: an ordered list of clips from one speaker in which one measured dimension moves monotonically. Because every clip in the underlying corpus already carries the full 40-emotion and 57-VoiceNet annotation described in the main report, such sequences can be mined rather than recorded. The corpus is what falls out when you do that exhaustively.
What this is not. It is not a dataset of emotional arcs performed by actors, and it is not a set of recordings of anyone deliberately becoming angry. It is a selection over existing annotated speech: clips that happen to sit at increasing values of one dimension, from one speaker, ordered. Whether such a sequence sounds like a genuine emotional progression when played back is exactly the question the corpus is meant to let someone ask, and it has not been asked yet.
A row is a specification, not a container. The whole 7.6-million-row public release is 419 MB precisely because there is no audio in it — roughly 55 bytes per trajectory.
| Field | Meaning |
|---|---|
uids | The trajectory itself: comma-separated clip identifiers, in order. This is the payload; everything else describes it. |
speaker | The speaker all clips in the row share. Every trajectory is within one speaker by construction — otherwise a “rise in anger” would be confounded with a change of voice. |
dataset, lang, lang_iso | Provenance and language of the source clips. |
family, rule | How the trajectory was constructed — one of
the four families of §3, with its rule code (B1, VN1,
PXR, AB2). |
dim_a, dim_b | The dimension or dimensions being walked,
named in the corpus's own vocabulary — e.g. emo_Contemplation. dim_b is
not confined to the two-sided family: the example below is a single-dimension
emotion row that carries one anyway. |
d_a, d_b | The total distance covered on each dimension from the first clip to the last. |
step_a, step_b | The per-step distance — the granularity of the walk. |
T, C, k | The selection constants:
T the monotonicity threshold (how strictly each step must move in the
intended direction), C the consistency threshold, and k the
number of steps. |
qmax, cmax | Quality bounds the trajectory satisfies, so a consumer can filter for cleanly recorded sequences without re-scoring anything. |
contiguous | Whether the clips are adjacent in the source recording — see §4, because this is the field that most changes what a row means. |
total_dur | Total duration of the referenced audio, in seconds. |
emit_frac, spk_basis, proxy_map, track |
Selection bookkeeping — which sampling fraction produced the row, what speaker basis was used, which proxy mapping applied, and which generation track it belongs to. Kept so the build is reconstructible. |
contiguous deserves the explanation. A trajectory whose clips are adjacent segments
of one continuous recording is a genuine progression: the speaker really did move that way, in real
time, in one take. A trajectory assembled from non-adjacent clips of the same speaker is a
construction — the values move monotonically, but the movement never happened as a
performance. Both are useful and they are not the same object, which is why the flag is on the row
rather than being applied as a filter before release. 59.3 % of the full corpus is
contiguous; 82.7 % of the public subset is, because the sources held back for publication
reasons happen to be the ones that contributed most of the non-contiguous material.
There is no endpoint column. d_a and d_b give the distance
covered and step_a / step_b the per-step size, but the absolute value of
the dimension at the first and last clip is not stored. A consumer who needs to know that a
trajectory runs from the 30th to the 80th percentile of anger — rather than merely that it covers
0.26 of the axis — has to re-derive it from the annotation of the named clips. This is worth stating
because the corpus is otherwise easy to mistake for a self-contained description of an arc, and it
is not: it is a description of a movement.
The first row of the public file, unedited:
dataset mls
rule B1
family emotion
T 0.2
C 0.25
k 2
speaker 10065
track 10065|esther_00_fillion_64kb.mp3
lang french lang_iso fr
spk_basis exact
dim_a emo_Contemplation d_a -0.2555 step_a 0.2555
dim_b emo_Thankfulness_Gratitude d_b +0.2271 step_b 0.2271
qmax 0.2271 cmax 0.2271
contiguous true
total_dur 29.52
emit_frac 0.6858
proxy_map null
uids 10065_10699_000250,10065_10699_000203
Two steps, from one Multilingual LibriSpeech speaker, contiguous in the source, 29.5 seconds of referenced audio, walking contemplation downward while gratitude rises. The whole row is 24 columns and about 300 characters. That is the entire object.
| Family | Rule | What it walks | Full | Public |
|---|---|---|---|---|
emotion | B1 | One emotion head, monotonically — the straightforward case. A speaker's clips ordered by increasing (or decreasing) score on one of the 40 emotion heads. | 5,069,820 | 3,545,392 |
voicenet | VN1 | One VoiceNet dimension — arousal, tension, pitch range, breathiness, pace and the rest. The same construction on the 57-dimension vocal description rather than on emotion. | 3,072,000 | 2,160,000 |
proxy_taillift | PXR | A proxy dimension driven into its tail. Where a dimension's own extreme is too thinly populated for a speaker to supply a walk, a correlated dimension stands in and the trajectory lifts that instead — which is how the corpus reaches the extremes at all for the rarer axes. | 1,260,345 | 977,981 |
emotion_twosided | AB2 | Two emotions at once, moving in opposite directions — one rising while the other falls. This is the family that expresses a change of state rather than an intensification: relief displacing fear, contempt displacing affection. | 1,251,548 | 955,588 |
The two-sided family is the smallest and by some distance the most interesting one. A single-dimension walk asks the model to do more of something. A two-sided walk asks it to trade — and every acting note about a turn, a realisation or a change of heart is a trade, not an intensification. If any part of this corpus turns out to be the useful part, that is the prediction.
| Full corpus | Public subset | |
|---|---|---|
| Trajectories | 10,653,713 | 7,638,961 (71.7 %) |
| Distinct clips referenced | 24,922,343 | 17,722,101 |
| Speakers | 1,507,064 | 1,214,241 |
| Referenced audio | 114,920 h | 74,858 h |
| Clips per trajectory, mean | 3.52 | 3.51 |
| Contiguous in the source | 59.3 % | 82.7 % |
| File size | 581 MB 580,816,509 B = 554 MiB | 419 MB 419,038,652 B = 400 MiB |
Steps per trajectory in the public subset:
| Steps | Trajectories | Share |
|---|---|---|
| 2 | 1,611,017 | 21.1 % |
| 3 | 2,303,104 | 30.2 % |
| 4 | 1,974,481 | 25.8 % |
| 5 | 1,750,359 | 22.9 % |
| total | 7,638,961 | 100 % |
The full corpus has the same shape: 2 → 2,205,844 · 3 → 3,193,827 · 4 → 2,773,292 · 5 → 2,480,750, which likewise sums exactly to 10,653,713.
Those counts sum exactly to their row totals, so the histogram is complete: there are no trajectories of six steps or more in either version, and the mean of 3.51 is a mean over a range of 2 to 5. That is worth stating plainly because “10.6 million trajectories” invites a picture of long arcs, and the real object is short: a two-to-five-clip walk. A two-step trajectory is a before and an after.
The 24.9 million distinct referenced clips against 10.7 million trajectories at 3.52 clips each — 37.5 million clip slots — means the average clip appears in about 1.5 trajectories. Reuse is therefore real but modest, and a consumer sampling trajectories at random is not repeatedly drawing the same audio.
| Source dataset | Full | Public | What it is |
|---|---|---|---|
emolia | 5,893,310 | 5,893,310 | The German emotional-speech corpus that supplies most of this project's real expressive material. Released in full. |
podcast | 2,657,451 | held back | Podcast speech from publicly available feeds. |
kartoffelphon | 897,830 | 897,830 | German speech. Released in full. |
eurospeech | 729,876 | 729,876 | European parliamentary and public speech. Released in full. |
snippets | 277,398 | held back | See §6 — this one is a judgement call, not a settled decision. |
mls | 117,945 | 117,945 | Multilingual LibriSpeech. Released in full. |
evasnippets | 79,903 | held back | A synthetic-origin snippet set. |
Both columns add up: the four released sources sum to 7,638,961 and all seven to 10,653,713. The public release is a clean removal of three sources, not a resampling — so a public row is byte-identical to the full-corpus row it came from, and any statistic computed on the public subset can be compared directly against the full-corpus figure without worrying about a shifted selection.
The corpus is more multilingual than the model that motivated it. The model line handles English and German; the released trajectory rows carry language tags for English, German, French, Spanish, Italian, Portuguese, Dutch and Polish, inherited from the source corpora — the example row of §2.1 is French. Whether that is useful or merely present depends entirely on what a consumer intends to do with it.
Three sources — podcast, snippets and evasnippets — are
excluded from the public release. The reason is not the audio and not the annotation: it is that
a trajectory row names exactly which segments were used. Those transcripts are not
part of this project's open real-speech release, and publishing an ordered list of their segment
identifiers is publishing a precise index into material that was deliberately not published. That
is a weaker disclosure than releasing the transcripts, and it is not nothing, so the rows go.
snippets (277,398 rows) was excluded alongside evasnippets. The
instruction that governed the filter said “AI snippets”, which is ambiguous between the
two source names, and the decision was made in the direction of holding more back rather
than less. That may be more conservative than intended. If snippets is in fact
publishable, the public subset can be rebuilt with it included — the filter is a single predicate
over the dataset column and the full corpus is intact. Until someone confirms, the
release stays as it is, and this paragraph is here so that a reader does not mistake a cautious
default for a considered exclusion.
The full corpus is retained privately at TTS-AGI/moss-va-trajectory-corpus-full
(581 MB, verified after upload the same way every other artefact in this project is — by re-reading
the repository metadata and size-comparing every file rather than trusting the uploader's success
message).
The corpus is a specification. It names clips; it does not contain them. To do anything with a trajectory you need the source audio or the source annotation keyed by the same identifiers, and for three of the seven sources that material is not public. This is a deliberate trade — it makes the corpus small enough to release and to iterate on, and it pushes the licensing question onto the audio rather than onto the sequence.
Three uses it was built for:
T, C, k,
qmax and cmax fields let a consumer ask for strictly monotone,
high-quality, five-step walks without re-scoring 25 million clips — which is most of the work of
building such a set.emo_Contemplation walks the Empathic-Insight contemplation head, with whatever that
head gets wrong. The main report's §6 sets out how far these instruments can be trusted, and
§6.4 there records one head that is never read at all because of a key mismatch. Those caveats
are inherited here in full.Part of the MOSS voice-acting documentation set: the technical report · steering and probes. Dataset: laion/moss-va-trajectory-corpus.