理解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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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