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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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