3.2 语音信号的时域分析

对信号分析最自然、最直接的方法是以时间为自变量进行分析,语音信号典型的时域特征包括短时能量、短时平均过零率、短时自相关系数和短时平均幅度差等。在这一节中主要对这些时域的特征及它们的具体应用加以介绍。

典型的语音信号特性是随着时间变化而变化的。例如,浊音和清音之间激励的改变,会使信号峰值幅度有很大的变化;在浊音范围内基频有相当大的变化。在一个语音信号的波形图中,这些变化十分明显,所以要求能用简单的时域处理技术对这样的信号特征给以有效的描述。

3.2.1 短时能量分析

语音信号的能量随着时间变化比较明显,一般清音部分的能量比浊音的能量小得多。语音信号的短时能量分析给出了反映这些幅度变化的一个合适的描述方法。对于信号{xn)},短时能量的定义如下:

其中,hn)=w2n),En表示在信号的第n个点开始加窗函数时的短时能量。可以看出,短时能量可以看作语音信号的平方经过一个线性滤波器的输出,该线性滤波器的单位冲激响应为hn),如图3-4所示。

图3-4 短时能量的方块图表示

冲激响应hn)的选择,或者说窗函数的选择决定了短时能量表示方法的特点。为了反映窗函数选择对短时能量的影响,假设式(3-12)中的hn)非常长,且为恒定幅度,那么En随时间的变化将很小,这样的窗就等效为很窄的低通滤波器。很明显,我们要求的是对语音信号进行低通滤波,但还不是很窄的低通滤波,至少短时能量应能反映语音信号的幅度变化。因此出现了窗长选取上的矛盾,这种矛盾将在语音信号的短时表示方法的研究中反复出现。即希望有一个短时窗(冲激响应)以响应快速的幅度变化。但是,太窄的窗将得不到平滑的能量函数。并且窗函数的形状和长短直接影响着短时能量的性质。如果用xwn)表示xn)经过加窗处理后的信号,窗函数的长度为N,短时能量可表示为

短时能量主要有以下几个方面的应用:首先利用短时能量可以区分清音和浊音,因为浊音的能量要比清音的能量大得多;其次可以用短时能量对有声段和无声段进行判定,对声母和韵母分界,以及连字的分界等。在语音识别系统中,短时能量一般也作为特征中的一维参数来表示语音信号的能量大小和超音段信息。

短时能量由于是对信号进行平方运算,因而人为增加了高低信号之间的差距,在一些应用场合不太适用。解决这个问题的简单方法是采用短时平均幅值来表示能量的变化,其公式为

这里用加窗后信号的绝对值之和代替平方和,使运算进一步简化。短时平均幅值的实现如图3-5所示。

图3-5 短时平均幅度的方块图

3.2.2 短时平均过零率

短时平均过零率是语音信号时域分析中最简单的一种特征。顾名思义,它是指每帧内信号通过零值的次数。对于连续语音信号,可以考察其时域波形通过时间轴的情况。对于离散信号,实质上就是信号采样点符号变化的次数。如果是正弦信号,它的平均过零率就是信号的频率除以两倍的采样频率,而采样频率是固定的,因此过零率在一定程度上可以反映出频率的信息。语音信号不是简单的正弦序列,所以平均过零率的表示方法就不那么确切。然而短时平均过零率仍然可以在一定程度上反映其频谱性质,可以通过短时平均过零率获得谱特性的一种粗略估计。短时平均过零率的公式为

式中,sgn[•]是符号函数,即

图3-6给出了短时平均过零率的计算过程。可以看出,首先对语音信号序列xn)进行成对处理,检查是否有过零现象,若有符号变化,则表示有一次过零现象;然后进行一阶差分计算,取绝对值;最后进行低通滤波。

图3-6 短时平均过零率的计算

短时平均过零率可以用于语音信号分析。在发浊音时,声带振动,因而声门激励是频率为基频的声压波,它在经过声道时产生共振。尽管声道有若干个共振峰,但由于声门的影响,其能量分布主要集中在3kHz频率范围内;反之,在发清音时声带不振动,声道的某部分受到阻塞产生类白噪声的激励,该激励通过声道后能量集中在比浊音时更高的频率范围内。因此,浊音时的能量集中于低频段,而清音的能量集中在高频段。由于短时平均过零率可以在一定程度上反映频率的高低,因此在浊音段,一般具有较低的过零率,而在清音段具有较高的过零率,这样可以用短时平均过零率来初步判断清音和浊音。然而这种高低仅是相对而言的,没有精确的数值关系。

另外,可以将短时平均过零率和短时能量结合起来判断语音起止点的位置,即进行端点检测。在背景噪声较小的情况下,短时能量比较准确,但当背景噪声较大时,短时平均过零率可以获得较好的检测效果。因此,一般的识别系统,其前端的端点检测过程都是将这两个参数结合用于检测语音是否真的开始。短时平均过零率的另一个用途是作为语音频域分析的一个中间步骤。方法是不用窗口型的低通滤波器来处理过零,而改用多通道的带通滤波器,这时的输出就是频域的短时平均过零率,如果加上用带通滤波器的短时能量的输出,就可以得到语音信号的频域分析结果。

