上一节主要介绍了关于语音信号处理中的时域处理方法,从本节开始我们将关注频域处理方面的内容。傅里叶变换在语音信号特征提取中具有非常重要的地位,为了使读者能对其有比较深刻的认识,我们将对傅里叶变换的相关内容进行详细介绍。

作者&编辑 | 小米粥

编辑 | 言有三

1. 傅里叶级数

对于一个周期为T,满足狄利克雷条件的信号x(t),可以将其展开为无数个不同频率正弦函数或余弦函数的叠加,即可写为无穷级数的形式,分别为:

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_02

其中,An为幅度,而w为基础频率,即

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_03

而nw(n=2,3,4...)为倍频,这就是傅里叶级数。对于n=0,正弦和余弦展开的第一项与t无关,其值为常数,因而通常分别写为:

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_04

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_05

以余弦函数为例,因为

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_06

所以可进一步展开写为

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_07

其中,cos(Φn)和sin(Φn)与t无关,其值为常数,令

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_08

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_09

可得

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_10

其中,a0=A0。可以看出,信号x(t)中关于频率为nw的部分由cos(nwt)和sin(nwt) 两部分共同表示,其对应的相位信息隐藏在an和bn中。另外,频率为nw的信号幅度、相位与an和bn的关系为

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_11

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_12

2. 傅里叶变换

首先,在傅里叶级数中,以下函数构成完备的正交函数集

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_13

其正交性如下所示:

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_14

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_15

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_16

其中m和n为任意正整数。

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_17

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_18

其归一性(傅里叶级数并不满足归一化)表示如下:

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_19

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_20

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_21

当建立一个正交完备集后,以其中的1,cos(nwt),sin(nwt)为基函数,那么任意一个周期为T的函数都可以通过这一组基函数的线性组合来表示,即

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_22

在求解a0,an和bn时,只需要计算x(t)在1,cos(nwt),sin(nwt)等基函数上的坐标即可。我们使用向量例子进行说明(可以将想象将函数拉直为向量)。对于互相垂直的正交基向量X和Y,则向量Z在Y上的投影坐标为(ZY)/(YY)。

对应地,函数内积定义为

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_23

易知

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_24

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_25

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_26

综上,对于任意周期为T的信号x(t)进行傅里叶变换时,可以直接使用上式求解a0,an和bn,然后计算不同频率信号的幅度和相位,最终可获得幅度谱和相位谱。

3. 复数傅里叶变换

首先需要说明的是,将傅里叶变换转换为复数傅里叶变换仅为数学计算上的形式变换,而上述信号频率分解的实质并没有改变。

根据欧拉公式

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_27

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_28

将x(t)的展开式中的三角函数进行复数替换,可得

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_29

合并同类项,可得

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_30

进一步可直接将三项总写为

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_31

其中,c0=a0,而

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_32

具体地,当n为正数时,有an=a-n以及bn=b-n(对应第二项);当n为负数时,有an=a-n以及bn=-b-n(对应第三项)。

在第一部分中,频率为nw的信号的幅度为An,在复数傅里叶变换中,该信号成分被两个信号成分共同表示。其中,一半幅度出现在对应的正数频率中,而另一半幅度出现在对应的负数频率中(可将正频率想象为复平面中逆时针旋转的单位圆,而负频率为顺时针旋转的单位圆),其幅度均为

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_33

另外,这两者的相位值相反。

类似于上一部分,复数函数集{einwt}为完备正交集,其中

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_34

并且

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_35

那么类似于上,实际在求解cn直接计算x(t)在基函数einwt上的投影坐标,根据函数内积定义,即有

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_36

4. 离散傅里叶变换

实际中,我们通常获得的是离散信号而非连续信号。另外,我们通常将长度为T的离散信号x(t)以T为周期进行延拓,使之成为周期为T的周期信号,然后再做相应的处理。

对于信号x(t),,其基础频率为w=2π/T。假设我们的离散信号序列为在[0,T]的区间上对(t)匀采样获得N个离散点时,则离散信号序列的值依次为

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_37

将其简记为

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_38

