理解mfcc输出

from librosa.feature import mfccfrom librosa.core import loaddef extract_mfcc(sound):    data, frame = load(sound)    return mfcc(data, frame)mfcc = extract_mfcc("sound.wav")

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

我知道data * frame = 音频长度

但是当我按照上述方法计算MFCC并获取其形状时,结果是:(20, 2086)

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

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

任何帮助都将不胜感激!谢谢你:)


回答:

这是因为梅尔频率倒谱系数是在一个窗口上计算的,即样本数量。声音是波,因此不能通过单个样本(数字)来提取任何特征,因此需要窗口。

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

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

它们作为**kwargs传递,并在这里定义。

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

由于librosa的默认采样率为22050,音频长度为48秒,窗口等于512,以下是结果:

公式

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

  • 你的音频长度并不完全是48秒
  • 实际窗口长度为2048,步长为512。这意味着在末尾你会“丢失”几个帧。

Related Posts

tensorflow 自定义损失函数:不仅仅是单样本误差之和

我正在研究这个教程。我目前正在修改损失函数。观察到, …

ValueError: 发现输入变量的样本数量不一致:[2750, 1095]

已关闭。 此问题无法重现或由打字错误引起。目前不接受回…

如何解读机器学习训练输出

我是一名机器学习的初学者,正在通过参加Kaggle竞赛…

Softmax层和神经网络的最后一层

我有一个疑问,假设Softmax层之前的最后一层有10…

使用pomegranate中的贝叶斯网络进行采样

我使用pomegranate中的from_sample…

当预测值为分类变量时无法工作

问题:当预测值为分类变量时无法工作 CatBoost版…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注