Speaker-Diarization / diarizers /pyannote_diarizer.py
philippemos's picture
add script for speaker diarization demo
4ba35bc
"""
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()