我使用此过程创建了图表:
y, _ = librosa.load('sound/data/kea-song.mp3', 48000)
y /= y.max()
# compute the rmse
e = librosa.feature.rmse(y=y)[0]
e -= e.min()#what does this really do, guessing a kind of normalisation?
e /= e.max()
plt.plot(e)
plt.show()
如果我不计算rmse,则会将x轴转换为时间:
y, _ = librosa.load('sound/data/kea-song.mp3', 48000)
plt.plot(np.arange(len(y))/48000, y)
但是在rmse函数之后我不知道如何进行转换。我猜它与y *中的样本有关,被分组成帧但是我不能在我的生活中找出如何从这些帧转换(如果它是帧)到时间!
我该怎么做? 提前致谢(:
答案 0 :(得分:2)
我还没有测试任何这个,但是通过阅读文档,似乎该函数计算帧中的FFT,默认帧长度为2048个样本,跳跃长度为512个样本。
这意味着如果原始音频中有len(y)
个样本,则输出中应该有(len(y)-2048)//512
个帧。第一帧将是样本0,第二帧将是样本512,等等。所以你可以这样做:
e_time = np.arange(len(e))*512/48000
plt.plot(e_time, e)