lym0302
our
1fd4e9c
# 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