Skip to page content
SAVRN
Search Plan a project

Open-weight model · Feature extraction

univ_conformer_small_ge2e_contrast

by Quan wq2012/univ_conformer_small_ge2e_contrast

univ_conformer_small_ge2e_contrast is an open-weight model for feature extraction from Quan, released under Apache License 2.0. It has 2M parameters. At 16-bit it needs about 0 GB of GPU memory, which fits on 1x MI300X from $1.85 an hour, at the lowest prices in the SAVRN Index. It draws 57 downloads a month.

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42).

Parameters2M
Context—
Weights16.3 MB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads57

Runs On

What it takes to serve univ_conformer_small_ge2e_contrast (2M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 0.0 GB 0.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 0.0 GB 0.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.0 GB 0.0 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Oct 23, 2026.

univ_conformer_small_ge2e_contrast on every accelerator the SAVRN Index prices, at every precision

Model Card

By Quan, published under apache-2.0, revision 5d3b794a89c7.

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. 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 (variablelengthtraining: true) describes the released weights. Step-0 loss…

Read Quan's full model card

FlaxSpeaker: univ_conformer_small_ge2e_contrast (conformer - small)

Disclaimer & Reproduction Notice

This is not an officially supported Google product.

This checkpoint and the accompanying FlaxSpeaker library 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 experiments in those papers were run on Google-internal infrastructure and data, not with this library. This is a 400-step demonstration checkpoint, not a reproduction of the papers' results -- see Training budget and Deviations from the source papers below.

Training Budget (read this first)

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget.

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 1.0001; current code with fixed 180-frame crops 1.0001, with U(90, 180) crops 1.0001 (match: both). Both crop regimes reproduce the archived 4-decimal step-0 loss (fixed 1.0001, variable 1.0001); the crop regime is assigned from the git history, not from the fingerprint. Evaluating the released weights with the current code reproduces the archived metrics in eval_results.json. The seed-to-seed standard deviation of pooled 1-utt EER at this budget is about 0.7-0.8 % absolute, so sub-1.5 % differences between checkpoints are not rankings.

For orientation only: published ECAPA-TDNN systems trained on VoxCeleb2-dev reach about 0.9% EER on the full VoxCeleb1-O list (Desplanques et al., 2020), and sub-1M-parameter systems about 2% (Wang et al., EfficientTDNN, 2022). The 400-step checkpoints released here are 10-30x worse than that and are intended for relative comparisons within the FlaxSpeaker benchmark, not as state-of-the-art models.

Model Summary

Property Value
Model ID univ_conformer_small_ge2e_contrast
Hugging Face Repository wq2012/univ_conformer_small_ge2e_contrast
Hugging Face Collection FlaxSpeaker Collection
GitHub Repository wq2012/FlaxSpeaker
PyPI Package flaxspeaker
Backbone Architecture conformer (small)
Temporal Pooling atp
Training Objective GE2E hybrid contrast surrogate (FlaxSpeaker; value = Wan et al. Eq. 7, gradient = 0.25 Eq. 7 + 0.25 BCE + 0.50 GE2E-softmax CE; ge2e_init_b = -1) (ge2e_contrast)
Verification Scorer Cosine similarity (cosine)
Output Representation Dim 192
Inference Parameters (encoder + scoring head; excludes training-only classifier weights) 2,029,894
Training Data LibriSpeech + CN-Celeb2 + VoxCeleb1 (universal multi-domain, 381 speakers)
Training Steps / Batch 400 steps x 32 utterances, 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 + GE2E w,b / Dr-Vector / PFAS heads) in SafeTensors format
  • flax_model.msgpack: native Flax Msgpack serialized parameters
  • config.json: FlaxSpeakerConfig (full ExperimentConfig, 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)

Quickstart Usage

Python API (from Hugging Face Hub or Local Directory)

Requires flaxspeaker >= 0.3.0 (pip install -U flaxspeaker); the 0.2.0 wheel on PyPI predates the released checkpoints and cannot load them.

from flaxspeaker import load_pretrained

model = load_pretrained("wq2012/univ_conformer_small_ge2e_contrast")
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_conformer_small_ge2e_contrast \
    --enroll_audio path/to/enroll.flac --test_audio path/to/test.flac

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); [email protected] is close to its trivial ceiling of 1.0 for every model under this trial mix.

Evaluation Split Trials EER (%) 95% Bootstrap CI (%) [email protected] [email protected] ROC-AUC
LibriSpeech (English Read) 3,000 14.73% [13.58, 16.12] 0.9080 0.6727 0.9276
CN-Celeb2 (Chinese Multi-Genre) 3,000 23.27% [21.60, 24.67] 0.9647 0.8553 0.8450
VoxCeleb1 (In-the-Wild Celebrity) 2,000 24.45% [22.60, 26.35] 0.9460 0.9130 0.8411
Universal Pooled (All 3 Domains) 8,000 20.69% [19.83, 21.50] 0.9648 0.8110 0.8758
Universal Macro-Average (3 Domains) — 20.82% — 0.9396 0.8137 0.8712
VoxCeleb1-O 10-speaker subset (see caveat) 2,500 25.33% [23.29, 27.46] 0.9642 0.9230 0.8289

Caveat: VoxCeleb1-O 10-speaker subset: the official veri_test2.txt list filtered to trials whose enrollment and test speakers are both among the 10 held-out evaluation speakers (2,500 trials, ~72% target). Not comparable to published VoxCeleb1-O numbers; the other 30 of the 40 official test speakers are used as training data by vox_* and univ_* models.

3-Utterance Multi-Enrollment Verification Across Evaluation Domains

