Speaker embeddings need speech time to stabilise. We tested the same clean recording at three window lengths, with and without noise reduction.
| audio | 3 s | 5 s | 8 s |
|---|---|---|---|
| raw | 0.571 | 0.658 | 0.730 |
| noise-reduced | 0.577 | 0.665 | 0.736 |
Not one number in this document was chosen because it sounded right. Each came from testing against real footage, and where a measurement contradicted our assumption, the assumption lost.
A moment becomes a clip when several of these agree. Any one alone is weak.
A laugh has a physical signature: amplitude modulation between 4 and 8 Hz in the speech band. We band-pass 300–3000 Hz, take the envelope, and look for a peak in that range. This is far more reliable than hoping the transcriber writes "haha".
The catch we found the hard way: rhythmic speech modulates identically. Raw detection ranked repeated phrases highest — someone saying the same word four times looks exactly like laughter to a frequency analyser. So the signal is gated: a window only counts as laughter if the text there is empty, a laugh token, or low-confidence.
| percentile | p50 | p85 | p95 | p98 | max |
|---|---|---|---|---|---|
| value | 0.017 | 0.039 | 0.065 | 0.092 | 0.195 |
A segment takes the maximum over 10–60 curve points, so it lands naturally high. Normalising against p85 made almost every segment saturate and the signal stopped discriminating. p98 is the working reference.
One exclamation means nothing. Four in fourteen seconds is the moment. Reaction words are therefore counted in a rolling twenty-second window rather than per line — the unit of excitement is a burst, not a word.
"no way" × 1 → noise · "no way" × 4 in 14 s → clip
Measured on the reference VOD: reaction words appeared 49 times across the whole stream, never more than once per line. Counted per line the signal is invisible; counted per window it is obvious.
Openings, rare drops, boss kills, the reveal in a podcast — the moments an audience actively seeks out announce themselves in vocabulary. The word list is picked to match what is actually being recorded, automatically, because feeding one context's terms to another produces confident nonsense.
| window | 75–80 min | 35–40 min | rest of stream |
|---|---|---|---|
| event terms | 21 | 15 | 0–2 |
These events happen in sessions, not moments. The density measure finds the session; a keyword match would scatter across it.
The weakest of the four on its own, and deliberately weighted lowest. Loud is not the same as interesting — gunfire is loud. Energy is used to confirm the other three rather than to nominate moments by itself.
the flattest routine chatter must score 0.00
Routine callouts and filler — the most common lines in any recording and the least interesting. If they score above zero, the detector is broken.
Getting this wrong is worse than not doing it, so the bar is deliberately high.
Speaker embeddings need speech time to stabilise. We tested the same clean recording at three window lengths, with and without noise reduction.
| audio | 3 s | 5 s | 8 s |
|---|---|---|---|
| raw | 0.571 | 0.658 | 0.730 |
| noise-reduced | 0.577 | 0.665 | 0.736 |
With a single voice profile, "is this you?" has nothing to compare against, so the threshold alone decides and it fails in both directions. We build a cohort from the other voices in your own stream and ask a better question: does this resemble you more than anyone else in the room?
| method | your voice | others | separation |
|---|---|---|---|
| threshold only | 0.549 | 0.208 | 0.341 |
| cohort-normalised | 0.247 | −0.312 | 0.559 |
When two people speak at once the embedding is a blend of both and matches neither cleanly. In a lively Discord call that is most of the stream. We would rather colour fewer lines correctly than colour many lines wrongly.
Each additional voice profile sharpens every other one, because the comparison moves from an anonymous cohort to a named rival. Profiles for your regular co-streamers is the single biggest accuracy gain available.
This is the mistake that cost us the most, and fixing it produced the single largest quality jump in the project.
Masking a word and refusing a moment are not the same thing, and conflating them is how channels get struck.
Slurs are replaced in the subtitle and covered with a tone in the audio. Ordinary swearing is left alone — it is part of how people actually talk, and removing it makes the clip feel sanitised.
If a passage reads as racist, no clip is made from it at all. A bleep does not save a clip that is about the joke — it just means your viewer hears a bleep in the middle of it.
Upload an hour and read what it measured. That is the whole argument.