Views
No views yet
MMpaper_model.pth (the paper's released model)xlsr_sls.py; the network definition is in _net.py.fairseq Wav2Vec2Model) producing 1024-d frame features from all 24
transformer layers.fc0 → sigmoid); the gates re-weight the full per-layer feature
stack, which is summed across layers. The fused feature passes through
BatchNorm + SELU + 3×3 max-pool, is flattened, and goes through a two-layer
MLP (fc1: 22847→1024, fc3: 1024→2).fc1 expects a 22,847-d flatten,
so the 64,600-sample window is mandatory at inference.| Dataset | Split | EER % | Trials | Skipped | W2V2-AASIST† | Notes |
|---|---|---|---|---|---|---|
| ASVspoof2019_LA | test | 0.23 | 71,237 | 0 | 0.22 | in-domain (training data) |
| ASVspoof2021_LA | test | 7.39 | 181,566 | 0 | 8.11 | cross-dataset generalization |
| ASVspoof2021_DF | test | 3.93 | 611,829 | 0 | 8.32 | cross-dataset generalization |
| InTheWild | test | 7.46 | 31,779 | 0 | 11.22 | out-of-domain (real-world deepfakes) |
| CD-ADD | test | 9.81 | 20,786 | 0 | 38.57 | out-of-domain (modern neural-TTS) |
| SONAR | test | 24.19 | 3,948 | 0 | — | out-of-domain (multi-generator deepfakes) |
| LibriSeVoc | test | 1.86 | 18,487 | 0 | — | out-of-domain (vocoder artifacts) |
| CFAD | test | 12.81 | 62,999 | 0 | — | out-of-domain (Chinese audio deepfakes) |
| CVoiceFake_small | test | 10.53 | 138,136 | 0 | — | out-of-domain (multilingual TTS/vocoder) |
| ASVspoof5 | test | 18.76 | 680,774 | 0 | — | out-of-domain (ASVspoof5 eval) |
| ADD22_eval_31 | test | 14.31 | 112,861 | 0 | — | out-of-domain (ADD 2022 Mandarin Track-3 fake-game) |
state_dict for the Model network defined in
_net.py. Constructing the network requires the base XLS-R 300M
checkpoint xlsr2_300m.pt (only used to build the wav2vec 2.0 architecture;
every weight is then overwritten by MMpaper_model.pth):wget https://dl.fbaipublicfiles.com/fairseq/wav2vec/xlsr2_300m.ptpad_fixed (first 64,600 samples, tile-repeat if shorter).1import numpy as np
2from xlsr_sls import XLSRSLS # _net.py + xlsr_sls.py are in this repo
3
4m = XLSRSLS()
5m.load() # loads MMpaper_model.pth (+ xlsr2_300m.pt)
6audio = np.random.randn(48000).astype(np.float32) # float32 mono 16 kHz
7print(m.score_batch([audio], [16000])[0]) # higher = more bona fide
8m.unload()output[:, 1] (class 1 = bona fide; source main.py: batch_score = batch_out[:, 1]). xlsr_sls.py is the exact
speech_spoof_bench model that produced the Arena scores.txt.1@inproceedings{zhang2024audio,
2 title={Audio Deepfake Detection with Self-Supervised XLS-R and SLS Classifier},
3 author={Zhang, Qishan and Wen, Shuangbing and Hu, Tao},
4 booktitle={Proceedings of the 32nd ACM International Conference on Multimedia},
5 pages={6765--6773},
6 year={2024},
7 doi={10.1145/3664647.3681345}
8}