从上面定义出发计算的短时平均过零率容易受到低频的干扰。解决这个问题的一种方法是对上述定义做一个简单的修改,即设立一个门限T,将过零率的含义修改为跨过正负门限的次数,如图3-7所示。

图3-7 门限短时平均过零率

于是,有

这样计算的短时平均过零率就有一定的抗干扰能力。即使存在小的随机噪声,只要它不超过正、负门限所构成的带,就不会产生虚假过零率。在语音识别前端检测时还可以采用多门限过零率,可进一步改善检测效果。

3.2.3 短时自相关函数和短时平均幅度差函数

1.自相关函数

一般情况下,相关函数用于测定两个信号在时域内的相似程度,可以分为互相关函数和自相关函数。互相关函数主要研究两个信号之间的相关性,如果两个信号完全不同、相互独立,那么互相关函数接近于零;如果两个信号的波形相同,则互相关函数会在超前和滞后处出现峰值,可据此求出两个信号之间的相似程度。自相关函数主要用于研究信号本身的同步性、周期性。这里主要讨论自相关函数的性质及应用。

对于离散的语音数字信号xn),它的自相关函数的定义如下:

如果信号是随机的或周期的,这时的定义为

式(3-18)和式(3-19)表示一个信号和延迟k点后的该信号本身的相似程度。在任何一种情况下,信号的自相关函数都是描述信号特性的一种方便的方法。它具有很多性质:

(1)如果信号xn)具有周期性,那么它的自相关函数也具有周期性,并且周期与信号xn)的周期相同;

(2)自相关函数是一个偶函数,即Rk)=R(-k);

(3)当k=0时,自相关函数具有最大值,即信号和自己本身的自相关性最大。并且这时的自相关函数值是确定信号的能量或随机信号的平均功率。

从这些性质可以看到,自相关函数相当于一个特殊情况下的能量;而更为重要的是,自相关函数提供了一种获取周期性信号周期的方法。可以看出,在周期信号周期的整数倍上,它的自相关函数可以达到最大值。即可以不用考虑信号的起始时间,而从自相关函数的第一个最大值的位置来估计其周期,这个性质使自相关函数成为估计各种信号周期的一个依据。因此,将自相关函数的定义用到语音信号处理上,以获得其短时自相关函数的表示是十分重要的;这就是下面将介绍的短时自相关函数。

2.短时自相关函数

短时自相关函数是在前面自相关函数的基础上将信号加窗获得的,即

式中,n表示窗函数是从第n点开始加入。通过上述对自相关函数的分析易于证明,Rnk)是偶函数,即Rnk)=Rn(-k);Rnk)在k=0时具有最大值,并且Rn(0)等于加窗语音信号的能量。

如果定义

那么式(3-20)可以写为

该式表明,序列xnxnk)经过一个冲激响应为hkn)的滤波器滤波后得到上述的自相关函数,将其用图3-8表示如下。

图3-8 短时自相关函数的计算

如果xn)是一个浊音性的周期信号,那么从自相关函数的性质可知,其短时自相关函数也是呈现出明显的周期性,并且它的周期与原信号本身的周期相同。相反,清音是接近于随机噪声,其短时自相关函数不具有周期性,并随着k的增大而迅速减小。因此可以利用这一特点决定一个浊音的基音周期。

图3-9给出了三个自相关函数的例子,这是在N=401时用10kHz采样频率获得的语音计算的自相关函数,并分别计算了滞后为0≤k≤250时的自相关值。前两种情况是对浊音语音段,而第三种情况是对一个清音段。由图3-9(a)、图3-9(b)可见,对应于浊音语音的自相关函数,具有一定的周期性。在相隔一定的采样后,自相关函数达到最大值。在图3-9(c)上自相关函数没有很强的周期峰值,表明在信号中缺乏周期性,这种清音语音的自相关函数有一个类似噪声的波形,有点像语音信号本身。浊音语音的周期可用自相关函数中的第一个峰值的位置来估算。在图3-9(a)中,峰值约出现在72的倍数上,由此估计出该浊音的基音周期为7.2ms或为140Hz左右的基频。在图3-9(b)中,第一个最大值出现在第58个采样的倍数上,它表明平均的基音周期约为5.8ms。

图3-9 三种自相关函数

在语音信号处理中,计算自相关函数所用的窗口长度与计算短时能量时的情况略有不同。这里,N值至少要大于基音周期的两倍,否则将找不到除R(0)外最近的一个最大值点。另一方面,N值也要尽可能地小,因为语音信号的特性是变化的,N过大将影响短时性。由于语音信号的最小基频为80Hz,因而其最大周期为12.5ms,两倍周期为25ms,所以10kHz采样时窗宽N为250个采样点。因此,当用自相关函数估算基音周期时,N不应小于250。由于基音周期的范围很宽,所以应使窗宽匹配于预期的基音周期。对基音周期较长的信号,使用较窄的窗将得不到预期的基音周期;而对基音周期较短的信号,使用较宽的窗,自相关函数将对许多个基音周期做平均计算,这是不必要的。为此,可采用基于基音周期的自适应窗口长度法,但是这种方法比较复杂。为了解决这个问题,可用“修正的短时自相关函数”来代替短时自相关函数。

