Skip to main content

A CLI + Web tool for speaker enrollment and identification using SpeechBrain.

Project description

23/07/2025 - Lara Whybrow, Creator - Works as far as I can see, but now we have a robust set of tools for training and managing the data and can focus now on refinement and bug fixing.

speaker-detector 🎙️

A lightweight CLI tool for speaker enrollment and voice identification, powered by SpeechBrain.

🔧 Features

  • ✅ Enroll speakers from .wav audio
  • 🕵️ Identify speakers from audio samples
  • 🧠 ECAPA-TDNN embedding-based matching
  • 🎛️ Simple, fast command-line interface
  • 📁 Clean file storage in ~/.speaker-detector/
  • 🔊 Optional --verbose mode for debugging

📦 Installation

Install from TestPyPI:

pip install --index-url https://test.pypi.org/simple/ speaker-detector

When installing packages with a stale requirement file you might need to use:  pip install --break-system-packages soundfile to install on WSL Ubuntu

Run this version with -m module flag if you are contributing and want to run server.py:
python3 -m speaker_detector.server

🚀 Usage

🎙️ Enroll a speaker:

speaker-detector record --enroll Lara

🕵️ Identify a speaker:

speaker-detector record --test

📋 List enrolled speakers:

speaker-detector list

🗂️ Project Structure

~/.speaker-detector/enrollments/ Saved .pt voice embeddings ~/.speaker-detector/recordings/ CLI-recorded .wav audio files

🧹 Clean vs Verbose Mode By default, warnings from speechbrain, torch, etc. are hidden for a clean CLI experience. To enable full logs & deprecation warnings:

speaker-detector --verbose identify samples/test_sample.wav

🛠 Requirements Python 3.8+ torch speechbrain numpy soundfile onnxruntime

Step Command When / Purpose Output
1. Export ECAPA Model to ONNX speaker-detector export-model --pt models/embedding_model.ckpt --out ecapa_model.onnx Run once unless model changes ecapa_model.onnx
2. Enroll Speaker speaker-detector enroll <speaker_id> <audio_path>
Example:
speaker-detector enroll Lara samples/lara1.wav
Run per new speaker Individual .pt files (e.g., Lara.pt)
3. Combine Embeddings speaker-detector combine --folder data/embeddings/ --out data/enrolled_speakers.pt After enrolling speakers enrolled_speakers.pt
4. Export Speakers to JSON speaker-detector export-speaker-json --pt data/enrolled_speakers.pt --out public/speakers.json For frontend use speakers.json
5. Identify Speaker speaker-detector identify samples/test_sample.wav Identify speaker from audio Console output: name + score
6. List Enrolled Speakers speaker-detector list-speakers Show all enrolled speakers Console output: list of IDs
Verbose Mode (optional) Add --verbose to any command:
speaker-detector --verbose identify samples/test_sample.wav
Show warnings, detailed logs Developer debug info

NB: When pushing to Github, do not include any .identifier files.

You can manually clean up stale embeddings that don’t match any existing speaker folder with a quick script:

Run inside your project root

cd storage/embeddings for f in *.pt; do speaker="${f%.pt}" if [ ! -d "../speakers/$speaker" ]; then echo "Deleting stale embedding: $f" rm "$f" fi done

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speaker_detector-0.1.7.tar.gz (83.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

speaker_detector-0.1.7-py3-none-any.whl (83.0 MB view details)

Uploaded Python 3

File details

Details for the file speaker_detector-0.1.7.tar.gz.

File metadata

  • Download URL: speaker_detector-0.1.7.tar.gz
  • Upload date:
  • Size: 83.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for speaker_detector-0.1.7.tar.gz
Algorithm Hash digest
SHA256 05361e8f0399edce4325d4ddf7ee4df0c14406ed60f9d67ac9700a13cda059fb
MD5 29fe9dc34f5bf62d156ac322f8e09a0d
BLAKE2b-256 5cd2ffee8290925bed9c2c6fc733ec8b326d5887662a4792ab449f1c47da99a1

See more details on using hashes here.

File details

Details for the file speaker_detector-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for speaker_detector-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 912fe71b9fe9703685c81df324eed7ef01c0c35d67fa5a2b0979845b0de0ab0d
MD5 7260c9b61e8f0b6db8cddf44d71b6bd1
BLAKE2b-256 42f1b76370d5fbec2651f4fa2f66df6bacb7e162b3c0f3e460debd86ec8e9a53

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page