但是我注意到,在语音识别器中(例如CMU Sphinx中的默认前端),在第二个操作中使用离散余弦变换(DCT)而不是DFT是很常见的。这两个操作有什么区别?为什么要第一次进行DFT,然后第二次进行DCT?
#1 楼
离散傅里叶变换(DFT)和离散余弦变换(DCT)执行类似的功能:它们都将有限长度的离散时间矢量分解为缩放和平移基函数的总和。两者之间的区别在于每次转换使用的基础函数的类型; DFT使用一组与谐波相关的复指数函数,而DCT仅使用(实值)余弦函数。DFT被广泛用于一般光谱分析应用中,并发现字段范围。它也用作利用信号频域表示特性的技术的基础,例如重叠保存和重叠添加快速卷积算法。
DCT经常使用在有损数据压缩应用程序中使用,例如JPEG图像格式。 DCT使其非常适合压缩的特性是其高度的“频谱压缩”;在质量上,与DFT等其他变换相比,信号的DCT表示倾向于将更多能量集中在少量系数中。这对于压缩算法是理想的;如果您可以使用相对较小的DCT系数集来近似表示原始(时域或空间域)信号,则可以通过仅存储包含大量能量的DCT输出来降低数据存储需求。
评论
$ \ begingroup $
@JasonR“在质量上,与DFT等其他变换相比,信号的DCT表示倾向于将更多能量集中在少量系数上。”嗯...我不确定我是否完全同意你的看法-仅仅是因为DFT已经包含了一个余弦,信号将要投射到该余弦上-DFT怎么会不显示出那个投射的强度DCT可以吗?谢谢。
$ \ endgroup $
–太空
2011年12月3日,下午5:25
$ \ begingroup $
这是DCT的一个非常著名的功能,它解释了DCT在众多压缩算法中的使用。我认为这与DCT在信号边缘处假定的边界条件有关,该边界条件与DFT有所不同。
$ \ endgroup $
–Jason R
2011年12月4日在16:54
#2 楼
我发现DCT Wiki中的一些细节(也由Pearsonartphoto共享)指出DCT非常适合压缩应用程序。非正式概述部分的末尾很有帮助(很容易理解)。特别是,众所周知,函数中的任何不连续性都会降低傅立叶级数的收敛速度。 ..函数越平滑,准确地表示该函数所需的DFT或DCT项越少,可以压缩的项就越多...但是,DFT的隐式周期性意味着不连续性通常发生在边界处。相比之下,两个边界甚至总是处在DCT的情况下,在边界处会连续延伸。这就是DCT通常在信号压缩方面比DFT和DST更好的原因。实际上,II型DCT通常用于此类应用程序,部分原因是出于计算方便的原因。此外,您可能还会发现此答案也很有用(从数学上来说)。 stackexchange.com)。它指出:余弦变换仅是计算具有特殊对称性的序列的傅立叶变换的捷径(例如,如果
序列表示来自一个偶函数)。
#3 楼
之所以会在特征提取过程中看到两次应用傅立叶变换,是因为这些特征基于倒谱概念。倒谱是文字频谱的一种玩法-本质上,想法是通过傅立叶变换将信号变换到频域,然后像频谱是信号一样执行另一次变换。频谱描述了在每个频带的振幅和相位上,倒频谱表征了频带之间的变化。与直接从频谱中获取的特征相比,发现倒频谱的特征可以更好地描述语音。
有一些稍微不同的定义。最初,倒谱变换定义为傅立叶变换->复对数->傅立叶变换[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。
评论
$ \ begingroup $
重新。特征提取中的PCA:真正的PCA在这里毫无意义,因为它取决于数据!如果您从一个数据集计算出梅尔频率对数系数的PCA,然后再从另一数据集中计算出,则将发现一个不同的基础-这意味着,如果在特征提取过程中使用PCA,则从一个信号提取的特征将不会“与其他信号提取的特征相同”。现在进行此实验:在一组log Mel coef上计算PCA。从10个小时的最多样化的音频中提取。您会发现其基础与DCT基础非常相似。
$ \ endgroup $
–小食
2012年2月14日上午9:13
$ \ begingroup $
换句话说:要在识别应用程序中有用,特征提取过程结束时的去相关转换必须是一种适合一般“音频”的折衷方案,而不是特定于数据的折衷方案。事实证明,DCT基础非常接近在大量音频上运行PCA时获得的基础!
$ \ endgroup $
–小食
2012年2月14日上午9:16
$ \ begingroup $
我最近看到PCA在实验语音系统的特征提取过程结束时使用。该系统从训练数据中计算出PCA投影,然后使用相同的基础。
$ \ endgroup $
– Sepo Enarvi
2012年3月22日,3:30
#4 楼
离散傅立叶变换和离散余弦变换之间的区别在于,DCT仅使用实数,而傅立叶变换可以使用复数。 DCT最常见的用途是压缩。相当于两倍长度的FFT。评论
$ \ begingroup $
但是,可以设想一个复杂序列的DCT / DST,其中一个人分别采用实部和虚部的DCT / DST。
$ \ endgroup $
–user276
2011年12月1日下午4:52
$ \ begingroup $
所以我们可以说,如果我计算DFT可以免费获得DCT,那么我要做的就是删除向量的虚部。如果我错了,请纠正我。
$ \ endgroup $
–马雷克
19-10-6在11:10
$ \ begingroup $
比这复杂一点,但是可以很容易地在FFT和DCT之间转换。
$ \ endgroup $
–PearsonArtPhoto
19-10-6在15:21
评论
因此,有几个人解释了这两个过程之间的区别。有谁知道为什么在语音识别中在不同的时间使用dft和dct?第一个dft的输出是否被认为是对称的?还是对dct的压缩适合在前13个点中打包更多信息(语音处理通常仅使用这些点)?您的问题是否与另一个问题中提出的梅尔频率倒谱有关?
我的问题有两个部分:DCT和DFT之间的区别,以及为什么在应用DFT和Mel Binning之后,DCT通常用于信号处理,而不是另一个DFT。
为什么在图像处理中不使用离散正弦变换而不是离散余弦变换?
嗨,rimondo,这是一个很好的问题,但您已将其发布为答案。您应该提出一个新问题。