speech-diarizer
Installation
SKILL.md
speech-diarizer
turn a local media file into a speaker-labeled transcript where each turn is attributed to a speaker (SPEAKER_00, SPEAKER_01, ...). this is the diarization-specialized counterpart to speech-video-transcriber: use this one whenever the recording has more than one voice and the user cares who said what.
the pipeline is fully local and runs well on apple silicon:
- transcribe with
faster-whisper(via whisperx), default modellarge-v3, on cpu (ctranslate2 is cpu-only on macos) - align to word-level timestamps
- diarize with
pyannote/speaker-diarization-3.1(uses mps on apple silicon when available) - assign speakers to words and write
.txt,.srt, and.json
self-contained scripts
scripts/diarize.py- the engine. a PEP 723 inline-script declaring its own python (>=3.10,<3.13) and dependency (whisperx>=3.3), souv run --scriptbuilds and caches an isolated environment automatically. nothing is installed into the repo's shared.venv.scripts/enroll.py- names speakers in the voiceprint store (PEP 723, depends only onnumpy).scripts/voiceprints.py- shared store + cosine-matching module imported by both (not run directly).- the enrolled voiceprint store is machine-global, not bundled with the skill. it lives at
~/.config/speech-diarizer/voiceprints.jsonby default, so every copy of the scripts on this machine shares one set of voiceprints. override with--store /pathor$SPEECH_DIARIZER_VOICEPRINTS(point it at an iCloud/synced path for cross-machine use).