Summary
Build the streaming audio segmentation and speaker-attribution pipeline that turns raw conversation audio into timestamped, speaker-labeled speech segments using lightweight VAD, pyannote diarization, and cosine similarity against the enrolled user voice embedding.
Context
Before transcription can happen reliably, the system needs to determine which parts of the audio contain speech and which speaker is talking. This ticket covers the low-level audio pipeline from rolling audio ingestion through diarization and user-vs-interlocutor labeling. It should avoid unnecessary expensive diarization work by using a lightweight VAD pass first.
Tasks
Acceptance Criteria
Notes
- This ticket should stop at timestamped, speaker-labeled audio segments; it should not perform ASR or generate final transcript text
- The pyannote model card indicates
community-1 expects mono audio sampled at 16kHz, supports in-memory processing, and exposes exclusive_speaker_diarization, which may simplify downstream alignment
community-1 also requires pyannote.audio, accepted Hugging Face model terms, and a Hugging Face access token
- Suggested output shape for downstream use:
start_time
end_time
speaker_label
audio_reference or waveform slice metadata
- Model to use:
Summary
Build the streaming audio segmentation and speaker-attribution pipeline that turns raw conversation audio into timestamped, speaker-labeled speech segments using lightweight VAD, pyannote diarization, and cosine similarity against the enrolled user voice embedding.
Context
Before transcription can happen reliably, the system needs to determine which parts of the audio contain speech and which speaker is talking. This ticket covers the low-level audio pipeline from rolling audio ingestion through diarization and user-vs-interlocutor labeling. It should avoid unnecessary expensive diarization work by using a lightweight VAD pass first.
Tasks
pyannote/speaker-diarization-community-1for diarization on these speech-positive windowsexclusive_speaker_diarizationfor cleaner downstream reconciliationuserorinterlocutorbased on similarity scoring and confidence thresholdsAcceptance Criteria
user,interlocutor, or explicit fallback state when attribution is uncertainNotes
community-1expects mono audio sampled at 16kHz, supports in-memory processing, and exposesexclusive_speaker_diarization, which may simplify downstream alignmentcommunity-1also requirespyannote.audio, accepted Hugging Face model terms, and a Hugging Face access tokenstart_timeend_timespeaker_labelaudio_referenceor waveform slice metadata