2

我正在研究一种声音,以检测声音哔声何时开始在 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 笔记本:链接

4

1 回答 1

0

您可以使用 Yamnet,它使用最先进的架构和数据对 512 种不同的声音进行了训练。https://www.tensorflow.org/tutorials/audio/transfer_learning_audio

对于红线,它可能是由于采样率的变化而发生的。您必须匹配哔声的采样率。

于 2021-08-05T06:56:05.913 回答