diff --git a/backend/app/services/diarization.py b/backend/app/services/diarization.py index 764536b..cbb1a64 100644 --- a/backend/app/services/diarization.py +++ b/backend/app/services/diarization.py @@ -25,8 +25,19 @@ def get_diarization_pipeline() -> Pipeline: def diarize(audio_path: str) -> list[dict]: + import torch + import soundfile as sf + pipeline = get_diarization_pipeline() - diarization = pipeline(audio_path) + + waveform, sample_rate = sf.read(audio_path, dtype="float32") + if waveform.ndim > 1: + waveform = waveform.mean(axis=1) + audio_input = { + "waveform": torch.from_numpy(waveform).unsqueeze(0), + "sample_rate": sample_rate, + } + diarization = pipeline(audio_input) segments = [] for turn, _, speaker in diarization.itertracks(yield_label=True):