了解 mfcc 的输出

Understanding the output of mfcc

from librosa.feature import mfcc
from librosa.core import load

def extract_mfcc(sound):
    data, frame = load(sound)
    return mfcc(data, frame)


mfcc = extract_mfcc("sound.wav")

我想获取以下 sound.wav 文件的 MFCC,该文件的长度 48 秒 .

我了解 data * frame = length of audio.

但是当我如上所示计算 MFCC 并得到它的形状时,结果是这样的:(20, 2086)

这些数字代表什么? 如何仅通过 MFCC 计算音频的时间?

我正在尝试计算每毫秒音频的平均 MFCC。

感谢任何帮助!谢谢:)

那是因为 mel-frequency cepstral coefficients 是在 window 上计算的,即样本数。声音是波,不能通过单个样本(数字)得出任何特征,因此 window.

为了计算 MFCC,使用了快速傅立叶变换 (FFT),这恰恰需要提供 window 的长度。如果您查看 mfcc 的 librosa 文档,您将不会发现它是一个显式参数。那是因为它是隐式的,具体来说:

  • FFT 的长度window:2048
  • 连续帧之间的样本数:512

它们作为 **kwargs 传递并定义为 here

如果您现在考虑音频的采样频率和这些数字。您将得出您提供的最终结果。

由于librosa默认采样率为22050,音频长度为48s,window等于512,如下:

这个数字不完全是2086,因为:

  • 您的音频长度不到 48 秒
  • 实际 window 长度为 2048,有 512 跳。这意味着您将 "loose" 最后几帧。