This repository contains the official implementation and experimental setup for the paper:
Closed-Set Speaker Identification using Few-Shot Transductive Learning
Gabriel Pîrlogeanu, Ana Neacșu, Horia Cucu, Jean-Christophe Pesquet, Ismail Ben Ayed
Presented at EUSIPCO 2025
Closed-set unseen speaker identification plays a critical role in applications such as forensics, fraud detection, and speaker retrieval.
We address this task through the Few-Shot for A Single Class (FSAiC) method — a tuning-free transductive learning approach designed for identifying an unseen speaker from a large watchlist using only a few short utterances.
- Closed-set scenario: all queries come from enrolled watchlist speakers unseen during training.
- Few-shot transductive setting: single speaker per query set, with 1–5 utterances.
- Scalable to hundreds of classes.
- Outperforms state-of-the-art inductive and transductive baselines.
We propose FSAiC — Few-Shot for A Single Class — which leverages a maximum likelihood formulation tailored to the single-class query scenario.
Unlike conventional few-shot learning setups, our method efficiently handles large support sets while remaining tuning-free.
The pretrained models (/models) were trained using the ECAPA-TDNN repo and the already extracted features from the audio splits used in the paper can be found here.
Conda installation:
# clone repo
git clone https://github.com/gabitza-tech/few-shot-si.git
cd few-shot-speaker-identification
# create and activate environment
conda env create -f environment.ymlYou can run few-shot evaluations using our scripts in src/.
export PYTHONPATH=$(pwd)
python3 src/few_shot.py <embeddings_path> <out_dir> False <k_shots> <seed>
-
<embeddings_path> — path to the precomputed embeddings (.npy or similar)
-
<out_dir> — directory where the results will be saved
-
<use_mean>=False — whether to run feature mean normalization (default: False)
-
<k_shots> — number of support shots per speaker (e.g., 1, 3, or 5)
-
<\seed> — random seed for reproducibility
🔁 Multiple Experiments
To automate multiple runs with different parameters (e.g., multiple seeds or shot configurations):
export PYTHONPATH=$(pwd)
python3 src/run_few_shot.py
- Backbone training adapted from ECAPA-TDNN
@inproceedings{pirlogeanu2025fewshot,
title={Closed-Set Speaker Identification using Few-Shot Transductive Learning},
author={Gabriel Pîrlogeanu and Ana Neacșu and Horia Cucu and Jean-Christophe Pesquet and Ismail Ben Ayed},
booktitle={Proc. European Signal Processing Conference (EUSIPCO)},
year={2025}
}
For questions, collaborations, or clarifications:
Gabriel Pîrlogeanu — gabriel.pirlogeanu@upb.ro