A lightweight toolkit for running passive and active speaker‑verification (SV) experiments and evaluating them with standard metrics (EER, minDCF). Utilities are included for signal‑quality features (SNR/C50) and basic VAD to help you control test conditions.
Reproducible SV evaluation depends on how you probe the system:
This repo provides both flows so you can compare protocols under the same codebase and metrics.
passive.py and active.py pipelines.verification.py.compute_EER.py, minimum DCF via compute_min_dcf.py.snr_c50_vad.py.This is a plain‑Python repo. Create an environment and install common audio/ML deps:
python -m venv .venv && source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install numpy scipy scikit-learn librosa soundfile tqdm matplotlib
Tip: run
python <script>.py -hto see the exact CLI flags each script supports.
You can use any SV dataset with enrollment and test utterances (e.g., VoxCeleb, in‑house data). A minimal structure:
data/
enroll/
spk1/ utt1.wav, utt2.wav ...
spk2/ ...
test/
spk1/ xxxxx.wav
spk3/ ...
Prepare a trials file mapping enrollment ↔ test pairs if your protocol requires it (format up to your script arguments).
python passive.py \
--enroll-dir data/enroll \
--test-dir data/test \
--trials trials.tsv \
--out runs/passive/scores.tsv
Collect/curate trials interactively or by rule before scoring.
python active.py \
--enroll-dir data/enroll \
--test-dir data/test \
--strategy prompt \
--out runs/active/scores.tsv
Compute EER:
python compute_EER.py --scores runs/passive/scores.tsv --out runs/passive/eer.txt
Compute minDCF (set target prior & costs as needed):
python compute_min_dcf.py \
--scores runs/passive/scores.tsv \
--p-target 0.01 --c-miss 1 --c-fa 1 \
--out runs/passive/min_dcf.txt
Estimate SNR / C50 and run a simple VAD to filter frames:
python snr_c50_vad.py --in data/test --out features/test_quality.json
--seed).runs/<...>/args.json.| Protocol | EER (%) | minDCF@p=0.01 | Notes |
|---|---|---|---|
| Passive | – | – | baseline |
| Active | – | – | prompt‑then‑retry |
2 commits
Python
100.0%
A lightweight toolkit for running passive and active speaker‑verification (SV) experiments and evaluating them with standard metrics (EER, minDCF). Utilities are included for signal‑quality features (SNR/C50) and basic VAD to help you control test conditions.
Reproducible SV evaluation depends on how you probe the system:
This repo provides both flows so you can compare protocols under the same codebase and metrics.
passive.py and active.py pipelines.verification.py.compute_EER.py, minimum DCF via compute_min_dcf.py.snr_c50_vad.py.This is a plain‑Python repo. Create an environment and install common audio/ML deps:
python -m venv .venv && source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install numpy scipy scikit-learn librosa soundfile tqdm matplotlib
Tip: run
python <script>.py -hto see the exact CLI flags each script supports.
You can use any SV dataset with enrollment and test utterances (e.g., VoxCeleb, in‑house data). A minimal structure:
data/
enroll/
spk1/ utt1.wav, utt2.wav ...
spk2/ ...
test/
spk1/ xxxxx.wav
spk3/ ...
Prepare a trials file mapping enrollment ↔ test pairs if your protocol requires it (format up to your script arguments).
python passive.py \
--enroll-dir data/enroll \
--test-dir data/test \
--trials trials.tsv \
--out runs/passive/scores.tsv
Collect/curate trials interactively or by rule before scoring.
python active.py \
--enroll-dir data/enroll \
--test-dir data/test \
--strategy prompt \
--out runs/active/scores.tsv
Compute EER:
python compute_EER.py --scores runs/passive/scores.tsv --out runs/passive/eer.txt
Compute minDCF (set target prior & costs as needed):
python compute_min_dcf.py \
--scores runs/passive/scores.tsv \
--p-target 0.01 --c-miss 1 --c-fa 1 \
--out runs/passive/min_dcf.txt
Estimate SNR / C50 and run a simple VAD to filter frames:
python snr_c50_vad.py --in data/test --out features/test_quality.json
--seed).runs/<...>/args.json.| Protocol | EER (%) | minDCF@p=0.01 | Notes |
|---|---|---|---|
| Passive | – | – | baseline |
| Active | – | – | prompt‑then‑retry |
2 commits
Python
100.0%