接下来,我们讨论每个采样点的“组成成分”。首先,将点x(1·T/N)代入复数傅里叶变换的表达式,有

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_39

根据周期性eix=ei(x±2π),易知

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_40

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_41

将上式展开并根据周期性将具有相同指数的项合并,可有

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_42

类似的,对于x(k·T/N),直接代入复数傅里叶变换的表达式,有

【语音处理】时域信号处理利器再回顾:傅里叶变换_编程语言_43

可以看出,离散信号序列上的每个样本点均可由N个复数组合表示而成:

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_44

再次利用周期性, 这N个复数可变为

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_45

例如,当k=3,N=8时,N个复数为

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_46

则可等价转换为

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_47

随着k和N的取值不同,该转换关系也有所差异,但无论如何转换,任何采样点总能被

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_48

这N个复数组合表示。

为了简便令,记简写

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_49

则任意样本点表示为

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_50

此时,可令

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_51

则每个样本点均对应一个N 元一次方程。若考虑所有样本点,则存在N个N元一次方程,则可得到方程组

【语音处理】时域信号处理利器再回顾:傅里叶变换_人工智能_52

将中间矩阵的系数矩阵定义为傅里叶矩阵F。由于

【语音处理】时域信号处理利器再回顾:傅里叶变换_信号处理_53

可得

【语音处理】时域信号处理利器再回顾:傅里叶变换_机器学习_54

在实际的离散傅里叶变换中,给定离散序列的N个样本点,可根据傅里叶矩阵的逆得到N个复系数,即

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_55

需要注意的是,离散傅里叶变换得到的信号具有混叠现象。例如,对于求解到的v0,其实际数值为c0,cN,c-N,c2N,c-2N...的叠加;对于求解到的v1,其实际数值为c1,c1+N,c1-N,c1+2N,c1-2N...的叠加。

通常在实际处理中,我们将离散傅里叶变换得到N个系数v0,v1,...vN-1对应于频率为0,w,2w...的信号,但其实离散傅里叶变换得到频率为nw的信号本质上包含了复数傅里叶变换中对应的(n+N)w,(n-N)w,(n+2N)w,(n-2N)w...的成分,例如频率为w本质上包含(1+N)w,(1-N)w,(1+2N)w,(1-2N)w...的成分,其他系数情况类似。

由上述分析可知,由于采样精度的有限,即我们最多只能获得原始信号中频率为0,w,2w,...,(N-1)w的部分,其他的大于(N-1)w的频率部分将以某种方式混叠到0,w,2w,...,(N-1)w中,因而我们在实际工程中,通常要进行高精度的采样,这样才能在进行离散傅里叶变换时得到更准确的频谱分析结果。

5. 短时离散傅里叶变换

语音信号具有短时平稳性,即整段的音频信号可能缺乏变化规律,但是在比较小的时间尺度内,可以发现比较好的规律,因此在对语音信号进行处理时,通常先进行分帧加窗操作,然后在每个帧内使用离散傅里叶变换查看其帧内语音的频率域信息。

每一帧语音的离散傅里叶变换都能获得 频率-幅度。以时间为横轴,频率为纵轴,将幅度按照对应的时间、频率记录在矩阵中,可得到同时反应时频域特性的语谱图。目前诸多基于深度学习的语音信号处理模型均以语谱图作为处理目标。

【语音处理】时域信号处理利器再回顾:傅里叶变换_深度学习_56

对于语谱图,按时间逐帧提取,然后进行逆离散傅里叶变换,即可得到每一帧的语音信号。

[1] 韩纪庆, 张磊, 郑铁然. 语音信号处理.第2版[M]. 清华大学出版社, 2013.

[2] 赵力. 语音信号处理: 机械工业出版社[M]. 机械工业出版社, 2016.

[3] 卢官明, 宗昉. 数字音频原理及应用[M]. 机械工业出版社, 2012.

总结

通过两节的介绍,我们对傅里叶级数、傅里叶变换、复数傅里叶变换、离散傅里叶变换以及短时离散傅里叶变换等内容进行了详细的介绍,使读者能对语音信号的傅里叶变换具有更深刻的理解。