原始的音频很难提取特征,需要进行傅里叶变换将时域信号转换到频域进行分析。音频进行傅里叶变换后,结果为复数,复数的绝对值就是幅度谱,而复数的实部与虚部之间形成的角度就是相位谱。经过傅里叶变换之后获得的幅度谱特征明显,可以清楚看到基频和对应的谐波。基频一般是声带的频率,而谐波则是声音经过声道、口腔、鼻腔等器官后产生的共振频率,且频率是基频的整数倍。Griffin-Lim将幅度谱恢复为原始波形,但是相比原始波形,幅度谱缺失了原始相位谱信息。音频一般采用的是短时傅里叶变化,因此需要将音频分割成帧(每帧20ms~50ms),再进行傅里叶变换,帧与帧之间是有重叠的。Griffin-Lim算法利用两帧之间有重叠部分的这个约束重构信号,因此如果使用Griffin-Lim算法还原音频信号,就需要尽量保证两帧之间重叠越多越好,一般帧移为每一帧长度的25%左右,也就是帧之间重叠75%为宜。Griffin-Lim在已知幅度谱,不知道相位谱的情况下重建语音,算法的实现较为简单,整体是一种迭代算法,迭代过程如下:1.随机初始化一个相位谱;2.用相位谱和已知的幅度谱经过逆短时傅里叶变换(ISTFT)合成新语音;3.对合成的语音做短时傅里叶变换,得到新的幅度谱和相位谱;4.丢弃新的幅度谱,用相位谱和已知的幅度谱合成语音,如此重复,直至达到设定的迭代轮数。
语音信号的产生模型包括发生源(Source)和滤波器(Filter)。人在发声时,肺部空气受到挤压形成气流,气流通过声门(声带)振动产生声门源激励$$e[n]$$。对于浊音,激励$$e[n]$$是以基音周期重复的单位冲激;对于清音,$$e[n]$$是平稳白噪声。该激励信号$$e[n]$$经过咽喉、口腔形成声道的共振和调制,特别是舌头能够改变声道的容积,从而改变发音,形成不同频率的声音。气流、声门可以等效为一个激励源,声道等效为一个时变滤波器,语音信号$$x[n]$$可以被看成激励信号$$e[n]$$与时变滤波器的单位响应$$v[n]$$的卷积:$$x[n]=e[n]*v[n]$$已知语音信号$$x[n]$$,待求出上式中参与卷积的各个信号分量,也就是解卷积处理。除了线性预测方法外,还可以采用倒谱分析实现解卷积处理。倒谱分析,又称为同态滤波,采用时频变换,得到对数功率谱,再进行逆变换,分析出倒谱域的倒谱系数。同态滤波的处理过程如下:1.傅里叶变换。将时域的卷积信号转换为频域的乘积信号:$${\rm DFT}(x[n])=X[z]=E[z]V[z]$$1.对数运算。将乘积信号转换为加性信号: