这是这里讨论的继续。我会在那里发表评论,但我没有 50 个代表,所以我要问一个新问题。
以下是我如何理解 MFCC 计算过程中的 DCT 步骤:它背后的基本原理是由于滤波器的重叠而分离对数频谱幅度(来自滤波器组)中的相关性。本质上,DCT 平滑了由这些对数频谱幅度给出的频谱表示。
说下图中的蓝线代表由对数频谱幅度向量表示的频谱,红线是该向量一旦被 DCT 化,是否正确?
这是这里讨论的继续。我会在那里发表评论,但我没有 50 个代表,所以我要问一个新问题。
以下是我如何理解 MFCC 计算过程中的 DCT 步骤:它背后的基本原理是由于滤波器的重叠而分离对数频谱幅度(来自滤波器组)中的相关性。本质上,DCT 平滑了由这些对数频谱幅度给出的频谱表示。
说下图中的蓝线代表由对数频谱幅度向量表示的频谱,红线是该向量一旦被 DCT 化,是否正确?
让我从头开始。计算倒谱的标准方法如下:
在 MFCC 系数的情况下,情况有点不同,但仍然相似。
在预加重和加窗之后,计算信号的 DFT 并应用重叠三角滤波器的滤波器组,以 mel 比例分隔(尽管在某些情况下线性比例优于 mel):
关于倒谱定义,您现在以 mel 频率标度表示频谱的包络(缩减频谱)。如果你代表它,那么你会发现它有点类似于你的原始信号频谱。
下一步是计算上面得到的系数的对数。这是因为倒谱应该是一个同态变换,可以将信号与声道的脉冲响应等分开。如何?
原始语音信号主要与脉冲响应卷积声道的:
在频域卷积是频谱的乘法:
根据以下属性,可以将其分解为两部分:.
我们还期望脉冲响应不会随时间变化,因此可以通过减去均值来轻松消除它。现在你明白为什么我们取带能的对数了。
倒谱定义的最后一步是傅里叶逆变换. 问题是我们只有对数能量,没有相位信息,所以在应用之后ifft
我们得到复值系数——对于所有这些努力成为一个紧凑的表示来说并不是很优雅。虽然我们可以采用离散余弦变换,它是 FT 的“简化”版本并获得实值系数!这个过程可以可视化为将余弦曲线与我们的对数能量系数相匹配。您可能还记得倒谱也称为“频谱的频谱”吗?这就是最重要的一步——我们正在寻找对数能量包络系数中的任何周期性。
所以现在你看到了,现在很难理解原始光谱的样子。此外,我们通常只取前 12 个 MFCC,因为更高的 MFCC 描述了对数能量的快速变化,这通常会使识别率变差。所以做DCT的原因如下:
最初您必须执行 IFFT,但从 DCT 获得实值系数更容易。此外,我们不再有全频谱(所有频率箱),而是 mel 滤波器组内的能量系数,因此使用 IFFT 有点矫枉过正。
您在第一个图中看到滤波器组是重叠的,因此来自彼此相邻的滤波器组的能量正在两个之间传播 - DCT 允许对它们进行去相关。请记住,这是一个很好的属性,例如在高斯混合模型的情况下,您可以使用对角协方差矩阵(其他系数之间没有相关性),而不是完整的(所有系数都是相关的) - 这大大简化了事情。
另一种对 mel 频率系数进行去相关的方法是 PCA(主成分分析),该技术仅用于此目的。幸运的是,证明 DCT 在解相关信号时是 PCA 的一个非常好的近似值,因此使用离散余弦变换的另一个优势。
一些文献:
Hyoung-Gook Kim、Nicolas Moreau、Thomas Sikora - MPEG-7 音频及其他:音频内容索引和检索
其背后的基本原理是由于滤波器的重叠而分离对数频谱幅度(与滤波器组)的相关性。本质上,DCT 平滑了由这些对数频谱幅度给出的频谱表示。
这是不正确的。对数频谱幅度之间存在相关性不仅是因为它们重叠,而且还因为没有任何数字序列代表对数频谱幅度的“有意义”(如在自然语音和声音中发生)系列。“有意义的”对数谱幅度往往相当平滑,在较高频率上能量整体减少等。有人会说所有“有意义的”对数谱幅度向量的空间维度小于 40 或无论您使用多少个频段;而 DCT 可以看作是降维,将 40 通道的数据映射到这个更小的空间上。
本质上,DCT 平滑了由这些对数频谱幅度给出的频谱表示。
DCT 不进行任何平滑处理。从 DCT 数据重建时,您会看到平滑 - 平滑是由于 DCT 丢失信息和随后的系数截断。
但 MFCC 系数不存储平滑频谱 - 它存储一系列不相关的 DCT 系数。
平滑 DCT 不仅减少了表示频谱所需的维数。DCT 有利于降维,因为它倾向于在前几个系数中压缩频谱的大部分能量。