为了深入理解MFCC,也就是梅尔倒谱系数,这个博文想要做的就是理解什么是倒谱,为什么要进行倒谱。至于如何具体的求解倒谱在这里并没有真正提到,只是大概提了一点思路。下一步会着手从人耳的的生理构造开始,理解梅尔频率是如何定义出来的,以及后人如何对它进行不断修正。再接下来就是看如何提取语音的MFCC参数,最终达到理解每一个提取步骤及其做设计的数学算法。
MFCC研究(一)之语音信号的同态解卷积
一、背景:
①在声源—滤波器的声学模型中,我们将语音信号可以看成是由激励信号和声道响应卷积所产生的。而在语音信号处理的各个领域中,通过语音信号求得声门的激励信号和声道冲激响应这两种信号也有着非常重要的意义。因此我们现在要完成的任务就是将这两种信号从一个语音信号中分离出来。
②“解卷积”就是意味着要将这两种卷积分量分开。解卷的算法总共有两大类,一类算法称为“参数解卷”,即线性预测分析,另一类算法称为“非参数解卷”,即同态解卷积。而现在我们要解决当前任务的方法就是同态解卷积。
二、符号定义:
:采样后的语音信号,已经离散化。
:离散的声门激励信号
:离散的声道冲激响应
:特征系统,将时域上的语音信号转化为倒谱域上的语音信号
:逆特征系统,将倒谱域上的语音信号转化为时域上的语音信号
:在倒谱域上对信号进行处理,常见的处理方式是将声源信号和声道信号进行分离
:倒谱域上的语音信号【注:凡是信号上面有尖角标注的均为倒谱域上的信号,其余就不一一列举】
三、基本框图:
同态解卷积整体系统框图(图1.1)
主要任务部分:特征系统的系统框图(图1.2)
逆特征系统的系统框图(图1.3)
四、基本原理解释:
第一部分:(如图1.2所示)
原语音信号由声源激励信号与声道冲激响应卷积所得:
将语音信号经过Z变换之后可得到:
再将其经过对数变换:【此时声源信号与声道信号就化为对数相加的关系,此时进入倒谱域。】
再将其逆Z变换:【此时就得到倒谱域上的声源信号,此信号是由倒谱域上的声源激励信号与倒谱域上的声道冲激响应相加得到的】
第二部分:(如图1.1所示)
根据两个不同信号在倒谱域上的不同特点,将二者分离开来。一般认为存在一个N,当n>N时声道响应在倒谱域上为零,而当n<N时声源激励在倒谱域上接近为零。二者具体的特点将在后面讨论。
第三部分:(如图1.3所示)
与第一部分完全相反,将倒谱域上的信号经过Z变换,指数变换,逆Z变换,最终又变回时域上的语音信号。
五、两个信号的倒谱域上的分析:
1声源激励信号:(以下分析步骤可以认为此时,继而观察此时得到的的特性)
从物理意义上来说,声源激励信号是指的人发声时 ,肺部输出的气流 ,经过了喉部的声门 ,但还没有到达口腔和鼻腔之前的声音信号。此时由于喉部声门中声带是张开还是闭合,我们将发出的声音分为清音和浊音两种。声带张开,气流可以*流通,所形成的声音为清音;声带闭合,气流冲破声带,又随之引起声带循环往复的张开闭合,所形成的声音为浊音。
当发出的是清音是,我们认为声源激励信号是能量较小、频谱均匀分布的白噪声;当发出的是浊音是,我们认为声源激励是以声带振动为周期(即基音周期)的有限冲激序列:
(其中M是正整数,为振幅因子,为基音周期)
此时我们将输入,观察输出的特性:
将其进行Z变换,得到:
我们可以把这个多项式相加转化为因式乘积的形式,即
接下来我们对其取对数,开始转换为倒谱域:
【注意式子中有的地方为, 有的地方为 ,并且 (这个不等式我并不理解是怎么得到的)】
用泰勒展开式展开:【注意:此时有收敛域 】
最后将其逆Z变换:,其中:
我们观察最后的得到的倒谱域下的浊音的声源激励信号,可以看到如下特点:
①时域下为有限长周期为的冲激序列,转换成无限长周期同样为的冲激序列
②观察我们可以知道,冲激序列的振幅随着k值得增大而衰减
依据第一条特点,将来我们分离得到声源倒谱后,可以很容易得到声源的周期频率也就是基音频率;同样由于清音的倒谱没有明显的峰点,而浊音的倒谱只在一部分点上不为零,我们就可以进行清音浊音的区分。
2声道冲激响应:
声道冲激的物理意义有很多种理解。最有效、最突出的解释就是 声门传出的激励信号(无论是清音还是浊音)进入口腔和鼻腔,由于舌齿唇相对位置的不同腔内的构造不同,信号某些频率得到增强,某些频率得到抑制。而那些特别突出的被增强的频率就是我们常说的共振峰频率。【题外话:除了之前所说的将音素分为清音和浊音外,我们还可以将音素划分为元音和辅音,辅音又可以划分为擦音、塞音、塞擦音、变音、鼻音。对于元音来说,我们仅用其前三个共振峰基本就可以将其表示出来;但是对于辅音来说,我们一需要至少五个以上的共振峰才可以做到。】 除了上面提到的从共振峰 的角度理解声道冲激,还有人将声道理解成不同截面积的声管串联而形成声道,一般是看做两到三个声管串联。由于前后声管的长度、截面积的不同,最终对气流造成的影响不同。
无论基于上面何种解释,我们都可以将声道激励响应在Z域内,用全极零模型表示出来:
其中|A|是一个实数,它是归一化V(z)得到的一个系数,而|a|,|b|,|c|,|d|的值在此都设为小于1.
上式表明:这个冲激响应在Z平面的单位圆内有个零点,个极点;在Z平面的单位圆外有个零点,有个极点。
后续的过程和特征系统和对声源激励信号处理的过程一致:将其对数化---->泰勒展开----->逆Z变换,最终得到声道响应在倒谱域的表达式:
对这个式子进行分析,我们可以看到如下特点:
1 它是一个双边序列,在均有值。
2 它是一个衰减序列,随着的增大而减小。
3如果信号v(n)本身是一个最小相位序列,即零点和极点都在Z平面单位圆内部,即,则只在n>=0的时候有值,即化为了一个因果序列。
4如果信号v(n)本身是一个最大相位序列,即零点和极点都在Z平面单位圆外部,即,则只在n< 0的时候有值,即化为了一个反因果序列。
所以我们可以看出,声道的特性完全取决于零极点的分布。另外,依据特点2,在实际中当采样频率为10KHZ时,在[-25,25]之外的值已经相当小,我们可以认为声道响应的倒谱只在这一范围内存在。这也就是为什么在之前的中,我们提到总可以找到一个整数N,当n>N时声道响应在倒谱域上为零。
最后,还有一点这个话题中并没有详细说明的是,在倒谱分析的过程中,信号Z变换后得到的将是一个复数,所以取对数时进行的是复对数的运算,这里会遇到一个相位卷绕的问题,有关如何解决这一问题,在此就先不多说了,也许之后的博文中会在提及。
以上内容的参考书目为《语音信号处理》(第二版) 清华大学出版社,有关相位卷绕的问题的解决办法也可以在里面找到。