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]]:
|
async def diarize(self, wav_path: str) -> list[tuple[float, float, str]]:
|
||||||
loop = asyncio.get_running_loop()
|
loop = asyncio.get_running_loop()
|
||||||
pipeline = await loop.run_in_executor(None, self._load_pipeline)
|
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 [
|
return [
|
||||||
(turn.start, turn.end, speaker)
|
(turn.start, turn.end, speaker)
|
||||||
for turn, _, speaker in annotation.itertracks(yield_label=True)
|
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_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
|
import asyncio
|
||||||
from diarization import Diarizer
|
from diarization import Diarizer
|
||||||
|
|||||||
Reference in New Issue
Block a user