audio-voice-id
April 19, 2026 · View on GitHub
Claude Code plugin for speaker diarization, voice enrollment, and identification. Builds a local voice-print library (with optional cloud sync) so that AI transcription and editing workflows can auto-label known speakers.
What it does
- Diarize a recording into speaker-segmented timestamps (pyannote.audio).
- Enroll named voices into a local library (ECAPA-TDNN embeddings via SpeechBrain).
- Identify who's speaking in a new clip by cosine-matching against enrolled embeddings.
- Auto-label diarization output against the library (known speakers get their real names; unknowns stay anonymous).
- Sync the library to cloud storage (rclone: Google Drive, Dropbox, B2, S3, etc.).
Storage layout
~/.local/share/audio-voice-id/
├── voices/
│ ├── <name>/
│ │ ├── embedding.npy # averaged ECAPA embedding
│ │ ├── samples/*.wav # source snippets
│ │ └── meta.json # enrollment history, notes
│ └── <other-name>/...
├── library.json # index of enrolled voices
└── config.json # HF token path, thresholds, cloud remote
Typical workflow
/setup-voice-library # one-time
/install-diarization # one-time: pyannote + speechbrain
/diarize-audio meeting.wav # → meeting.rttm + meeting.diarization.json
/enroll-from-diarization meeting.diarization.json speaker_0 daniel
/enroll-from-diarization meeting.diarization.json speaker_1 sarah
/label-diarization meeting.diarization.json # auto-renames future meetings
/sync-voice-library push # replicate to cloud remote
Requirements
- Python 3.10+,
pipx ffmpeg- Free Hugging Face account + token (for pyannote pipeline terms acceptance)
- Optional:
rclonefor cloud sync