8000 Hz 时的 1800 秒显然是1800 * 8000 = 14400000
样本。如果您的跃点长度为 160,您将获得大致 14400000 / 160 = 90000
MFCC 值,每个值为 24 维。所以这显然不是(1800 / 0.01) - 1 = 179999
(相差大约 2 倍)。
请注意,我在计算中粗略地使用了,因为我只使用了跳跃长度而忽略了窗口长度。跳跃长度是窗口每一步移动的样本数。您可以容纳多少啤酒花取决于您是否以某种方式填充。如果您决定不填充,帧数还取决于您的窗口大小。
回到您的问题:您必须问自己 10 毫秒有多少个样本?
如果 1 s 包含 8000 个样本(这就是 8000 Hz 的含义),那么 0.01 s 中有多少个样本?那是8000 * 0.01 = 80
样品。
这意味着您有 80 个样本的跳跃长度和 160 个样本的窗口长度(0.02 秒 - 两倍长)。
现在您应该告诉 librosa 使用此信息,如下所示:
import librosa as l
x, sr = l.load('/home/user/Data/Audio/Tracks/Dev/FS_P01_dev_001.wav', sr = 8000)
n_fft = int(sr * 0.02) # window length: 0.02 s
hop_length = n_fft // 2 # usually one specifies the hop length as a fraction of the window length
mfccs = l.feature.mfcc(x, sr=sr, n_mfcc=24, hop_length=hop_length, n_fft=n_fft)
# check the dimensions
print(mfccs.shape)
希望这可以帮助。