Repository navigation
Speaker diarization (pyannote.audio)
New spectator audio diarize subcommand and --diarize flag on audio transcribe for speaker diarization. Runs in the same audio-venv as Whisper.
After spectator audio install (with the default --with-diarize):
spectator audio diarize call.mp3 --target <gpu-machine>— standalone; writes<stem>.diar.{rttm,json}.spectator audio transcribe call.mp3 --target <gpu-machine> --diarize— Whisper + pyannote + merge in one tmux session; produces<stem>.diarized.{json,txt}(Whisper segments with speaker labels via maximum-overlap voting against pyannote turns).
Hugging Face access is needed at run time only, not at install time. See the new README section and REFERENCE.md → audio diarize for the three-form HF setup, the multi-field-form-vs-checkbox gotcha, and the merge algorithm.
Notes for new-silicon hosts
On Blackwell GB10 (sm_121) with the cu128 PyTorch wheels, the audio diarize runtime probes for nvrtc support and surgically patches Tensor.abs to compute magnitude manually (sqrt(real² + imag²)) for complex CUDA tensors only. Without the patch, pyannote's wespeaker fbank trips nvrtc: error: invalid value for --gpu-architecture (-arch). The patch costs nothing on properly-supported hardware. The proper fix lands when PyTorch ships nvrtc with sm_121 in its allowlist (cu129+ or torch nightlies on cu13).
Commits
be9f59dAdd HUGGING_FACE_HUB_TOKEN to .creds and ensure_var_block helper361908dAdd speaker diarization via pyannote.audio (audio diarize)e3adc04Document speaker diarization and bump version to 0.4.8
Full diff: v0.4.7...v0.4.8