语音信号处理 7:语音信号的非线性产生模型
在传统的线性语音产生模型中,语音信号是声道在激励信号的作用下发生共振而产生的输出。在发音的过程中声道处于运动状态,由于这种运动和语音信号相比变化缓慢,因此这个过程一般可以用时变的线性系统来模拟。
线性语音产生理论是基于这样的假设:来自肺部的气流在声道中以平面波的形式传播。这个传统语音产生模型多年来一直都是语音研究者进行语音分析和语音处理的基础。而在 20 世纪 80 年代,Teager 等在语音和听觉实验中发现,在声道中传播的气流并不总是以平面波的形式传播,而是有时分离,有时附着在声道壁上。根据一些实验的观测结果,Teager 给出了一个语音产生模型,如下图所示。在这个模型中,从声门射出的气流像一个喷嘴,它在经过声道时极度不稳定,这种不稳定性体现在气流在离声道壁最近的地方会附着、然后分离、再附着,这样会改变声道的有效截面积。从图中可以看出,当气流通过真正的声带和伪声带之间的腔体时会存在涡流,而经过伪声带之后的气流又会重新以平面波的形式传播。Teager 认为,在伪声带处的涡流区域也会产生语音,并且对语音信号有调制作用。这样,语音信号应该由平面波部分的线性部分和涡流区域的非线性部分共同组成。与传统的语音产生模型相比,Teager 语音产生模型的特点在于考虑到有涡流存在,以及涡流会对语音信号产生影响。在实验结果的基础上,Teage 通过工程化处理给出了一个 Teager 能量算子(Teager energy operator)。他在利用该算子对单个共振峰信号的能量跟踪时发现,在一个基音周期中存在着多个激励脉冲。Teager 认为这种多个激励脉冲的存在,在一定程度上说明语音信号不仅仅由声门的激励产生,也可以由声道中存在的涡流来产生。在后来的研究中,Thomas 和 McGowan 也证实了在语音产生的过程中,会存在着涡流这种非线性现象。Thomas 利用液体流模拟声道的过程中发现了涡流的存在,McGowan 从流体力学角度证明了涡流的存在,同时证明了涡流同样可以作为一个声源产生声音。
图 语音的非线性产生模型
基于上述的这种非线性现象的存在,许多学者开始试图提出一个新的语音产生模型来解释语音产生的过程,其中最为成功的是 1993 年 Maragos 从语音是由声道共振产生的角度,提出的一个新模型来描述语音产生过程,这就是调频-调幅模型(AM-FM modulation model)。在这个模型中,语音信号中的单个共振峰的输出,相当于以该共振峰频率为载波频率进行频率调制和幅值调制的结果,进一步假定语音信号是由若干个共振峰经过这样调制结果的叠加而成。这样,就可以用能量分离算法(energy separation algorithm),将与每个共振峰相对应的瞬时频率从语音信号中分离出来。利用这个瞬时频率,就可以得到一些描述语音信号本身基本特性的一些特征。这个模型后续被广泛应用到语音信号处理领域,并获得一定程度的成功。
1. 调频-调幅模型的基本原理
在调频-调幅模型中,假定语音信号是由若干个共振峰的幅值调制和频率调制叠加的结果。对于一个载波频率为 fc,频率调制信号为 q(t),由 a(t)来控制幅值的调制信号,可以表示为
这里的载波频率与每个共振峰频率对应,
为在 t 时刻的瞬时相位。可以将瞬时频率定义为瞬时相位的变化率,即为 f(t)=fc+q(t),它反映了在载波频率附近的频率是按着频率调制信号来变化。这样,r(t)可以看作是语音信号中的单个共振峰的输出。可以将语音信号看作是由若干个这样的共振峰调制信号的叠加而成,则语音信号可以表示为
其中,K 为总的共振峰数目;rk(t)为用第 k 个共振峰作为载波频率的频率调制和幅度调制后的信号。对于单个共振峰的调制信号 rk(t),可以用一个能量分离算法将幅度调制后的幅值包络|a(t)|和频率调制后的瞬时频率 f(t)从语音信号中分离出来,这个能量分离算法是根据 Teager 能量算子发展而来的。而 Teager 能量算子无论是在连续域,还是在离散域中对信号分析都很有帮助,并且这个算子在时间伸缩、复合函数,以及函数的算术运算等情况下具有很多特性,利用这些特性可以简化计算,使得表达更清晰。
2. Teager 能量算子
Teager 能量算子在连续域和在离散域中有两种表达形式。在连续域中,这个算子可以表示为信号 s(t)的一阶和二阶导数的函数,具有如下形式:
或简写为
其中,ψC[•]表示连续域的 Teager 能量算子,由后面的公式推导可以看出,这个算子实质上是在一定程度上对语音信号的能量提供一种测度,它可以表示出对单个共振峰能量的调制状态。也可以用这样的能量算子表示两个时间函数 g 和 h 的相关性,即
注意,如果函数 g 和函数 h 的顺序不同,结果也不相同。由于要利用计算机进行语音信号处理,一般需要将上述公式进行离散化。在离散域中,一般用差分来代替导数运算,式(2-16)可以改写如下:
其中,ψD[•]表示离散域的能量算子。
从式(2-19)可以看出,能量算子输出的信号的局部特性,只依赖于原始语音信号本身和它的时域差分,即计算能量算子在第 n 点处的输出,只需知道该样本点和它前后各一个样本点的值。这样会使得能量算子输出后的信号依然与原始信号保持相似的局域性。J.Kaiser 在 1990 年给出这种表示形式,并且其研究表明,如果对多分量信号应用 Teager 能量算子时,会产生交叉因子的干扰,因此一般它只能用于单共振峰的调制信号上。利用这个 Teager 能量算子,可以把语音信号中的幅值调制部分与频率调制部分有效地分离开,这就是下面要介绍的能量分离算法。
3. 能量分离算法
能量分离算法(energy separation algorithm, ESA)使用非线性能量算子来跟踪语音信号,将只包含单个共振峰的语音信号分离成频率分量和幅值分量。其中单个共振峰的调制信号,具有与式(2-14)相似的形式,用离散形式可以重新表达如下:
其中,瞬时频率为 f(n)=fc+q(n),表示在中心频率 fc 附近按照调制信号频率 q(n)来变化的频率。对这样的信号进行能量算子操作,根据前述的性质可得到如下结果:
r(n)信号的能量算子输出由两部分组成:一个是频率调制后的瞬时频率;另一个是幅值调制后的幅值包络。这个结果表示了该算子的能量跟踪能力,所以将这个算子称为能量算子。可以看出,r(n)信号的能量算子输出是幅值包络|a(n)|和瞬时频率 f(n)的一个函数,它可以反映出幅值和频率的变化。如果 r(n)信号是一个简单的调频脉冲信号,其幅值不变,则经过 TEO 操作后的输出如下图所示。可以看出,当信号的幅值不发生变化时,TEO 操作后的信号可以反映出频率的高低。
图 线性调频脉冲的 TEO 输出
对于 r(n)的导数,它的能量算子的输出仍然是只与|a(n)|和 f(n)有关的一个函数。考虑到差分的对称性,可以用 x(n)=[r(n+1)-r(n-1)]/2 代替 r(n)的导数,则
将 f(n)、a(n)作为未知函数,对式(2-21)及式(2-22)联立求解,可得到信号的幅值包络和瞬时频率如下:
其中,T 为采样周期。这里是用样本间距为 2 的差分来代替一阶导数。如果用前向差分、后向差分来代替一阶导数,可以得到另一种表达形式。其中前向差分和后向差分分别为
用
来代替 r(n)的一阶导数的能量算子的输出结果,可得
这两种表达方式的核心是,由于调频-调幅信号的能量算子输出与该信号一阶导数的能量算子输出都是瞬时频率和幅值包络的函数,则根据这两个输出,可以分别求出瞬时频率和幅值包络。上述两种表达方式的不同之处在于,前一种是利用两个样本间距的差分来代替导数,后一种是用一个样本间距的前向、后向差分共同来代替导数。两种方法中的瞬时频率都是以每个样本点为单位,具有较高的时间分辨率。有分析表明,后一种表达方式的误差略小于前一种表达方式的误差,但前一种方式具有更简单的数学分析过程,所以更经常使用。
4. 调频-调幅模型的应用
调频-调幅模型在语音信号分析中得到了广泛的应用,主要表现在共振峰轨迹的跟踪、基音频率的检测及端点检测等方面。其中关于共振峰获取的应用为主要方面。共振峰的检测是语音信号处理的一个重要部分,这是因为共振峰参数随时间变化的情况,反映了声道对各种发音的调音运动的变化情况,它最能体现声道的一些自然特性,对于更好地理解语音信号的产生、分析语音信号的特性变化有着重要的作用。传统的共振峰检测方法是通过找到平滑的倒谱或 LPC 频谱的峰值,以及通过求解 LPC 多项式的根来检测,这些方法通常是认为在一个短时语音帧内的共振峰是不变的。基于调频-调幅模型的共振峰检测方法,由于可以获得任意一个时域点 n 处的瞬时频率,因而具有更高的时间分辨率。对于单共振峰调制的信号,可以通过式(2-23)、式(2-24)或式(2-26)~式(2-28)来求得瞬时频率的值。但对于语音信号,它是由多个共振峰调制结果叠加而成,如果直接对这样的多分量信号进行能量分离算法操作,会产生交叉因子的干扰现象。因此,需要用一组滤波器将每个共振峰调制的信号分离出来,然后再应用上述的 ESA 算法进行幅值包络和瞬时频率的分离。在分离出来的瞬时频率基础上做进一步的迭代,得到共振峰的中心频率;这就是基于能量分离算法的共振峰检测。通常用 Gabor 滤波器分离语音信号中与单个共振峰对应的那部分信号,这个滤波器具有高斯分布的形式,同时具有最高时间分辨率和频率分辨率的优点,因而被广泛使用。Gabor 滤波器在离散时域的形式为
其中,ω=2πf,f 为滤波器的中心频率;α为滤波器的带宽参数;T 为采样周期。N 的选择应使 g(n)在 n=N 时接近于 0。根据经验知识,满足下面公式的 N 值效果最好:
为了将语音信号中的瞬时频率和幅值调制包络分离出来,在应用上述的 ESA 算法之前,应该合理地选择各滤波器的中心频率和带宽。其中滤波器带宽参数的选择非常重要,它要求既能包含想要的共振峰信号,又必须可以排除相邻的共振峰信号。一般为了简化起见,假定滤波器带宽固定,并根据经验获得该参数的值。通常当共振峰的中心频率 fc<1000Hz 时,带宽参数α为 800Hz,其他情况下的带宽参数α为 1100Hz 为一种最佳选择。如果允许带宽变化,有关合成 AM-FM 语音信号的研究表明,最佳的带宽应该为共振峰之间距离的线性函数。在选择好带宽的前提下,对共振峰与滤波器的中心频率可以进行迭代地估计。从一些实验结果可以看出,当滤波器的中心频率和共振峰频率有几百赫兹的偏差时,它的瞬时频率的平均值仍然接近于共振峰的峰值频率,并且瞬时频率的平均值接近于功率谱中的峰值或局部最大值。基于这样的观测,可以认为在给定一个初始估计中心频率的前提下,用瞬时频率均值可以迭代地估计出滤波器的中心频率,在每一步迭代的过程中调整滤波器的中心频率,达到收敛时的中心频率即为该共振峰的中心频率。对于候选共振峰,当带宽固定,具体的中心频率迭代公式在离散域表达如下:
即用前一次的中心频率为[插图]的滤波器滤波后的语音信号,采用 ESA 算法进行能量分解,求得第 i 次的瞬时频率 fi(n),再次用中心频率迭代公式(2-31)迭代求得新的中心频率。用新的中心频率构造的滤波器重新对语音信号进行滤波,再用 ESA 算法求得瞬时频率,开始新的一轮迭代。一般认为当相邻的两次迭代中心频率的变化范围不超过 5Hz 时,即认为已经收敛,可以结束迭代过程。其中,中心频率初始值的设定可以根据求 LPC 多项式的根所求得的共振频率来获得。这种方法以调频-调幅模型为基础,充分考虑了语音产生模型中的非线性现象的存在,并且可以在任意样本点获得瞬时频率,具有较高的时间分辨率。调频-调幅模型同样可以应用于基频提取上。可以采用与共振峰提取类似的方法,只是使用与第一共振峰区域匹配的一个 Gabor 带通滤波器对语音信号进行滤波,然后用 ESA 算法对瞬时频率和幅值调制包络进行分离,与上述方法一样求得中心频率,通过它来获得基音频率的估计值。也可以在语音信号经过带通滤波器滤波之前,先对语音信号进行 Teager 能量算子操作,再将 Teager 能量算子输出分成固定帧,计算交叉相关系数,然后进行峰值检测提取出基频的值。可以对能量算子的输出按照一定的方法提取基频信息,这是因为元音信号的 Teager 能量算子的输出,仍与原始语音信号保持相同的基音频率。
另外,在端点检测方面也可以应用调频-调幅模型。这是因为 Teager 能量算子不仅可以反映幅值变化,也可以反映频率变化。幅值变化的越快,或频率变化的越快,则能量算子的输出值越大,并且针对不同类别的信号时,Teager 能量算子的输出也反映出不同的特性。应用这个特点可以进行以 Teager 能量算子输出的能量为特征的端点检测。可以简化计算如下:
计算出每帧信号的功率谱;
对功率谱中每个样本点用频率的平方加权,计算加权后的功率谱和的平方根即为所要求的每一帧的能量,称这个能量为 Teager 帧能量测度;
以这个能量为基础进行端点检测。
实验表明,用这种方法获得的帧能量测度进行端点检测,可以得到比用传统的能量进行端点检测更好的结果。近年来,在语音信号处理中,调频-调幅模型逐渐受到重视,尤其是在变异语音的分析及处理中。这里的变异是指在环境发生异常变化的情况下,话者由于感觉到这种变化的存在,在语音产生过程中会做出相应的调整,使得产生的语音和正常语音会有所不同,即发生了语音变异。一般情况下,当有变异存在时,表达语音信息的特征会受到影响,使得这些特征不能准确地表达所包含的信息,从而导致一些语音识别系统的识别性能下降。因此在有变异情况存在时,在一定程度上给语音特征的准确提取带来困难。对于正常语音和变异语音,它们之间的变化主要体现在声道性的变化上,这一点可以用共振峰参数来刻画。Hansen 等假定语音信号是由线性分量和非线性分量共同组成,而在变异情况下,非线性分量在正常语音和变异语音之间的变化比较大。基于这样的假定,利用调频-调幅模型提取出的共振峰信息作为变异语音的特征,并将此特征应用于变异语音的分类中,取得了比传统方法更好的分类效果。同时,与正常情况下产生的语音相比,变异情况下产生的语音的非线性现象更明显,采用调频-调幅模型和 Teager 能量算子,可以获得变异情况下语音的非线性特征,如 TEO-FM-Var 特征、TEO-Auto-Env 特征、TEO-Pitch 特征等。这些特征主要应用在变异语音的分类中,实验结果表明,这些非线性特征比传统的线性特征,如基频、音素或词的持续时间、强度等具有更好的分类结果。
版权声明: 本文为 InfoQ 作者【轻口味】的原创文章。
原文链接:【http://xie.infoq.cn/article/8860a3c18332d57d11354686a】。文章转载请联系作者。
评论