Systems and subsystems

Splice and discontinuity detection

Looks for the seams an edit leaves: a single-sample click, or a jump in the DC offset between short windows. On this data it finds vocoder artifacts more often than edits, and the sponsor said no test clip is partially synthetic, so it is evidence.

In plain words

Inserting or replacing words in a recording leaves a spliceA discontinuity where audio was cut or inserted: a single-sample click or a jump in the DC offset between windows. Evidence of editing, though on this data it mostly finds vocoder artifacts., a discontinuity where the cut is, unless the editor is careful. Two cheap signals catch careless cuts: a sample step far larger than its neighbours, and a shift in the waveform's mean between one window and the next. On the training data those signals fire on several generators' outputs and on some real LibriSpeech clips alike, so they describe artifacts, not the class.

What goes in and comes out

In: the clip normalized to peak 1. Out: the counts and sizes of clicks and DC jumps, the time of the first seam, an informational background-floor range, and a sentence such as 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), or no clicks or DC-offset jumps: no sign of a cut or inserted segment.

Where it lives

detectors/splice.py.

Parameters and where each is set

Status

Built; evidence only.

Numbers

On training data the seams are single-sample clicks in 27%source: README.md, section what-did-not-work of WaveGrad2 and DC jumps in 9–13%source: README.md, section what-did-not-work of several generators and 9%source: README.md, section what-did-not-work of LibriSpeech. It flags 58source: README.md, section what-did-not-work test files; in the ablation 504source: README.md, section orchestration-what-routing-changes holdout rows, without moving a score.

Known limits

A plosive can look like a click; the local-RMS rule and the absolute floor are what keep it from firing on speech, and a test pins that a burst is not a click. The rubric's phase breaks and background seams beyond DC are not measured.

Tests that pin it

tests/test_splice_detector.py: a continuous signal is neutral, a click is a seam at the right time, a DC jump is a seam, a plosive burst is not a click, short and silent clips, the contract, the analysis keys, registration.

Sources

The CPU detectors report, "Splice / discontinuity detector"; worked example 8.