了解mfcc的输出

时间:2018-09-08 06:59:59

标签: python audio artificial-intelligence feature-extraction 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。

感谢您的帮助!谢谢:)

1 个答案:

答案 0 :(得分:1)

这是因为mel-frequency cepstral coefficients是在一个窗口上计算的,即样本数。声音是波动的,无法通过获取单个样本(数字)来获得任何特征,因此无法获得窗口。

为了计算MFCC,使用了快速傅里叶变换(FFT),而这恰恰需要提供窗口的长度。如果检查librosa文档中的mfcc,则不会发现它是显式参数。那是因为它是隐式的,特别是:

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

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

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

由于librosa的默认采样率为22050,音频长度为48s,窗口等于512,因此,如下所示:

Formula

该数字不完全是2086,如下:

  • 您的音频持续时间不超过48秒
  • 实际窗口长度为2048,最大跳数为512。这意味着您将在最后“松开”几帧。