Systems and subsystems

Segment preparation and band match

Training and test audio must look the same to a detector, or the detector learns the difference instead of the voice. This stage low-passes every clip at the test set's roll-off, trims silence, crops training rows to test-like lengths, caps the length and normalizes the level.

In plain words

The test files carry a wall in their spectrum at about 7.2 kHzsource: README.md, section what-worked that no training corpus has, and they are shorter, louder and start faster than the training clips. Each of those differences is a shortcutA difference between training and test data that a model can exploit instead of listening to the voice: peak level, leading silence, clip length, container fields, a missing high band. Each one found was closed before it could be learned. a model would happily learn. So every clip, train and test, deep path and engineered path, goes through the same preparation before a detector sees it. The band matchA low-pass filter applied to every clip, training and test alike, so that the test set's roll-off above about 7 kHz is no longer a fingerprint that separates test audio from training audio. alone took the handcrafted detector from calling 90%source: README.md, section what-worked of the test set synthetic to 42%source: README.md, section what-worked.

What goes in and comes out

In: a 16 kHz mono array, and for training rows a crop length drawn from the test set's duration distribution and a seed. Out: the prepared segment. Training rows are cropped; test rows are never cropped, padded or tiled.

Where it lives

prepare_segment, normalize_windows, embed_segment and test_duration_sampler in embed.py; band_limit and _crop in handcrafted.py. Spectra-AASIST's input path is exactly prepare_segment; M5 uses the same steps in a slightly different order (trim, then band-limit) that differs by at most one 20 ms frame.

Parameters and where each is set

Status

Built. The deep path gained the band match at about 04:20 on Saturday; every deep number on this site postdates it (the earlier v2 probe numbers are marked as pre-band-match in the README's tables).

Numbers

Length parity alone was worth 0.05source: README.md, section what-worked for the handcrafted detector (0.709source: README.md, section what-worked → 0.661source: README.md, section what-worked). Band matching and real-speaker diversity together took the probe's holdout from 0.159source: README.md, section what-worked to 0.072source: README.md, section what-worked.

Known limits

The wall is matched, not explained: the codec hunt found no MP3 or AAC setting that reproduces it better than this filter, so the test set's low-pass is treated as a resampler's anti-alias filter. Even band-matched, the test recordings keep a darker spectral envelope that the handcrafted features can see (the test-domain offset on What did not work).

Tests that pin it

tests/test_audio_and_submission.py: no tiling and deterministic crops, the sampler's draws match the test range, the band match pushes energy above the cutoff below one part in ten thousand while leaving the 1 kHz passband alone, normalization removes level and offset. tests/test_spectra.py pins that Spectra's input path is prepare_segment; tests/test_m5_crops.py pins M5's deploy path; tests/test_compression_detector.py pins the effective bandwidth after the filter.

Sources

The CPU detectors report, "Trap 2"; Architecture, invariant 2; the shortcut ledger.