import numpy as np import librosa.display import matplotlib.pyplot as plt # Plot_UV def plot_UV(signal, audio_interv, sr): fig, ax = plt.subplots(nrows=2, sharex=True) librosa.display.waveshow(signal, sr=sr, ax=ax[0]) ax[0].set_title("Signal") ax[1].set_title("U/V") uv_flag = np.zeros(len(signal)) for i in audio_interv: uv_flag[i[0]: i[1]] = 1 ax[1].plot(np.arange(len(signal))/sr, uv_flag, "r") ax[1].set_ylim([-0.1, 1.1]) return fig # Get Speech Interval def get_speech_interval(signal, db): audio_interv = librosa.effects.split(signal, top_db=db) pause_end = [x[0] for x in audio_interv[1:]] pause_start = [x[1] for x in audio_interv[0: -1]] pause_interv = [[x, y] for x, y in zip(pause_start, pause_end)] return audio_interv, pause_interv