Spaces:
Running
Running
# coding=utf-8 | |
# Silence detection | |
import logging | |
import librosa | |
import numpy as np | |
class Step4: | |
def __init__(self): | |
self.log = logging.getLogger(self.__class__.__name__) | |
self.log.setLevel(logging.INFO) | |
def run(self, | |
audio_path, | |
silence_thresh=-50, | |
duration_thresh=0.9): | |
# self.log.info("Step4: Determine whether the audio is silent.") | |
y, sr = librosa.load(audio_path, sr=None) | |
energy = librosa.feature.rms(y=y)[0] | |
energy_db = librosa.amplitude_to_db(energy) | |
silent_ratio = np.sum(energy_db < silence_thresh) / len(energy_db) | |
is_silent = silent_ratio > duration_thresh | |
if is_silent: | |
self.log.info(f"The audio after removing the voiceover ({audio_path}) is silent.") | |
else: | |
self.log.info(f"The audio after removing the voiceover ({audio_path}) is not silent.") | |
self.log.info("Finish Step4 successfully.\n") | |
return is_silent | |