Skip to content

Repository files navigation

Closed-Set Speaker Identification using Few-Shot Transductive Learning

Conference Paper

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


🧠 Overview

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.

🧭 Method Overview

FSAiC pipeline diagram

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.


Extracted embeddings and pretrained models

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.

📦 Installation

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.yml

🧪 Running Experiments

You can run few-shot evaluations using our scripts in src/.

▶️ Single Experiment (Default Setting)

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

🧭 Acknowledgements

🧾 Citation

@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}
}

📬 Contact

For questions, collaborations, or clarifications:

Gabriel Pîrlogeanu — gabriel.pirlogeanu@upb.ro

About

Repository for the EUSIPCO 2025 paper "Closed-Set Speaker Identification using Few-Shot Transductive Learning"

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages