1.短时分析将语音流分为一段一段来处理,每一段称为一“帧”;
2.帧长:1030ms,20ms常见;(帧率)帧移:01/2帧长,帧与帧之间的平滑过度;
3.为了减少语音帧的截断效应,需要加窗处理;
截断效应:将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为截断效应,又叫吉布斯效应。
矩形窗、Hamming、Hann等窗函数及其比较:
①三种窗函数都有低通特性,通过分析三种窗的频率响应幅度特性可以发现:
②矩形窗的主瓣宽度最小,旁瓣高度最高,会导致泄露现象,汉明窗的主瓣最宽,旁瓣高度最低,可以有效的克服泄露现象,具有更平滑的低通特性,应用更广泛。
由于语音信号的能量随时间而变化,清音和浊音之间的能量差别相当显著。因此,对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变化情况。
定义n时刻某语音信号的短时平均能量为:
式中,N为窗长,可见短时能量为一帧样点值的加权平方和。特殊地,当窗函数为矩形窗时,有
也可以从另外一个角度来解释。令:
则短时平均能量可以写成:
上式可以理解为:首先语音信号各个样点值平方,然后通过一个冲激相应为h(n)的滤波器,输出为由短时能量构成的时间序列:
冲激响应的选择或者说窗函数的选择直接影响着短时能量的计算。通常N的选择与语音的基音周期相联系,一般要求窗长为几个基音周期的数量级。由于语音基音频率范围为50-500Hz,因此折中选择帧长为10~20ms。
短时平均能量的主要用途如下:
1.可以作为区分清音和浊音的特征参数。实验结果表明浊音的能量明显高于清音。通过设置一个能量门限值,可以大致判定浊音变为清音或者清音变为浊音的时刻,同时可以大致划分浊音区间和清音区间
2.在信噪比比较高的情况下,短时能量还可以作为区分有声和无声的依据
3.可以作为辅助的特征参数用于语音识别中
注意:
En反映语音信号的幅度或能量随时间缓慢变化的规律。窗的长短对于能否由短时能量反映语音信号的幅度变化,起着决定性影响。
短时能量的一个主要问题是对信号电平值过于敏感。由于需要计算信号样值的平方和,在定点实现时很容易产生溢出。为了克服这个缺点,可以定义一个短时平均幅度函数来衡量语音幅度的变化:
上式可以理解为w(n)对|x(n)|的线性滤波运算,实现框图如下。与短时能量比较,短时平均幅度相当于用绝对值之后代替了平方和,简化了运算。
Mn与En的比较:
1.Mn能较好地反映清音范围内的幅度变化;
2.Mn所能反映幅度变化的动态范围比En好;
3.Mn反映清音和浊音之间的电平差次于En。
1. 概念
短时平均过零率是语音信号时域分析中的一种特征参数。它是指每帧内信号通过零值的次数。
①对有时间横轴的连续语音信号,可以观察到语音的时域波形通过横轴的情况。
②在离散时间语音信号情况下,如果相邻的采样具有不同的代数符号就称为发生了过零,因此可以计算过零的次数。
单位时间内过零的次数就称为过零率。一段长时间内的过零率称为平均过零率。如果是正弦信号,其平均过零率就是信号频率的两倍除以采样频率,而采样频率是固定的。因此过零率在一定程度上可以反映信号的频率信息。短时平均过零率的定义为:
用1/2N 作为幅值,考虑了对该窗口范围内的过零数取平均。 另外:考虑到w(n-m)的非零值范围为n-m≥0,即m≤n,以及 n-m≤N-1,故m≥n-N+1,因此短时平均过零率可以改写为:
短时平均过零率的运算图:
2. 性质
从以上可以得出:
因此:短时平均过零率可以用于语音信号请浊音的判断。如果过零率高,语音信号就是清音,如果过零率低,语音信号就是浊音。但有的音,位于浊音和清音的重叠区域,这时,只根据短时平均过零率就不可能来明确地判别清、浊音。
1. 短时自相关函数
自相关函数用于衡量信号自身时间波形的相似性。之前我的文章有介绍,清音和浊音的发生机理不同,因而在波形上也存在着较大的差异。浊音的时间波形呈现出一定的周期性,波形之间相似性较好;清音的时间波形呈现出随机噪声的特性,杂乱无章,样点间的相似性较差。这样,可以用短时自相关函数来测定语音的相似特性。
时域离散确定信号的自相关函数定义为:
时域离散随机信号的自相关函数定义为:
若信号为一周期信号,周期为P,则:
上式说明,周期信号的自相关函数也是一个同样周期的周期信号,自相关函数具有下述性质:
1.对称性:R(k)= R(-k)
2.在k = 0处为最大值,即对于所有k来说,|R(k)|≤R(0)
3.对于确定信号,值R(0)对应于能量,而对于随机信号,R(0)对应于平均功率
上述的第2个性质中,如果是一个周期为P的信号,则在取样处,其自相关函数也是最大值,因此可以根据自相关函数的最大值的位置来估计周期信号的周期值。
2. 语音信号的短时自相关函数
采用短时分析方法,定义语音信号短时自相关函数为
因为:
所以:
定义:
那么短时自相关函数可以写成:
上式表明,序列x(n)x(n-k)经过一个冲激响应为hk(n)的数字滤波器滤波即得到短时自相关函数,所以,短时自相关函数的框图表示为:
也可采用直接运算的方法得到短时自相关函数:
下面来看一下浊音以及清音的短时自相关函数:
浊音和清音的短时自相关函数有如下几个特点:
1.短时自相关函数可以很明显的反映出浊音信号的周期性。
2.清音的短时自相关函数没有周期性,也不具有明显突出的峰值,其性质类似于噪声。
3.不同的窗对短时自相关函数结果有一定的影响。采用矩形窗时,浊音自相关曲线的周期性显示出比用汉明窗更明显的周期性。其主要原因是加汉明窗后,语音段两端的幅度逐渐下降,从而模糊了信号的周期性。
窗长对浊音的短时自相关性有着直接的影响。一方面,由于语音信号的特性是变化的,因此要求N应尽量小。但与之矛盾的另一方面是为了充分反映语音的周期性,又必须选择足够宽的窗,以使得选出的与语音段包含两个以上的基音周期。
修正的短时自相关函数可以写成:
因为求和上限是N-1,与k无关,故当k增加时,^Rn(k)值不下降 。
3. 短时平均幅度差函数
计算短时自相关函数需要很大的运算量,有时为简化运算,常使用一种与自相关函数有相似作用的另一参量,即短时平均幅度差函数(AMDF)。
一个周期为P的周期信号,在k=0,±P, 2P, …时,
对于浊音语音,在基音周期的整数倍上,d(n)总是很小,但不是零,因此,我们可以定义短时平均幅度差函数AMDF为:
显然,如果x(n)具有周期P,则当k=0,±P, 2P, …时,rn(k)具有最小值。应该注意的是,取矩形窗是很合适的。
在复杂的应用环境下,从信号流中分辨出语音信号和非语音信号,是语音处理的一个基本问题。语音端点检测就是指从包含语音的一段信号中确定出语音的起始点和结束点。正确的端点检测对于语音识别和语音编码系统都有重要的意义,它可以使采集的数据真正是语音信号的数据,从而减少数据量和运算量并减少处理时间。举个例子:微信语音不可能一按讲话就是所说的声音,而是从按下讲话到松开手的过程中其中的某一段或几段是语音,而其他则是噪声或者无声段
判别语音段的起始点和终止点的问题主要归结为区别语音和噪声的问题。如果能够保证系统的输入信噪比很高(即使最低电平的语音的能量也比噪声能量要高),那么只要计算输入信号的短时能量就基本能够把语音段和噪声背景区别开来。但是,在实际应用中很难保证这么高的信噪比,仅仅根据能量来判断是比较粗糙的。因此,还需进一步利用短时平均过零率进行判断,因为清音和噪声的短时平均过零率比背景噪声的平均过零率要高出好几倍。这次主要介绍基于能量和过零率的语音端点检测方法——两级判别法。
两级判别法采用双门限比较法,如图:
第一级判决:
1.先根据语音短时能量的轮廓选取一个较高的门限T1,进行一次粗判:语音起止点位于该门限与短时能量包络交点所对应的时间间隔之外(即AB段之外)。
2.根据背景噪声的平均能量确定一个较低的门限T2,并从A点往左、从B点往右搜索,分别找到短时能量包络与门限T2相交的两个点C和D,于是CD段就是用双门限方法根据短时能量所判定的语音段。
第二级判决:
以短时平均过零率为标准,从C点往左和从D点往右搜索,找到短时平均过零率低于某个门限T3的两个点E和F,这便是语音段的起止点。门限T3是由背景噪声的平均过零率所确定的。
这里要注意,门限T2,T3都是由背景噪声特性确定的,因此,在进行起止点判决前,通常都要采集若干帧背景噪声并计算其短时能量和平均过零率,作为选择T2和T3的依据。当然,T1,T2,T3,三个门限值的确定还应当通过多次实验。
基音周期是表征语音信号本质特征的参数,属于语音分析范畴,只有准确分析并且提取出语音信号的特征参数,才能够利用这些参数进行语音编码、语音合成和语音识别等处理。语音编码的压缩率高低、语音合成的音质好坏及语音识别率的高低,也依赖于语音信号分析的准确性和精确性。因此基音周期估值在语音信号处理应用中具有十分重要的作用。语音信号基音周期估值的方法很多,最基本的方法有:基于短时自相关法的基音周期估值和基于短时平均幅度差函数的基音周期估值。
1. 基于短时自相关法的基音周期估值:
如果x(n)是一个周期为P的信号,则其自相关函数也是周期为P的信号,且在信号周期的整数倍处,自相关函数取最大值。语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。计算两相邻最大峰间的距离,就可以估计出基音周期。观察浊音信号的自相关函数图,其中真正反映基音周期的只是其中少数几个峰,而其余大多数峰都是由于声道的共振特性引起的。因此,为了突出反映基音周期的信息,同时压缩其他无关信息,减少运算量,有必要对语音信号进行适当预处理后再进行自相关计算以获得基音周期。
预处理的两种方法:
1.先对语音信号进行低通滤波,再进行自相关计算。
2.先对语音信号进行中心削波处理,再进行自相关计算。
注解:削波
1.中心削波
削波后的序列用短时自相关函数估计基音周期,在基音周期处峰值更加尖锐, 可减少倍频或半频错误。中心削波函数为:
削波前后语音信号对比图
削波前后修正自相关对比图
2.三电平削波
为了克服短时自相关函数计算量大的问题,在中心削波法的基础上,还可以采用三电平削波法,削波函数为:
三电平削波前后语音信号对比图
三电平削波前后修正自相关对比图
2. 基于短时平均幅度差函数AMDF法的基音周期估值
如果信号x(n)是标准的周期信号,则相距为周期的整数倍的样点上的幅度值是相等的,二者差值为零。对于浊音语音,在基音周期的整数倍上,这个差值不是零,但总是很小,因此,我们可以通过计算短时平均幅度差函数中两相邻谷值间的距离来进行基音周期估值。
这里使用修正的短时平均幅度差函数并加矩形窗,得到:
AMDF函数与短时自相关函数的不同是:
1.自相关函数进行基音周期估计时寻找的是最大峰值点的位置。
2.AMDF寻找的是它的最小谷值点的位置。
3.由于清音没有周期性,所以它的自相关函数和平均幅度差函数均不具有准周期性的峰值或谷值。
3. 基音周期估值的后处理
语音信号中的浊音信号的周期性从波形上观察可以看得很明显,但是其形状比较复杂,这使得基音检测算法很难做到处处准确可靠。在提取基音的过程中,无论采用哪种方法提取的基音频率轨迹与真实的基音频率轨迹都不可能完全吻合。实际情况是大部分段落吻合,而在一些局部段落和区域中有一个或几个基音频率估计值偏离,甚至远离正常轨迹,通常是偏离到正常值的2倍或1/2处,即实际基音频率的倍频或分频处,称这种偏离点为基音轨迹的“野点”。
为了去除这些“野点”,对求得的基音轨迹进行平滑后处理是非常必要的。语音信号的基频通常是连续缓慢变化的,因此,用某种平滑技术来纠正这些“野点”是可以的。常用的平滑技术主要有:中值滤波平滑处理、线性平滑、动态规划平滑处理。
1.中值平滑处理
基本原理:设x(n)为输入信号,y(n)为中值滤波器的输出,采用一滑动窗,则n0处的输出值y(n0)就是将窗的中心移到n0处时窗内输入样点的中值。即在n0点的左右各取L个样点。连同被平滑点共同构成一组信号采样值(共(2L+1)个样值),然后将这(2L+1)个样值按大小次序排成一队,取此队列中的中间者作为平滑器的输出。L值一般取为1或2,即中值平滑的“窗口”一般包括3至5个样值,称为3点或5点中值平滑。
2.线性平滑处理
线性平滑是用滑动窗进行线性滤波处理
3.组合平滑处理
为了改善平滑的效果可以将两个中值平滑串接,图(a)所示是将一个5点中值平滑和一个3点中值平滑串接。另一种方法是将中值平滑和线性平滑组合,如图(b)所示。为了使平滑的基音轨迹更为贴近,还可以采用二次平滑的算法。
4.基音周期估值后处理的MATLAB实现
如本实验所用的语音样本:
用Cool Edit在普通室内环境下录制的女声“我到北京去”,采样频率为8kHz,单声道,将语音信号分为若干帧,每帧长220个样点,相邻帧交叠110个样点,采用基于能量的基音周期检测算法求出基音周期,并将原始基音周期保存为“zhouqi.txt”文件,用程序对原始基音周期进行平滑处理。
各种组合平滑算法得到的基音周期轨迹:
本章重点
1.常用窗函数及其特点。
2.短时自相关分析的作用。
3.哪些特征能用于分辨浊音信号和清音信号?
4.基音周期估值。