The story
Credits and AI use
We used AI coding assistants heavily, and we say so plainly. The team decided what to build and why; Claude Code built it under our direction; Codex reviewed plans and audited finished rungs; two strategy questions went to an outside multi-model review. Nothing on the scoring path calls a hosted model.
AI use, in short
- Claude Code (Anthropic) wrote most of the code and documents under our direction, in parallel sessions per rung: loader, metrics, fold file, the M1 probe, the engineered detectors, M3 scoring, the M5 cloud pipeline, the fusion sweep, the runner, the API, the Docker image, the documentation, and this site and its generator. We chose the approach, set the gates and selection rules, reviewed results and made every ship decision.
- OpenAI Codex (Codex CLI) reviewed plans and audited finished rungs through our plan-review workflow.
- Outside consults. Two strategy questions, one on M5's extra data and one on fusion, went to an outside multi-model review (VeriLM; the fusion memo was answered by Claude and Gemini with a synthesis). The prompts and answers are saved in the repository, and we record which advice we adopted and which we ignored: see the consult records.
- No AI on the scoring path. No LLM or hosted API runs at inference; the runner loads every model from local files, and the Docker image runs with networking off.
The full disclosure, including which components each tool touched and what we built versus what the AI wrote, component by component, is kept current in CLAUDE.md, "AI use disclosure"; the README's summary is at "AI use and credits".
Pretrained models
| Model | Source | Licence | How we used it |
|---|---|---|---|
XLS-R 300M, facebook/wav2vec2-xls-r-300m | Hugging Face (Meta) | Apache-2.0 | Frozen backbone for M1/M1b (layer 7) and M5 (first 12 layers); both are fused |
Spectra-AASIST, lab260/Spectra-AASIST | Hugging Face | unclear: repo header says Apache-2.0, model card says MIT | M3, scored off the shelf, false-alarm suppression only |
ECAPA-TDNN, speechbrain/spkrec-ecapa-voxceleb | Hugging Face (SpeechBrain) | Apache-2.0 | Speaker-drift evidence |
WavLM Large / Base, microsoft/wavlm-large, microsoft/wavlm-base | Hugging Face (Microsoft) | no licence on the card; released through Microsoft's unilm repo (MIT) | Downloaded as bake-off challengers; never run |
Datasets
| Dataset | Source | Licence | How we used it |
|---|---|---|---|
| NSA HEARSAY data: test set, resampled LJ subset, DiffSSD, ASVspoof5 scoring code | NSA, provided during the event | event terms | Test set; training sample and fold file; metric reference |
| LJ Speech 1.1source: README.md, section datasets | keithito.com | public domain | Real speech (one speaker); training |
| LibriSpeech dev-clean / test-clean | openslr.org/12 | CC BY 4.0source: README.md, section datasets | Real speech (multi-speaker); training |
| ASVspoof 2019 LA | University of Edinburgh DataShare | ODC Attribution | Public shakedown of M1; 40 VCTK real speakers and an A01–A06 anchor as training-only rows for M1b and M5 |
In-the-Wild (Müller et al. 2022), mueller91/In-The-Wild | Hugging Face | CC-BY-SA-4.0 on Hugging Face; Apache-2.0 on deepfake-total.com | Stress test only; never trained on |
MLAAD, mueller91/MLAAD | Hugging Face (gated) | non-commercial notice | 6,180source: README.md, section datasets fake clips from 143source: README.md, section datasets TTS models, training-only for M5 |
Source: the README's models table and datasets table.
Frameworks and tools
PyTorch and torchaudio (BSD), Hugging Face transformers and huggingface_hub (Apache-2.0), SpeechBrain (Apache-2.0), librosa (ISC), soundfile (BSD-3-Clause), NumPy, SciPy, scikit-learn and pandas (BSD-3-Clause), LightGBM (MIT, training only), pydub (MIT), ffmpeg-python (Apache-2.0), FFmpeg (LGPL/GPL), FastAPI (MIT) and uvicorn (BSD-3-Clause) for the local API, pytest and ruff for tests and lint, uv for environments, Docker with Colima for the image, vast.ai A100s and Cloudflare R2 for the M5 runs. This site: a standard-library Python generator, Mermaid (MIT) rendered once to SVG, and no runtime dependency. Source: the README.
The team
Created by Nathan, Hrushi & Tharakesh. Team Cross Exam at HackGT 13. Nathan (@nrstough) owned the deep detectors, the fold file, fusion, the orchestrator and the TSV; teammates owned the engineered detectors and the Docker image; Hrushi built the demo frontend against the pipeline's JSON contract. The component-by-component table of who decided what and what the AI wrote is in CLAUDE.md.