in voxpopuli/segmentation/get_segment_pyannote_speaker.py [0:0]
def split_audio(self, audio_path: Path):
found = 0
lang = audio_path.stem.split("_")[-1]
id_ = audio_path.stem.split("_")[0]
if not audio_path.exists():
return False
segments = get_segments(audio_path, self.pyannote_cfg, self.min_duration)
if segments is None:
return False
out_root = self.get_out_root(id_, lang)
pyannote_suffix = f".pyannote.{self.pyannote_cfg}"
out_audio = split_audio(audio_path, segments, out_root, pyannote_suffix)
if not self.split_vad:
return True
for audio_path in out_audio:
dir_out = audio_path.parent / audio_path.stem
dir_out.mkdir()
path_timestamp_audio = get_path_timestamp(audio_path, pyannote_suffix)
shift = load_timestamp(path_timestamp_audio)[0]
vad_seq = split_vad_non_wav(
audio_path,
dir_out,
min_dur=self.min_dur_vad,
max_dur=self.max_dur_vad,
max_silence=self.max_silence_vad,
strict_min_dur=self.strict_min_dur_vad,
shift=shift,
)
os.remove(audio_path)
if len(vad_seq) == 0:
shutil.rmtree(dir_out)
os.remove(audio_path.with_suffix(f".pyannote.{self.pyannote_cfg}"))
return True