了解 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
,如:
【讨论】:
很高兴您发现它有帮助! 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脚本解析:提取特征