了解 mfcc 的输出

Posted

技术标签:

【中文标题】了解 mfcc 的输出【英文标题】:Understanding the output of mfcc 【发布时间】:2019-02-13 09:58:07 【问题描述】:
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。

任何帮助表示赞赏!谢谢你:)

【问题讨论】:

这可能会有所帮助:practicalcryptography.com/miscellaneous/machine-learning/… 【参考方案1】:

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

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

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

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

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

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

数字不完全是2086,如:

您的音频长度不是 48 秒 实际窗口长度为2048,512跳。这意味着您将在最后“松散”几帧。

【讨论】:

很高兴您发现它有帮助! 20 是您提取的多个系数。这是默认设置。 只是想澄清一下,您实际上并没有在开头和结尾“丢帧”,默认center=True。您获得框架是因为框架被填充以适合您的窗口长度。如果设置center=False,则 nMFCC * hop_len center=True,然后 nMFCC * hop_len >= num_samples。 这些数字到底是什么意思?你有 2048 个和 20 个什么? @Sam 那是 2048 个样本和 20 个梅尔频率倒谱系数。 我的意思是 2067,对不起

以上是关于了解 mfcc 的输出的主要内容,如果未能解决你的问题,请参考以下文章

[语音识别] kaldi -- aidatatang_200zh脚本解析:提取特征

语音情感识别中的 MFCC(梅尔频率系数的平均值对性能的影响)

基于CTC的语音识别系统训练

音频特征opensmile 工具的使用和批处理

了解 uname 输出

了解 apyori 的输出