The story
The ten detectors
Ten detectors run on every file, all behind one contract: a score in [0, 1] that rises with synthetic likelihood, one plain-English sentence of evidence, named features, and a status. Three vote, one may only lower the score, one gates, five are evidence and routing. Each card names the sponsor's rubric technique it implements, what it measures, its role, its numbers and one real sentence it wrote about a test file.
The rubric, mapped
The sponsor awards diversity points for each distinct technique a system actually uses, plus a bonus for choosing analyses per file. Source: the README's technique table.
| Rubric technique | Detector | How it is used |
|---|---|---|
| Container, digital file forensics and metadata | container | routing |
| Spectral / frequency-domain analysis | handcrafted, Spectra-AASIST | fused (20%source: README.md, section the-eight-forensic-techniques); suppressor |
| Prosody and phonetics | handcrafted | fused |
| Acoustic-environment consistency (ENF) | enf | evidence |
| Compression forensics | compression | evidence |
| Speaker-embedding consistency | speaker_drift | evidence |
| Deep-learning anti-spoofing | M1b, M5, Spectra-AASIST | fused (Spectra as suppressor only) |
| Splice / discontinuity detection | splice | evidence |
| Agentic orchestration bonus | the router and the speech gate | rules over measured facts, a routing log per file, and a measured router-on-versus-off ablation |
The three that vote
- fused · weight 0.6source: README.md, section how-it-decides
M1b: frozen XLS-R with a logistic probe
Technique: deep-learning anti-spoofing. What it measures: the hidden state of layer 7 of XLS-RA large self-supervised speech model from Meta, pretrained on many languages and never trained for spoof detection. Its middle layers carry the acoustic detail that separates vocoders from voices; we read one of those layers. (frozen), averaged over time, then a class-balanced logistic regression and a Platt mapA one-dimensional logistic fit that turns a raw decision value into a probability. It is monotone, so it changes the numbers a reader sees without changing the ranking the metric scores.. M1b adds 40 VCTK real speakers from ASVspoof 2019A public anti-spoofing benchmark. Its real speakers and a small set of its attacks were added to the training folds only, never to the holdout. and a spoof anchor to the training folds only. Layer 7 won inner cross-validation; mid-depth layers carry the acoustic detail that separates vocoders, the top layers are tuned for phonetic content.
Numbers: inner 0.301source: README.md, section numbers, holdout 0.072source: README.md, section numbers (EER 1.4%source: README.md, section numbers), In-the-Wild 0.342source: README.md, section numbers (the results table rounds it 0.343source: README.md, section results-at-a-glance), In-the-Wild false alarms 0.8%source: README.md, section numbers, test share above 0.5source: README.md, section numbers 26.8%source: README.md, section numbers.
XLS-R layer-7 probe: calibrated log-likelihood ratio -5.78 (real-like, P=0.00)
Sentence from the README's trace of HGT1046947.wav. Spec: the XLS-R probe.
- fused · weight 0.2source: README.md, section how-it-decides
Handcrafted spectral and prosody features
Techniques: spectral analysis and prosody. What it measures: 234source: README.md, section the-eight-forensic-techniques features: spectral contrast, flatness, flux, roll-off, MFCC, LFCC and CQCC statistics, group-delay and phase-coherence cues; YIN pitch spread and slope, jitter and shimmer, loudness modulation, pauses, breath frames; gradient-boosted treesAn ensemble of small decision trees trained one after another. LightGBM trains them; at inference the dumped trees are evaluated in numpy so that the training library is never imported. evaluated in numpy. Pitch variability is the one prosody cue that carried signal. The shipped version (v5b) is trained with augmented twins and validated on clean rows only.
Numbers: inner 0.469source: README.md, section numbers, holdout 0.137source: README.md, section numbers (EER 3.1%source: README.md, section numbers), In-the-Wild false alarms 0.40%source: README.md, section numbers, test share above 0.5source: README.md, section numbers 45.1%source: README.md, section numbers. On its own it is blind to web-sourced fakes; that is why it gets a fifth of the vote, not half.
spectral/prosody features real-like (P=0.16): LFCC 16 frame-to-frame change 3.0 SD below real speech (toward synthetic); spectral contrast, band 0 0.8 SD above real speech (toward real); LFCC 1 variability 1.1 SD below real speech (toward real)
- fused · weight 0.2source: README.md, section how-it-decides
M5: a trained head on XLS-R
Technique: deep-learning anti-spoofing. What it measures: the first 12 layers of XLS-R with learned layer weights, attentive statistics pooling and a linear head, trained on rented A100s with class-blind augmentation (noise, telephony band-limits, reverb, codecs, RawBoost). It did not clear its gate as a replacement for the probe, but it is wrong on different files, and as a third rank input it passed the second pre-declared sweep.
Numbers: inner 0.302source: README.md, section numbers, holdout 0.363source: README.md, section numbers (EER 6.0%source: README.md, section numbers), In-the-Wild false alarms 0.45%source: README.md, section numbers, test share above 0.5source: README.md, section numbers 25.8%source: README.md, section numbers.
XLS-R fine-tuned head (M5, 12 layers, attentive pooling): logit +5.64 (synthetic-like, P=1.00)
The one that may only lower a score
- suppressor · weight 0
Spectra-AASIST (M3)
Techniques: deep-learning anti-spoofing, spectral. What it measures: an off-the-shelf anti-spoofing model (its own XLS-R plus a graph-attention back end), run with no training through the same band-matched input path and crops; short clips are zero-padded to one window. Output: a spoof-minus-bonafide margin. Role: if the margin is below −3 and the fused rank is above 0.5source: scripts/fuse_sweep.py line 172 (GitHub; assumes main is public), the rank is halved. It can never raise a score.
Numbers, all possibly in-sample because its model card names no training set: inner 0.0045source: README.md, section numbers, holdout 0.012source: README.md, section numbers (EER 0.16%source: README.md, section numbers), In-the-Wild 0.065source: README.md, section numbers (its authors evaluated on that set), In-the-Wild false alarms 0.0%source: README.md, section numbers, test share above 0.5source: README.md, section numbers 29.3%source: README.md, section numbers. The leakage probes support the suppressor role: the most perturbation-stable detector, the lowest miss rate on unseen generators, and a step that never raised the fused cost.
Spectra-AASIST: spoof-minus-bonafide margin +9.50 (synthetic-like, P=1.00)
Evidence and routing, never scored
- evidence
Compression forensics
Technique: compression forensics. What it measures: 19source: README.md, section the-eight-forensic-techniques codec-trace features in 3–7 kHz (spectral holes, floor depth, effective bandwidth), trained with both classes laundered through MP3/AAC so it cannot learn "MP3 = fake". It detects codec history well and the class barely, because the test set reads as laundered throughout. Its effective-bandwidth reading is a routing fact.
Numbers: inner 0.931source: README.md, section numbers, holdout 0.900source: README.md, section numbers (EER 20.1%source: README.md, section numbers), test share above 0.5source: README.md, section numbers 80.7%source: README.md, section numbers.
compression-trace features synthetic-like (P=0.97): whole-clip floor depth 1.7 SD below real speech (toward synthetic); 3-7 kHz valley depth 0.7 SD below real speech (toward synthetic); deep-hole flicker frame to frame 1.7 SD above real speech (toward synthetic)
Sentence from worked example 1, a confident real file. Spec: compression forensics.
- routing
Container and metadata
Technique: container, file forensics and metadata. What it measures: header facts (codec, rate, bit depth, encoder tag). Rule-based on purpose: on our training data the container is the label, and every test file carries the same FFmpeg tag, so it returns a constant score and routes compression forensics. It never reads filenames or filesystem timestamps, because git, zip and Docker rewrite them.
Numbers: none by design (a constant 0.5source: README.md, section what-did-not-work on this test set).
wav/pcm_s16le 16000 Hz mono 16-bit, 1 tag(s) [encoder=Lavf58.29.100]: no class evidence in the container; written by FFmpeg (libavformat), so the file was re-muxed or transcoded at least once
The sentence every one of the eight files received. Spec: container.
- evidence
ENF: mains hum
Technique: acoustic-environment consistency. What it measures: a 50 or 60 Hz hum and its stability on short windows. Rule-based and mild on purpose: stable hum is in a third of LJ Speech clips and almost no generated audio, so a learned version would learn "hum = real".
Numbers: flags 24source: README.md, section what-did-not-work test files; never moves a score.
no mains hum at 50 or 60 Hz (best 60 Hz candidate: median SNR 2.8 dB, above 12 dB in 0% of frames): no environment evidence either way
enf: mains hum present, stable (recording-environment evidence)
First sentence from worked example 1; the routing-log line from example 5, a fake with a stable hum. Spec: ENF.
- evidence
Splice and discontinuities
Technique: splice / discontinuity detection. What it measures: sample-level clicks and DC-offset jumps between 100 mssource: README.md, section the-eight-forensic-techniques windows. On this data it finds vocoder artifacts more than edits, and the sponsor said no test clip is partially synthetic, so it is evidence.
Numbers: flags 58source: README.md, section what-did-not-work test files; never moves a score.
editing seam at 1.59 s: 1 click(s) (largest step 17x the surrounding waveform); consistent with a cut or inserted segment (background-floor range 26 dB, informational)
- evidence
Speaker drift
Technique: speaker-embedding consistency. What it measures: ECAPAA pretrained speaker-recognition network that turns a second of speech into a vector describing the voice. Comparing vectors from successive windows shows whether the voice stays the same within a clip. embeddings on one-second windows; flags a voice that changes within the clip. The finding that keeps it out of the score: fakes are the most self-consistent voices, so fused it would push hard real recordings toward synthetic.
Numbers: the mean window-to-window similarity separates classes toward fake at AUC 0.73source: README.md, section what-did-not-work; drift flags 16%source: README.md, section what-did-not-work of test files.
voice drifts across the clip: minimum window-to-window speaker similarity -0.10 over 14 windows
The gate
- gate
Speech gate
Part of the orchestration. What it measures: whether a file contains speech at all, from five cues: not silent, at least 5%source: README.md, section the-eight-forensic-techniques voiced, pitch moving, loudness moving, not spectrally flat. Each threshold was set beyond the extreme value in the full test set, so it only catches silence, tones, static and noise; a file that fails skips fusion and goes to the pinned blockFiles the system cannot judge (no speech, or a failed decode) are placed strictly below every judged file, at the real end of the ranking, in a deterministic order. Under the sponsor's cost, an uncertain file belongs there..
Numbers: gates 0 of 1,671source: README.md, section the-eight-forensic-techniques test files.
speech present: voiced 28% of frames, pitch spread 0.34, loudness std 18.5 dB
Sentence from the README's trace. Spec: the speech gate and the default-answer policy.
All ten in one table
Normalized minDCF unless marked; "inner" is pooled out-of-fold over the inner rows; "ITW FA" is the In-the-Wild real-speech false-alarm rate at the model's own inner-fold threshold; "test > 0.5source: README.md, section numbers" is a sanity check, not a score. Source: the README's Numbers section.