一系列 MFCC 向量的正确图形解释是什么?

信息处理 语音识别 mfcc 可视化 特征提取
2021-12-19 19:36:21

我正在研究语音识别,特别是使用 MFCC 进行特征提取。我在网上找到的所有示例都倾向于绘制从特定话语中提取的一系列 MFCC,如下所示(由我从我正在编写的软件生成的图表):

MFFC 向量​​按特征 如上图所示:

  • x 轴用于每个 MFC 系数(在此示例中为 1 到 12
  • y 轴用于系数的值(在本例中范围为 -12 到 42)
  • 的行数与提取的帧或特征向量一样多(在本例中为 140)。

现在,这对我来说没有太大意义,因为我们在这里看到的是所有特征向量同时叠加,丢失了任何时间信息。我很难理解这种表示如何有用。

在我看来,我会将提取的向量表示如下(再次,由我生成的图):

逐帧 MFCC 向量

在上图中:

  • x 轴帧或向量编号(1 到 140)
  • y 轴是系数值(同样,从 -12 到 42 aprox)
  • 每个功能都有一行(12)。

对我来说,这种表示应该更有用,因为您可以看到每个特定特征的时间演变,并且在我看来,这应该对如何将比较算法应用于口语单词产生更大的影响。

也许这两种表示对于不同的目的同样有效和有用,就像您需要在时域或频域中研究信号时一样,但在语音识别的情况下,我希望每个人的时间演变特征比每个特征的值密度更有意义(也许我完全错了:P)。

所以,其实有两个问题:

  1. 为什么第一个表示似乎被广泛使用而不是第二个?
  2. 当您想比较两组提取的 MFCC 时,例如使用动态时间扭曲 - DTW,并且与本主题相关,您是比较特征向量(即 12 个特征的 140 个向量)还是帧(140 个帧的 12 个向量) )? (换句话说,MxN 还是 NxM?)

谢谢!

1个回答

始终使用 MFCC 的方式是将它们输入分类器。这可以逐帧(12x1矢量)或通过连接(12xN)来完成 - 与频谱图相同。

因此对于 DTW,您必须通过计算 12D 向量之间的距离来执行分类。这是一个动态时间扭曲,因此必须在域中的帧之间计算差异,而不是在“单一特征域”中的样本之间计算。

这是它的图形表示:

在此处输入图像描述


只是关于 MFCC 绘图的附录。查看所有 MFCC 向量堆叠在一起的线图(第一张图像)是没有意义的,查看所有 MFCC 的时间演变(第二张图像)并不是很有用。除非您想实现特定的目标,否则 MFCC 不存在正确图形表示的概念。

首先,可以绘制每个 MFCC 的分布(直方图)以查看典型值是什么等。特别是如果您有一个针对信号训练的 GMM 模型,您可以绘制测试样本的分布并使用 GMM 的 PDF 进行叠加在那个维度。

第二种方法是将 MFCC 绘制成类似于频谱图(如上图所示)。人们可能希望将其用于“良好的表示”或查看整体趋势和模式。但几乎不可能分辨出这种表示背后隐藏着什么样的信号。

例如,这是一个非常简单信号的 MFCC 图。那是什么信号?如果您准备好了,请将鼠标悬停在黄色区域。

在此处输入图像描述

指数正弦扫描! 在此处输入图像描述

说起来容易吗?当然,通过查看频谱图,它立即显而易见。也许很少有人猜到,因为他们以前玩过这样的例子。现在更复杂的事情:

在此处输入图像描述

准备好?

鸟鸣——你可以在这里听 在此处输入图像描述

我几乎不认为这种 MFCC 表示有任何用处,除了填充空间。现在很少有人会根据频谱图猜出信号,但通过查看 MFCC 是不可能做到的。

因此,如果有人告诉您他可以根据“频域三角滤波器组内对数能量的去相关余弦拟合”来判断信号发生了什么,那么他要么是骗子(先验为 ) 或计算机。99.9% 很少有查看原始 MFCC 值有用的情况——例如调试和完整性检查(对于固定信号而言,系数是常数)。