修正的短时自相关函数定义为

与上面公式相比,不同的是两个窗函数用了不同的长度。可以选取使其包括的非零间隔以外的采样,比如在直角窗时,可以使

因此,修正自相关函数可以写为

式中,k是最大的延迟点数。

修正短时自相关函数和短时自相关函数计算数据之间的差别如图3-10所示。其中图3-10(a)表示一个语音波形;图3-10(b)表示由一个矩形窗选取的N个采样点;图3-10(c)表示N+K长度的矩形窗选取的采样点。严格地说,修正自相关函数是两个不同的有限语音段的互相关函数。因而,具有互相关函数的特性,而不再是一个自相关函数,例如。然而在周期信号的周期倍数上有峰值,所以与最近的第二个最大值点仍表示基音周期的位置。

图3-10 修正短时自相关函数计算中两个不同长度的短时信号说明

3.短时平均幅度差函数

短时自相关函数是语音信号时域分析的重要参数,但是计算短时自相关函数需要很大的计算量,其原因是乘法运算所需的时间较长。简化计算自相关函数的方法有很多,但都无法避免乘法运算。为了避免乘法运算,常常采用另一种与自相关函数有类似作用的参量,即短时平均幅度差函数。它是基于这样一个想法,对于一个周期为P的单纯的周期信号做差分,即

则在k=0,±P,±2P,…时,式(3-28)将为零。即当k与信号周期吻合时,作为dn)的短时平均幅度值总是很小,因此短时平均幅度差函数的定义为

对于周期性的xn),γnk)也呈现周期性。与Rnk)相反的是,在周期的各整数倍点上γnk)具有的是谷值,而不是峰值。因此在浊音语音的基音周期上,γnk)会急速下降,而在清音语音时不会有明显的下降。由此可见,短时平均幅度差函数也可以用于基音周期的检测,而且计算上比短时自相关方法更为简单。

3.2.4 端点检测和语音分割

在许多语音信号处理任务中需要判断一段输入信号中哪些是语音段,哪些是无声段。例如在语音识别中,正确地判定输入语音的起点、终点对于提高识别率往往是非常重要的。在一些语音识别或低速语音编解码器应用中,对于已经判别为语音段的部分,还需要进一步判断清音和浊音。这些问题可以称为有声/无声判决,以及更细致的无声(S)/清音(U)/浊音(V)判决。

能够实现这些判决的依据在于,不同性质语音的各种短时参数具有不同的概率密度函数,以及相邻的若干帧语音应具有一致的语音特性,它们不会在S、U、V之间随机地跳来跳去。

在孤立词语音识别系统中,需要正确判断每个输入语音的起点和终点,利用短时平均幅度参数M和短时平均过零率Z可以做到这一点。首先,根据浊音情况下的短时平均幅度参数的概率密度函数PM|V)确定一个阈值参数MHMH值一般定得较高。当一帧输入信号的短时平均幅度参数超过MH时,可以判定该帧语音信号不是无声,而有相当大的可能是浊音。根据MH可判定输入语音的前后两个点A1和A2。在A1和A2之间的部分肯定是语音段,但语音的精确起点、终点还要在A1之前和A2之后仔细查找,如图3-11所示。

图3-11 利用短时平均幅度和短时平均过零率判定语音的起点和终点

为此,再设定一个较低的阈值参数ML,由A1点向前找,当短时平均幅度由大到小减至ML时,可以确定点B1。类似地,可以由A2点向后找,确定B2点。在B1和B2之间仍能肯定是语音段。然后由B1向前和B2向后,利用短时平均过零率进行搜索。根据无声情况下的短时平均过零率,设置一个参数Zs,如果由B1向前搜索,短时平均过零率大于Zs的3倍,则认为这些信号仍属于语音段,直到短时平均过零率下降到低于3倍的Zs,这时的点C1就是语音的精确的起点。对于终点做类似的处理,可以确定终点C2。采用短时平均过零率的原因在于,点B1以前可能是一段清辅音,它的能量相当弱,依靠能量不可能将它们与无声段分开。而对于清辅音来说,它们的过零率明显高于无声段,因而能用这个参数将二者区分开来。

研究结果表明,利用短时平均过零率来区分无声和清音在有些情况下不是很可靠。由于清音的强度会比无声段高一些,将门限提高一些对于清音的影响不大,但在没有背景噪声的情况下,无声段将不会穿越这一提高的电平,因而可以正确地区分清音和无声段,因此采用式(3-17)所示的过零率进行判断更加可靠。

除了上述用短时平均幅值和短时平均过零率来进行清浊音判断之外,还可以在求取基音周期时,利用基音周期存在与否来判断是浊音还是清音。