Mel-频谱图和MFCC之间的区别

22

我正在使用librosa库将音乐片段转换为mel频谱图,以用作神经网络的输入,如文档here所示。

如果有区别的话,这与MFCCs有何不同?使用其中任何一种有什么优缺点吗?

3个回答

19
要获得MFCC,需要在梅尔频谱图上计算DCT。在此之前,梅尔频谱图通常会进行对数缩放。
MFCC是一种非常可压缩的表示方法,通常只使用20或13个系数,而不是梅尔频谱图中的32-64个频带。MFCC具有更强的去相关性,这对于线性模型如高斯混合模型是有益的。在大量数据和强大的分类器(如卷积神经网络)的情况下,梅尔频谱图通常表现更好。
绘制梅尔频谱图时,可以更容易地理解,因为它们是一种时频表示,能很好地映射到观察到的声音。而MFCC则相对难以解释。

6

我认为,jonnor的回答并不完全正确。需要分两步来操作:
1. 取Mel频谱图的对数。
2. 对对数值进行DCT计算。
此外,取对数似乎是训练神经网络的"主要部分":https://qr.ae/TWtPLD


4

一个关键区别是mel-spectrogram具有频谱的语义,而MFCC在某种程度上是“频谱的频谱”。因此,真正的问题是:对于具有良好答案的mel-spectrogram应用DCT的目的是什么,这些答案可以在这里那里找到。


值得注意的是,librosa也有一个mfcc函数。通过查看其实现,基本上可以确认它是:

  1. 调用melspectrogram
  2. 通过power_to_db将其输出转换为对数形式,
  3. 对频率进行DCT变换,就好像它们是信号一样,
  4. 在第一个n_mfcc系数之后截断新的“频谱的频谱”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接