Speaker-Diarization / diarizers /pyannote_diarizer.py
philippemos's picture
add script for speaker diarization demo
4ba35bc
raw
history blame
1.12 kB
"""
pyannote diarizer
"""
import matplotlib.pyplot as plt
from pyannote.audio import Pipeline
from pyannote.core import notebook
from diarizers.diarizer import Diarizer
class PyannoteDiarizer(Diarizer):
def __init__(self, audio_path: str):
"""
Pyannote diarizer class
Note: pyannote does not currently support defining the number of speakers, this
functionality might be supported later in the future
Args:
audio_path (str): the path to the audio file
Params:
diarization (Annotations): the output of the diarization algorithm
"""
self.audio_path = audio_path
self.diarization = None
def diarize_audio(self):
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization")
self.diarization = pipeline({'audio': self.audio_path})
def get_diarization_figure(self) -> plt.gcf:
if not self.diarization:
self.diarize_audio()
figure, ax = plt.subplots()
notebook.plot_annotation(self.diarization, ax=ax, time=True, legend=True)
return plt.gcf()