傅里叶变换和余弦变换有什么区别?


75

在语音识别中,前端通常进行信号处理以允许从音频流中提取特征。离散傅里叶变换(DFT)在此过程中应用了两次。第一次是在窗口化之后;在此之后,将进行梅尔合并,然后再进行另一个傅立叶变换。

但是,我注意到,在语音识别器(例如CMU Sphinx中的默认前端)中,第二步操作通常使用离散余弦变换(DCT)而不是DFT ,这是很常见的。这两个操作有什么区别?为什么要第一次进行DFT,然后第二次进行DCT?


因此,有几个人解释了这两个过程之间的区别。有谁知道为什么在语音识别中在不同的时间使用dft和dct?第一个dft的输出是否被认为是对称的?还是对dct的压缩适合在前13个点中打包更多信息(语音处理通常只使用那些压缩点)?
内特·格伦

您的问题是否与另一个问题中提出的梅尔频率倒谱有关
rwong 2011年

我的问题有两个部分:DCT和DFT之间的区别,以及为什么在应用DFT和Mel Binning之后,DCT通常用于信号处理,而不是另一个DFT。
内特·格伦

为什么在图像处理中,我们不使用离散正弦变换而不是离散余弦变换?

嗨,rimondo,这是一个很好的问题,但您已将其发布为答案。您应该创建一个新问题来提问。
Nate Glenn 2014年

Answers:


48

离散傅里叶变换(DFT)和离散余弦变换(DCT)执行类似的功能:它们都将有限长度的离散时间矢量分解为缩放和平移基函数的和。两者之间的区别在于每次转换使用的基函数类型;DFT使用一组与谐波相关的复指数函数,而DCT仅使用(实值)余弦函数。

DFT广泛用于一般光谱分析应用程序,这些应用程序进入了一系列领域。它也用作利用信号频域表示特性的技术的基础,例如重叠保存和重叠添加快速卷积算法。

DCT通常用于有损数据压缩应用程序,例如JPEG图像格式。DCT使其非常适合压缩的特性是其高度的“频谱压缩”;在质量上,与其他变换(如DFT)相比,信号的DCT表示倾向于将更多能量集中在少量系数中。这对于压缩算法是理想的;如果您可以使用相对较小的一组DCT系数来近似表示原始(时域或空间域)信号,则可以通过仅存储包含大量能量的DCT输出来降低数据存储需求。


4
@JasonR“在质量上,与DFT等其他变换相比,信号的DCT表示倾向于将更多能量集中在少量系数中。” 嗯...我不确定我是否完全同意你的看法-仅仅是因为DFT已经包含了一个余弦,信号将要投射到该余弦上-DFT怎么会不显示该投射的强度DCT可以吗?谢谢。
Spacey

3
这是DCT的一个非常著名的功能,它解释了DCT在众多压缩算法中的使用。我认为这与DCT在信号边缘处假定的边界条件有关,该边界条件与DFT不同。
杰森·R

23

我发现DCT Wiki中的一些细节(也由Pearsonartphoto共享)指出DCT非常适合压缩应用程序。非正式概述部分的末尾很有帮助(粗俗的是我的)。

特别是,众所周知,函数中的任何不连续性都会降低傅立叶级数的收敛速度……函数越平滑,准确表示其所需的DFT或DCT中的项越少,可以压缩 ...但是,DFT的隐式周期性意味着不连续性通常发生在边界处...相反,两个边界甚至总是始终在边界处产生DCT 。这就是DCT ...通常在信号压缩方面比DFT和DST更好的原因。实际上,部分出于计算方便的原因,通常将II型DCT用于此类应用。

此外,您可能会发现此答案也很有用(来自math.stackexchange.com)。它指出:

余弦变换只不过是用于计算具有特殊对称性的序列的傅立叶变换的捷径(例如,如果序列表示来自偶函数的样本)。


19

之所以会在特征提取过程中看到两次应用傅里叶变换,是因为这些特征基于倒谱概念。倒谱是文字频谱的一种玩法-本质上来说,想法是通过傅立叶变换将信号变换到频域,然后执行另一次变换,就好像频谱是一个信号一样。

频谱描述了每个频带的幅度和相位,而倒谱表示频带之间的变化。与直接从频谱中获取的特征相比,发现倒频谱的特征可以更好地描述语音。

有几个稍微不同的定义。最初,倒谱变换定义为傅立叶变换->复对数->傅立叶变换[1]。另一个定义是傅立叶变换->复对数->傅立叶逆变换[2]。后一种定义的动机在于其分离卷积信号的能力(人类语音通常被建模为激励和声道的卷积)。

已发现在语音识别系统中表现良好的一个流行选择是在频域中应用非线性滤波器组(您所指的梅尔合并)[3]。特定算法定义为傅立叶变换->幅度平方->梅尔滤波器组->实对数->离散余弦变换。

此处可以选择DCT作为第二个变换,因为对于实值输入,DFT的实部是一种DCT。首选DCT的原因是输出是大致去相关的。与装饰相关的特征可以有效地建模为具有对角协方差矩阵的高斯分布。

[1] Bogert,B.,Healy,M.和Tukey,J.(1963)。回声时间序列的数量方差分析:倒谱,伪自协方差,跨倒谱和Saphe开裂。在“时间序列分析专题讨论会”的论文集中,第2页。209-243。

[2] Oppenheim,A.和Schafer,R.(1968)。语音的同态分析。在IEEE音频和电声学报16中。221-226。

[3] Davis,S.和Mermelstein,P.(1980)。连续口语单音节单词识别的参数表示形式的比较。在《 IEEE声学,语音和信号处理事务》第28页中。357-366。


回覆。特征提取中的PCA:真正的PCA在这里毫无意义,因为它取决于数据!如果从一个数据集计算出梅尔频率对数系数的PCA,然后再从另一个数据集计算出,则将发现一个不同的基础-这意味着,如果在特征提取过程中使用PCA,则从一个信号提取的特征将不会“与其他信号提取的特征相同”。现在进行此实验:在一组log Mel coef上计算PCA。从10个小时的最多样化的音频中提取。您会发现其基础与DCT基础非常相似。
pichenettes 2012年

3
换句话说:要在识别应用程序中有用,特征提取过程结束时的去相关转换必须是一种通常适合于“音频”而不是特定于数据的折衷方案。事实证明,DCT基础非常接近在大量音频上运行PCA时获得的基础!
pichenettes 2012年

我最近看到PCA在实验语音系统的特征提取过程结束时使用。该系统从训练数据中计算出PCA投影,然后使用相同的基础。
Seppo Enarvi 2012年

8

离散傅立叶变换和离散余弦变换之间的区别在于,DCT仅使用实数,而傅立叶变换可以使用复数。DCT最常见的用途是压缩。它等效于两倍长度的FFT。


1
但是,可以设想一个复杂序列的DCT / DST,其中一个人分别采用实部和虚部的DCT / DST。

所以可以说,如果我计算DFT可以免费获得DCT,那么我要做的就是删除向量的虚部。如果我错了,请纠正我。
Marek

1
比这要复杂一些,但是可以很容易地在FFT和DCT之间转换。
PearsonArtPhoto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.