我也被这个绊倒了。
查看https://librosa.org/doc/latest/glossary.html特别是“框架”的措辞。
您通常会想象一系列样本在 x 轴上从左到右 - 但请注意,它在 librosa 中称为“y”。
假设我的样本是,窗口为 2,跳数为 1:
[1,2,3,4,5]
当我期望以下内容时:
array([[1, 2],
[2, 3],
[3, 4],
[4, 5]])
librosa 实际上给我的是:
array([[1, 2, 3, 4],
[2, 3, 4, 5]])
这似乎是由于 librosa 喜欢显示/抛出数据的方式方便。
使用您通常脑海中的东西的简单方法是转置np.array
mfccs = librosa.feature.mfcc(np.array([1,2,3,4,5]))
# The mfccs exists down the columns, not across each row!
array([[-353.18529412],
[ -9.92147635],
[ 1.39044844],
[ 19.76460942],
[ 25.52789074],
[ -18.65229483],
[ 17.41164986],
[ 32.40858638],
[ -13.52776281],
[ 8.38747316],
[ 23.82210792],
[ 16.50381765],
[ -23.39931177],
[ 40.04480991],
[ 7.76233177],
[ -2.54971281],
[ 4.81715362],
[ 36.80008536],
[ -9.8943455 ],
[ -0.57583487]])
mfccs.T
# Now mffcs[0] (the first row) refers to the first mfcc!
array([[-353.18529412, -9.92147635, 1.39044844, 19.76460942,
25.52789074, -18.65229483, 17.41164986, 32.40858638,
-13.52776281, 8.38747316, 23.82210792, 16.50381765,
-23.39931177, 40.04480991, 7.76233177, -2.54971281,
4.81715362, 36.80008536, -9.8943455 , -0.57583487]])
对于初学者:这是做什么的?考虑将矩阵(阵列)打印在一块透明塑料上,然后抓住左下角并将页面翻转过来,将左下角移动到右上角。