我正在研究一种声音,以检测声音哔声何时开始在 Python 中使用 librosa。当我绘制检测到的时间时,它有一些偏移,如图中的红线所示。如果哔声之间的间隔发生变化,则此偏移量会发生变化。由于我想要一种强大的方法来检测声音中小波开始的可变哔声间隔,我该如何去除这个偏移量?
x, sr = librosa.load('c.wav')
plt.figure(figsize=(30, 7))
librosa.display.waveplot(x, sr=sr)
onset_frames=librosa.onset.onset_detect(y=x, sr=sr, units='frames')
o_env = librosa.onset.onset_strength(x, sr=sr)
times = librosa.frames_to_time(np.arange(len(o_env)), sr=sr)
onset_times = librosa.frames_to_time(onset_frames)
a=onset_times[1:-1]
b=onset_times[2:-1]
b=np.append(b,[0])
Diff=b-a
print(Diff)
plt.vlines(a, 0, x.max(), color='r', alpha=0.9,
linestyle='--', label='Onsets')
plt.axis('tight')
plt.legend(frameon=True, framealpha=0.75)
plt.show()
我在下面的链接中添加了声音文件。可以直接模拟文件。Python Colab 笔记本:链接