fix: handle pyannote 4.x DiarizeOutput wrapper in diarize()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+3
-1
@@ -20,7 +20,9 @@ class Diarizer:
|
||||
async def diarize(self, wav_path: str) -> list[tuple[float, float, str]]:
|
||||
loop = asyncio.get_running_loop()
|
||||
pipeline = await loop.run_in_executor(None, self._load_pipeline)
|
||||
annotation = await loop.run_in_executor(None, lambda: pipeline(wav_path))
|
||||
result = await loop.run_in_executor(None, lambda: pipeline(wav_path))
|
||||
# pyannote 4.x returns DiarizeOutput; older versions return Annotation directly
|
||||
annotation = getattr(result, "speaker_diarization", result)
|
||||
return [
|
||||
(turn.start, turn.end, speaker)
|
||||
for turn, _, speaker in annotation.itertracks(yield_label=True)
|
||||
|
||||
@@ -21,7 +21,9 @@ def test_diarizer_returns_list_of_tuples(tmp_path):
|
||||
(mock_turn_2, "B", "SPEAKER_01"),
|
||||
]
|
||||
|
||||
mock_pipeline = MagicMock(return_value=mock_annotation)
|
||||
mock_output = MagicMock()
|
||||
mock_output.speaker_diarization = mock_annotation
|
||||
mock_pipeline = MagicMock(return_value=mock_output)
|
||||
|
||||
import asyncio
|
||||
from diarization import Diarizer
|
||||
|
||||
Reference in New Issue
Block a user