Evaluation Split Trials 3-Utt EER (%) 95% Bootstrap CI (%) [email protected] ROC-AUC
LibriSpeech (3-Utt) 1,000 8.30% [6.75, 10.35] 0.6960 0.9721
CN-Celeb2 (3-Utt) 1,000 17.10% [14.65, 19.80] 0.9240 0.8969
VoxCeleb1 (3-Utt) 1,000 19.40% [17.00, 21.95] 0.9640 0.8866
Universal Pooled (3-Utt) 3,000 15.33% [14.10, 16.67] 0.9073 0.9232
Universal Macro-Average (3-Utt) — 14.93% — 0.8613 0.9185

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: 400 gradient steps x 32 utterances (N = 8 speakers x M = 4) on <= 25 utterances/speaker from 381 (universal) or fewer speakers; the source papers train for ~500k steps with N = 16-64 / M = 8-10 on thousands of speakers.
  • Augmentation: synthetic log-Mel-domain noise + one-tap smoothing (specaug.apply_feature_mtr_augmentation), not waveform MTR with recorded noise/RIR corpora.
  • Objective: hybrid contrast surrogate (gradient = 0.25 Eq. 7 + 0.25 BCE + 0.50 softmax-CE) with ge2e_init_b = -1, not Wan et al. Eq. 7 alone. Set ge2e_contrast_surrogate: false for the pure Eq. 7 gradient.
  • Conformer: parallel linear + Conv1D stem, no positional encoding, 3 blocks x 192-D, 4 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 centre-crops to at most 500 frames (5 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}
}

Configuration

Model type
flaxspeaker

Identity and Version

Repository
wq2012/univ_conformer_small_ge2e_contrast
Publisher
Quan
Task
Feature extraction
Modality
Text
Library
flaxspeaker
Parameters
2M parameters
Languages
jax
Revision
5d3b794a89c72e1b65fa66a8456cb7dc4bdac76b
First published
2026-10-15
Last updated
2026-10-22

Files and Weights

6 files, 16.3 MB in total. The weights are 2 files totalling 16.3 MB in msgpack, safetensors.

Weights2 files · 16.3 MB
Configuration2 files · 16.8 KB
Documentation1 file · 11.0 KB
Repository1 file · 1.5 KB
Every file
FileTypeSizeSHA-256
flax_model.msgpackWeights8.1 MB e68fd1f47c0e
model.safetensorsWeights8.1 MB fef7552e22f6
config.jsonConfiguration9.7 KB —
eval_results.jsonConfiguration7.0 KB —
README.mdDocumentation11.0 KB —
.gitattributesRepository1.5 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
16.3 MB
Download from Quan

Released by Quan through its official repository on Hugging Face. Read the license.

Built From

Memory Requirements

PrecisionWeights in memory
As published16.3 MB
16-bit0.0 GB
8-bit0.0 GB
4-bit0.0 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About univ_conformer_small_ge2e_contrast

How much GPU memory does univ_conformer_small_ge2e_contrast need?

About 0 GB at 16-bit and 0 GB at 4-bit: the weights (2M parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run univ_conformer_small_ge2e_contrast on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use univ_conformer_small_ge2e_contrast commercially?

Yes. univ_conformer_small_ge2e_contrast is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Model · Feature extraction

univ_conformer_small_ge2e

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. This checkpoint was trained with fixed 180-frame (1.8 s) crops and all-ones validity masks, not with the U(90, 180) variable-length crops that are the current pipeline default: the training code in use at the time defaulted the batchers to…

Open weights apache-2.0 2M parameters flaxspeaker

Model · Feature extraction

vox_conformer_small_ge2e

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. This checkpoint was trained with fixed 180-frame (1.8 s) crops and all-ones validity masks, not with the U(90, 180) variable-length crops that are the current pipeline default: the training code in use at the time defaulted the batchers to…

Open weights apache-2.0 2M parameters flaxspeaker

Model · Feature extraction

univ_conformer_small_arcface

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. This checkpoint was trained with fixed 180-frame (1.8 s) crops and all-ones validity masks, not with the U(90, 180) variable-length crops that are the current pipeline default: the training code in use at the time defaulted the batchers to…

Open weights apache-2.0 2M parameters flaxspeaker

Model · Feature extraction

univ_conformer_small_triplet

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. The crop regime of this checkpoint cannot be established from the step-0 loss fingerprint (its triplets were drawn from an unseeded random stream by the training code in use at the time); the git history indicates variable-length crops…

Open weights apache-2.0 2M parameters flaxspeaker

Model · Feature extraction

univ_conformer_small_sphereface

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. This checkpoint was trained with fixed 180-frame (1.8 s) crops and all-ones validity masks, not with the U(90, 180) variable-length crops that are the current pipeline default: the training code in use at the time defaulted the batchers to…

Open weights apache-2.0 2M parameters flaxspeaker

Model · Feature extraction

univ_conformer_small_ext_softmax

Quan

This model was trained for 400 gradient steps with mini-batches of 32 utterances (8 speakers x 4 utterances), i.e. about 1.35 epochs over the 9,447-utterance universal corpus, on a CPU workstation, with a single seed (42). Losses are not converged at this budget. All EERs below are therefore far from state of the art and are only meaningful for relative comparisons between FlaxSpeaker checkpoints trained under the same budget. Training-crop provenance. This checkpoint was trained with fixed 180-frame (1.8 s) crops and all-ones validity masks, not with the U(90, 180) variable-length crops that are the current pipeline default: the training code in use at the time defaulted the batchers to…

Open weights apache-2.0 2M parameters flaxspeaker