- FlaxSpeaker:
univ_full_conformer_large_arcface(conformer-large)
FlaxSpeaker: univ_full_conformer_large_arcface (conformer - large)
Disclaimer & Reproduction Notice
This is not an officially supported Google product.
This checkpoint and the accompanying
FlaxSpeakerlibrary are a from-scratch re-implementation in JAX/Flax, written using only the published papers (no proprietary code or data), of speaker recognition algorithms from:
- GE2E: Generalized End-to-End Loss for Speaker Verification (arXiv:1710.10467)
- Dr-Vectors: Decision Residual Networks and an Improved Loss for Speaker Recognition (arXiv:2104.01989)
- ATP (pooling head repurposed from a language identification paper): Attentive Temporal Pooling for Conformer-based Streaming Language Identification in Long-form Speech (arXiv:2202.12163)
- PFAS: Parameter-Free Attentive Scoring for Speaker Verification (arXiv:2203.05642)
The original papers were run on Google-internal infrastructure and data; this checkpoint is a full-data open-corpus universal flagship trained on 12,193 speakers (464,557 clean utterances + MUSAN/RIR/speed augmentation) across VoxCeleb2-dev, VoxCeleb1-dev, CN-Celeb 1+2, and LibriSpeech 960h with zero speaker overlap against official evaluation sets.
Training Budget (read this first)
This flagship model was trained for 4,500 gradient steps (warmup 150 steps, batch size 64) over the full multi-corpus universal training pool (VoxCeleb1/2 + CN-Celeb1/2 + LibriSpeech 960h) (12,193 base speakers, 464,557 clean utterances, expanded via 3-way speed perturbation + MUSAN/RIR).
Training-crop provenance. This checkpoint was trained with U(90, 180)-frame variable-length crops and an exact validity mask (the current pipeline default); the shipped config.json / YAML (variable_length_training: true) describes the released weights. Step-0 loss fingerprint at the released seed (scripts/fingerprint_released_checkpoints.py, pretrained_models/step0_fingerprints.json): archived 2.7714; current code with fixed 180-frame crops 2.6614, with U(90, 180) crops 2.7714 (match: variable). Evaluating the released weights with the current code reproduces the archived metrics in eval_results.json. At the converged S_safe budget, the seed-to-seed standard deviation of pooled 1-utt EER across seeds 0-2 is 0.08-0.41 % absolute (pretrained_models/r2_seed_and_control_results.json), while the 8,000-trial 95 % bootstrap CI half-width is ~0.8 %.
Model Summary
| Property | Value |
|---|---|
| Model ID | univ_full_conformer_large_arcface |
| Hugging Face Repository | wq2012/univ_full_conformer_large_arcface |
| Hugging Face Collection | FlaxSpeaker Collection |
| GitHub Repository | wq2012/FlaxSpeaker |
| PyPI Package | flaxspeaker |
| Backbone Architecture | conformer (large) |
| Temporal Pooling | atp |
| Training Objective | arcface (arcface) |
| Verification Scorer | Cosine similarity (cosine) |
| Output Representation Dim | 256 |
| Inference Parameters (encoder + scoring head; excludes training-only classifier weights) | 6,983,364 |
| Training Data | VoxCeleb2-dev + VoxCeleb1-dev + CN-Celeb1/2 + LibriSpeech 960h (full multi-domain SOTA flagship, 12,193 speakers, 464,557 utterances) |
| Training Steps / Batch | 4,500 steps x 64 utterances (~0.62 epochs), seed 42 |
| Audio Frontend | 80-dim natural-log Mel @ 16000 Hz + frame-level energy VAD + CMVN (flaxspeaker.AudioFrontend; not a Hugging Face AutoFeatureExtractor) |
Model Files Included
model.safetensors: model weights (encoder + GE2Ew,b/ Dr-Vector / PFAS heads) in SafeTensors formatflax_model.msgpack: native Flax Msgpack serialized parametersconfig.json:FlaxSpeakerConfig(fullExperimentConfig, incl. the frontend/VAD settings)eval_results.json: multi-domain evaluation metrics (1-utt & 3-utt EER, minDCF, ROC-AUC, 95% bootstrap CIs, VoxCeleb1-O 10-speaker subset)model_fp32.tflite/model_int8.tflite:jax2tfexports of the encoder only with a fixed, unmasked 180-frame (1.8 s) input window[1, 180, 80]->[1, 256]. All EERs in the main tables below come from full-sequence masked JAX inference (up to 3000 frames / 30 s); the TFLite models see a centre crop and the reported cosine fidelity (>= 0.9999 vs. JAX) was measured on 180-frame inputs.- Measured 180-frame TFLite 1-utt EER (VoxCeleb1-O official (37,611 trials, 180-frame center crop)): FP32 17.24%, INT8 17.25%, mean
cos(FP32, INT8)=0.999977(vs. full-sequence masked JAX:14.59%)
- Measured 180-frame TFLite 1-utt EER (VoxCeleb1-O official (37,611 trials, 180-frame center crop)): FP32 17.24%, INT8 17.25%, mean
Quickstart Usage
Python API (from Hugging Face Hub or Local Directory)
Requires flaxspeaker >= 0.5.0 (pip install -U flaxspeaker).
from flaxspeaker import load_pretrained
model = load_pretrained("wq2012/univ_full_conformer_large_arcface")
emb = model.extract_embedding("path/to/utterance.flac")
score = model.verify("path/to/enroll.flac", "path/to/test.flac")
print(f"Embedding shape: {emb.shape}, Verification score: {score:.4f}")
Command-Line Inference
python scripts/inference.py --model_dir wq2012/univ_full_conformer_large_arcface \
--enroll_audio path/to/enroll.flac --test_audio path/to/test.flac
Official Zero-Shot Speaker Verification Benchmarks
| Benchmark | Trials | Raw EER (%) | AS-Norm EER (%) | AS-Norm + QMF EER (%) | minDCF@0.01 | ROC-AUC |
|---|---|---|---|---|---|---|
VoxCeleb1-O (veri_test2.txt, 40 spks) |
37,611 | 14.59% | 13.90% | 13.87% | 0.9300 | 0.9386 |
CN-Celeb-E (eval/lists/trials.lst, 200 spks) |
3,484,292 | 20.12% | 19.73% | 19.49% | 0.9689 | 0.8921 |
CN-Celeb-E Multi-Enroll (enroll.map) |
3,484,292 | 18.60% | 17.69% | β | 0.9733 | 0.9025 |
LibriSpeech test-clean (40 spks) |
10,000 | 9.48% | 8.50% | 7.95% | 0.7330 | 0.9667 |
LibriSpeech test-clean (3-Utt) |
3,000 | 6.23% | 5.53% | β | 0.4113 | 0.9867 |
Multi-Domain Evaluation Results
1-Utterance Verification Across Evaluation Domains
Trial lists are 50/50 target/impostor over held-out speakers (LibriSpeech 40, CN-Celeb2 30, VoxCeleb1 10 speakers); minDCF@0.01 is close to its trivial ceiling of 1.0 for every model under this trial mix.
| Evaluation Split | Trials | Raw EER (%) | AS-Norm EER (%) | 95% Bootstrap CI (%) | minDCF@0.01 | minDCF@0.10 | ROC-AUC |
|---|---|---|---|---|---|---|---|
| LibriSpeech (English Read) | 3,000 | 9.03% | 8.73% | [8.07, 10.10] | 0.7227 | 0.4360 | 0.9686 |
| CN-Celeb2 (Chinese Multi-Genre) | 3,000 | 16.43% | 16.77% | [15.16, 17.99] | 0.9173 | 0.7040 | 0.9178 |
| VoxCeleb1 (In-the-Wild Celebrity) | 2,000 | 15.40% | 14.80% | [13.80, 17.35] | 0.7380 | 0.7160 | 0.9281 |
| Universal Pooled (All 3 Domains) | 8,000 | 13.89% | 14.15% | [13.12, 14.64] | 0.8965 | 0.6140 | 0.9413 |
| Universal Macro-Average (3 Domains) | β | 13.62% | 13.43% | β | 0.7927 | 0.6187 | 0.9382 |
3-Utterance Multi-Enrollment Verification Across Evaluation Domains
| Evaluation Split | Trials | 3-Utt EER (%) | 95% Bootstrap CI (%) | minDCF@0.01 | ROC-AUC |
|---|---|---|---|---|---|
| LibriSpeech (3-Utt) | 1,000 | 6.80% | [5.20, 8.40] | 0.4140 | 0.9850 |
| CN-Celeb2 (3-Utt) | 1,000 | 11.60% | [9.65, 13.30] | 0.8380 | 0.9576 |
| VoxCeleb1 (3-Utt) | 1,000 | 11.70% | [9.60, 13.80] | 0.8020 | 0.9566 |
| Universal Pooled (3-Utt) | 3,000 | 9.97% | [8.90, 11.07] | 0.7933 | 0.9668 |
| Universal Macro-Average (3-Utt) | β | 10.03% | β | 0.6847 | 0.9664 |
Single seed; the 95% bootstrap CIs resample trials (not speakers). Differences below about 1% absolute EER between FlaxSpeaker checkpoints are within the seed-to-seed variation measured in pretrained_models/r2_seed_and_control_results.json (see the GitHub README) and should not be interpreted as rankings.
Deviations from the Source Papers
- Training regime: 4,500 gradient steps x 64 utterances (~0.62 epochs) across 12,193 base speakers (464,557 clean utterances + 3x speed perturbation + MUSAN/RIR).
- Augmentation: corpus-backed MUSAN environmental noise, music, and multi-speaker babble + RIRS_NOISES room impulse responses + 3-way polyphase speed perturbation (
0.9x,1.0x,1.1x) + SpecAugment. - Conformer: parallel linear + Conv1D stem, no positional encoding, 4 blocks x 320-D, 8 heads, kernel 15, mask-aware GroupNorm(2), no dropout, multi-layer feature aggregation; the Google papers use 12 x 512 blocks, 4-8 heads, kernel 32, relative positional encoding and dropout.
- ATP pooling: 4 heads with a tanh bottleneck (128-D) and
subspace_heads = True; the papers use a single head with a linear-sigmoid weight (attention_dim = 0). Note that arXiv:2202.12163 is a language-identification paper whose pooling head is repurposed here. - Frontend: 80-D natural-log Mel + frame-level energy VAD (26 dB dynamic range) + CMVN; evaluation processes up to 1024 frames (10.2 s).
Citation
@inproceedings{wan2018generalized,
title={Generalized End-to-End Loss for Speaker Verification},
author={Wan, Li and Wang, Quan and Papir, Alan and Moreno, Ignacio Lopez},
booktitle={IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={4879--4883},
year={2018}
}
@inproceedings{pelecanos2021dr,
title={Dr-Vectors: Decision Residual Networks and an Improved Loss for Speaker Recognition},
author={Pelecanos, Jason and Wang, Quan and Moreno, Ignacio Lopez},
booktitle={Interspeech},
pages={4603--4607},
year={2021}
}
@inproceedings{wang2022attentive,
title={Attentive Temporal Pooling for Conformer-based Streaming Language Identification in Long-form Speech},
author={Wang, Quan and Yu, Yang and Pelecanos, Jason and Huang, Yiling and Moreno, Ignacio Lopez},
booktitle={The Speaker and Language Recognition Workshop (Odyssey)},
year={2022}
}
@inproceedings{pelecanos2022parameter,
title={Parameter-Free Attentive Scoring for Speaker Verification},
author={Pelecanos, Jason and Wang, Quan and Huang, Yiling and Moreno, Ignacio Lopez},
booktitle={The Speaker and Language Recognition Workshop (Odyssey)},
year={2022}
}
- Downloads last month
- 138