专利名称:用于语音识别的高精度高分辨率基频提取方法
技术领域:
本发明提取了一种将频域、时域分析以及动态规划(DP)相结合的基频提取方法,属信号处理及语音识别领域,其基本特征是结合时域与频域的基频分析,抽取可能的几个基频候选,并采用一种自相关系数、频谱分析结果以及基频变化量相结合的目标函数用不定长回溯动态规划算法进行正确基频的搜索。
目前,在连续语音条件下,抽取可靠的基频变化曲线是汉语声调识别与建模的基础。但基频提取的困难主要在于,受声道共振峰和噪音等因素的影响,有时在正确基频的倍频和半频值有比基频更明显的特征(如相应峰值较大)。传统的方法一般单独利用时域或频域进行基频特征提取,而且在所有时间点只提取单一的一个基频值作为后续处理如中值平滑的基础。这样仅用频域或时域的一种方法,和仅仅从一个极端的标准(如仅取某一最大的峰值)来提取基频常常出现一些错误,造成得到的基频轮廓线有明显不连续的变化,这显然是与事实不符的。如J.Sundberg 1979年发表在J.of Phonetics上的试验结果表明基频的变化率在大约1%/ms的范围内。对于基频的明显不连续的变化,可以用传统的DP方法加以一定的弥补,但传统的DP算法必须处理完一整段语音才能输出基频轮廓线,这种延迟在实时的语音识别系统中是很难被接受的,所有在其它一些DP算法的应用中,都采用定长回溯的方法解决这个问题。
基频提取的主要问题在于1.在频域上,语音信号经过FFT(快速傅利叶变换)得到的频谱,在F0/2,F0,2F0,3F0…处经常有较大的峰出现,如图2所示,一浊音帧经FFT运算后得到的谱,其在F0,2F0,3F0处有明显的峰,但基频F0处的峰值却显然没有2F0处高。如有的算法就是基于这一现象,把最大峰对应的频率作为基频;或者以某种方法提取出多个峰,并计算这些峰值之间的距离平均以估算基频。但有时某些峰值并不十分明显,甚至会出现“基音缺失”(missing fundamental)的现象,这给传统的用频谱分析做基频检测的方法造成了很大的困难。
2.在时域上,一种有代表性的基频提取方法是短时自相关函数法。短时自相关函数的计算公式为R[m]=1N-mΣi=0N-m-1xixi+m]]>其中Xi表示一帧里第i个采样点值,N表示每帧总采样点个数,R[m]表示周期为m个采样点时的自相关值。根据自相关函数的性质,周期性信号的自相关函数也是周期性的,而且与语音信号的周期相同,一般来说,如果T0代表音调周期(T0=1/F0),除了R
以外,T0处的峰值最大。图4给出了一浊音帧的自相关曲线,可以看到,在T0,2T0,3T0处有较大的峰值,但T0处的峰值高度和2T0,3T0很接近。所以,检测自相关函数的最大峰可以作为估计基频的一种方法,但和上面的情况类似,在T0/2,2T0、3T0……附近常常有较大的峰值,而且有时在这些峰中出现最大峰。这给该算法带来一定的局限性。
另外,分辨率和计算量也给基频的实时提取造成了一定的困难。
例如在采用FFT频谱分析的方法中,基频提取的分辨率与FFT计算的点数成正比,而其计算量是随之呈指数增长的,这就导致不可能用太多点数的FFT计算;在全部有效频域范围内(指人类语音的基频范围)计算自相关以搜索较大值需要大量的乘法运算,是十分耗时的,不太适合用于需要实时处理的语音识别系统中;DP算法的候选值个数也影响DP的决策速度,如果将有效频域范围内的所有基频均作为候选,也势必大大加重决策的负担。
本发明的目的在于提出一种新的基频提取方法。该方法的基本思想应是先对语音信号在频域上进行FFT变换,再对其进行谐波分析,然后通过峰值检测,选若干个基频的候选,在时域上对这些候选基频用自相关系数评测,再用动态规划算法确定一条最优的基频轮廓线。
本发明的技术要点在于一种语音识别用高精度高分辨率基频提取方法结合时域与频域的基频分析,抽取可能的几个基频候选,并采用一种自相关系数、频谱分析结果以及基频变化量相结合的目标函数用动态规划算法进行搜索,在进行自相关计算前,根据语音识别用的频谱分析结果,利用FFT谐波分析法,对语音的基频范围进行初步的估计,降低自相关计算的范围,并且对基频提取精度不产生影响;谐波分析法的特征包括降采样率、预加重和加窗、FFT计算及为了提高分辨率进行二次Spline插值等步骤。1.FFT求得的频谱采用谐波分析的方法,首先对于有效的基频范围的每一个基频计算若干个谐波的累加和。如果用X(i)表示一帧的语音信号,用X(f)表示其FFT变换,S(f)表示得到的功率谱,即S(f)=|X(f)|2(2)那么谐波累加的结果为H(f)=Σn=1HNhnS(nf)---(3)]]>HN表示谐波的个数,hn是第n个谐波的权。本方法中没有对功率谱进行对数Log运算,也没有将线性频域转化到对数频域,即求Log(F0),这在一定程度上减少了计算量。然后再从谐波分析的结果H(f)中通过线性搜索选出前几名最大的峰,(设P1,P2,…PPN表示这几个峰值),以相应的频率作为基频的候选值。同时计算每一峰值的相对最大峰Pmax的大小作为后面DP算法的评分参数Hper,即Hper(i)=Pi/Pmax,i=1..PN---(4)]]>谐波分析基频峰值检测的实例如图3,图3给出了一浊音帧的谐波累加图,经过谐波计算,在F0处有明显的最大峰,连同另外还有其它的几个峰(用圆圈表示),都作为基频的候选。2.在时域上,对频域得到的基频候选计算自相关值{R[i]},其结果用R
进行了归一化,即自相关系数Rper(i)=R[i]/R
。如上所述,浊音(voiced)帧的自相关系数的峰值比较大,与1比较接近,如图4所示,而没有基频的非浊音(unvoiced)帧自相关的峰值都很低如图5所示,所以自相关系数可以作为清浊音判别的依据,能过滤掉一些明显的非浊音帧。利用自相关系数,对频域得到的有限的基频候选进行打分和筛选,既降低了自相关的计算量和后续DP算法的计算量,同时也使得用DP算法选择基频时可以综合频域和时域的分析结果,更加合理。3.动态规划算法是一种广泛使用的最优化算法。它把多阶段决策过程化为多个单阶段决策的子过程,使计算简化。每次决策对所有的可能路径依据得分函数分别打分,根据得分的大小对路径进行裁减,最后输出得分最优(最大或最小)的路径。本DP算法每次处理一帧的基频候选,对原有的的基频路径进行延拓,然后对每一条路径打分,保留若干得分最高的。得分公式是Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)(5)其中Score(i)表示该基频路径在第i帧的得分,a,b为系数,D(i,j)表示第i帧的基频pi与第i-1帧的第j个基频候选pj的距离D(i,j)=2*|pi-pj|/(pi+pj)(6)本方法采用的∑Rper(i)得分函数考虑了三∑Hper(i)方面的因素基频变化的连续性、自相关系数累加值最大、谐波累加峰值最大。这三个方面都是基频判别的重要依据。后两个因素在前面已经提到过。其中基频变化的连续性是考虑到人类发音的基频轨迹不可能产生突变的原理,对可能的基频路径打分。本算法根据非浊音没有明显基频的特点,采用了不定长回溯方法。
具体方法如下该DP算法的以连续的浊音帧的第一帧开始,以连续浊音帧的最后一帧做结束,进行动态不定长的局部回溯。因为在非浊音帧提出的基频是没有意义的,基频的连续性在进入浊音帧后也无法体现。如果在全局内进行动态规划,则势必加入过多的干扰分数,使基频轮廓线发生随机偏移,有时会严重影响DP算法的效果。本方法中连续浊音帧的判断依据过零率检测和自相关系数,根据统计结果选取了一个有较好区分度的过零率阙值和自相关系数阙值,参数小于该阙值的帧被判断为非浊音,不参与DP算法求基频轮廓线。这样裁减掉了大部分没有基频的非浊音帧,大大降低了它们对用DP算法提取基频的影响,减少了错误;同时既保证了基频轮廓线的连续性,也大大减少了DP算法的延迟。被包括进来的少数非浊音帧不会对DP算法有大的影响;少数没有被包括进来的浊音帧可以在连线中得到很好的补偿。4.其它的措施。过零率检测。如上所述,为了提高浊音和非浊音的区分率以及提高基频提取的速度,对语音信号首先进行了过零率检测。预先设定一个较大的阙值,过零率超过该值的被判定为非浊音,不进行基频提取。否则用下面提到的的FFT/DP算法提取基频。阙值设的较大的原因是可以保证浊音不被过滤掉。为了减少波形偏移的影响,过零率的参考值不是零,而是一帧数据的均值。降采样率和插值。为提高降低基频提取精度,对进行FFT变换之前的语音信号进行了降采样率处理,对由FFT得到的频率谱进行了插值。设原始采样率为SR,把采样率降低为原来的1/RDC后,进行FFTLen点的FFT变换,得到的功率谱再用Inpl N点插值(即每相邻量个FFT点间插Inpl_N-1个点),那么得到的基频提取分辨率就是SRRDC*FFTLen*Inpl_N---(7)]]>在本实施例子中,原始信号采样率SR=16000Hz,降低为1/4,即RDC=4,FFT变换点数为FFTLen=512,插值Inpl_N=20点。这样提取分辨率就是0.39Hz。而对于每帧384个采样点的自相关函数提取法,提取分辨率为16000/N2(N为信号周期对应的采样点),即大约从15Hz到0.4Hz,显然其在基频范围内具有足够高的分辨率。
采用上述发明的优点在于结合时域和频域基频提取这两种方法,能进行有效的互补通过频域处理按照谐波和的大小确定基频候选,中间没有门限等人为设置,可以减少计算的不确定性量;在动态规划函数上,同时考虑了时域自相关和频域谐波和这两个与基频密切相关的重要指标,使之最大,保证了基频的连续性和可靠性;而不定长回溯则能减少语音识别系统的理论延时,这对实时性要求比较强的如电话语音识别等非常重要。
为了比较本发明的有效性,从声道干扰较强、基频提取比较难的两句语音中抽取了725帧浊音,经人工判断,以明显的不连续基频作为识别错误。在没有采用本发明中的基频候选加DP算法之前,识别错误率为11.7%,采用之后为0.4%。识别的准确率大大提高。
结合上述描述,完整的基频提取的流程如图6所示(1)信号分割,输入的语音信号首先被分割为若干帧,相邻两帧有一定的重叠;然后分别对每帧进行如下处理;(2)过零率检测,计算平均过零次数,进行清浊音的粗略估计;过零次数高于给定的阙值被判定为非浊音帧,不进行基频提取;(3)降采样率,既提高了基频提取分辨率,又可以保证不损失1250Hz以上对基频提取有意义的频率成分;(4)预加重和加窗,该部处理的目的是减少了频率混叠。采用的是hamming窗。公式为 (5)FFT计算及求功率谱,采用的是512点的FFT(快速傅利叶变换)。用公式S(f)|X(f)|2计算功率谱;(6)插值,为了提高基频提取的精度,在频谱的每两个FFT点值之间插Inpl_N=20个值,使用的是二次Spline插值方法;(7)计算谐波累加和,谐波累加的公式为(8)确定基频候选,从谐波累加谱中选若干个峰,求峰值点对应的基频,以及该峰值与最大峰的相对高度,即Hper;H(f)=Σn=1HNhnS(nf)]]>(9)对多个基频的候选在时域上求相应的自相关系数,即Rper;对于具有过低的Hper值或Rper值的基频候选被过滤掉,以减少DP的运算量;(10)用DP算法求基频路径,用DP算法计算每条路径的得分,得分公式为Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)也可以记为Score(Dis,Hper,Rper);其中Dis表示基频的变化,Rper表示自相关系数,Hper表示峰的相对高度;根据得分,取前几名的几条路径记录下来;(11)处理完一段连续的浊音帧,则根据DP算法的得分以最优的基频路径作为提取的结果输出;否则返回过零率检测;处理完全部的输入信号,进入归一化和连接,对一段处理完的语音,用平均基频进行归一化,这样可以消除说话人的差别;连接是把没有基频的辅音部分和具有基频的元音部分进行平滑的连接。
实施例汉语语音的一个显著特点就是汉语的声调。汉语普通话声调一般分为一声、二声、三声、四声,亦即阴平、阳平、上声、去声。另外还有轻声(零声调)。相同的声韵母组成的音节,很可能有完全不同的意义,对应不同的字或词。(例如兴起、星期、刑期、行期、腥气。)因此,声调在汉语语言的识别中有很重要的意义。
声调体现在基频F0轨迹的变化。
图1左边表示的是孤立语音的声调与基频对照,右边是连续语音声调与基频的对照图。而本发明提出的基频提取方法可以为语音识别提供较为准确的基频轮廓线,用于声调识别;特别是可以将提取的基频作为语音识别系统的参数,或建立声调模型,以更全面反映语音特征,指导语言的处理,提高识别的准确度。
基频轮廓线的准确提取还可作为连续语音中句法结构、词语重读、说话者意向等信息识别的重要依据;汉语的声调是汉语教学中的一难点,通过基频曲线的显示可以交互式地指导学生的发音,因而可用于汉语普通话的教学中。虽然声调会受到上下文的影响,但声调信息比较不受声学环境和通道的影响,因而从某一个角度,声调对于提高语音信息处理的可靠性具有重要意义。
权利要求
1.一种用于语音识别的高精度高分辨率基频提取方法,其特征在于基频提取的步骤为(1)信号分割,输入的语音信号首先被分割为若干帧,相邻两帧有一定的重叠;然后分别产生下一帧的处理;(2)过零率检测,计算平均过零次数,进行清浊音的粗略估计;过零次数高于给定的阙值被判定为非浊音帧,不进行基频提取;(3)降采样率,既提高基频提取分辨率,又可以保证不损失1250Hz以上对基频提取有意义的频率成分;(4)预加重和加窗,此部分处理的目的是减少频率混叠。采用的是hamming窗,公式为 (5)FFT计算及求功率谱,采用的是多点的FFT(快速傅利叶变换),用公式计算功率谱S(f)=|X(f)|2(6)插值,为了提高基频提取的精度,在频谱的每两个FFT点值之间插Inpl_N个值,使用的是二次Spline插值方法;(7)计算谐波累加和,谐波累加的公式为H(f)=Σn=1HNhnS(nf)]]>(8)峰值检测,确定基频候选,从谐波累加谱中选若干个峰,求峰值点对应的基频,以及该峰值与最大峰的相对高度,即Hper(9)对多个基频的候选在时域上求相应的自相关系数,即Rper;对于具有过低的Hper值或Rper值的基频候选被过滤掉,以减少DP的运算量;(10)用DP算法求基频路径,用DP算法计算每条路径的得分,得分公式为Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)也可以记为Score(Dis,Hper,Rper);其中Dis表示基频的变化,Rper表示自相关系数,Hper表示峰的相对高度;根据得分,取前几名的几条路径记录下来;(11)处理完一段连续的浊音帧,则根据DP算法的得分以最优的基频路径作为提取的结果输出;否则返回过零率检测;处理完全部的输入信号,进入归一化和连线,对一段处理完的语音,用平均基频进行归一化,这样可以消除说话人的差别;连接是把没有基频的辅音部分和具有基频的元音部分进行平滑的连接。
2.根据权利要求1所述的用于语音识别的高精度高分辨率基频提取方法,其特征在于结合时域与频域的基频分析,抽取可能的几个基频候选,并采用一种自相关系数、频谱分析结果以及基频变化量相结合的目标函数用动态规划算法进行搜索,在进行自相关计算前,根据语音识别用的频谱分析结果,利用FFT谐波分析法,对语音的基频范围进行初步的估计,降低自相关计算的范围,并且对基频提取精度不产生影响;谐波分析法的特征包括降采样率、预加重和加窗、FFT计算及为了提高分辨率进行二次Spline插值等步骤。
3.根据权利要求1所述的用于语音识别的高精度高分辨率基频提取方法,其特征在于完成谐波分析后,从谐波累加谱中选若干个峰,求峰值点对应的基频,以及该峰值与最大峰的相对高度,即Hper,然后对多个基频的候选在时域上求相应的自相关系数,即Rper,对于具有过低的Hper值或Rper值的基频候选需过滤掉。
4.根据权利要求2、3所述的语音识别用高精度高分辨率基频提取方法,其特征在于取频谱分析结果前几名作为基频的候选,然后根据人类发音其基本基频轨迹不可能产生突变这个原理,采用动态规划的方法从这些候选中确定正确的基频序列。
5.根据权利要求1所述的用于语音识别的高精度高分辨率基频提取方法,其特征在于由于搜索目标函数时,基频不可能产生突变,且尽量使整个路径的自相关累加值最大以及谐波峰值累加值最大,而提出相应的目标函数Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)其中Score(i)表示该基频路径在第i帧的得分,a,b为系数,D(i,j)表示第i帧的基频pi与第i-1帧的第j个基频候选pi的距离D(i,j)=2*|pi-pj|/(pi+pj)
6.根据权利要求1所述的用于语音识别的高精度高分辨率基频提取方法,其特征在于在使用基于连续密度的HMM中,需要对基频进行平滑,使用直接连接法把没有基频的辅音部分和具有基频的元音部分进行连接,并用平均基频进行归一化,以消除说话人的影响。
7.根据权利要求4和6所述的用于语音识别的高精度高分辨率基频提取方法,其特征在于根据非浊音没有明显基频的特点,采用了不定长回溯方法,减少了非浊音随机基频提取结果对DP带来的干扰;还采用结合过零率检测和自相关系数作为判断依据,再根据统计结果选取一个有较好区分度的过零率阙值和自相关系数阙值,参数小于该阙值的帧被判断为非浊音,不参与DP算法求基频轮廓线,在裁减掉大部分没有基频的非浊音帧时,降低了这些非浊音噪声类对用DP算法提取基频的影响,减少了错误。
全文摘要
用于语音识别的高精度高分辨率基频提取方法是一种将频域、时域分析以及动态规划(DP)相结合的基频提取方法。主要特点是:首先对语音信号在频域上进行FFT变换,再对其进行谐波分析,然后通过峰值检测,选若干个基频的候选,在时域上对这些候选基频用自相关系数评测,再用动态规划算法不定长回溯综合频域、时域的分析结果以及基频变化量确定一条最优的基频轮廓线。为保证基频提取的分辨率,采用了降采样率、插值等方法。
文档编号G10L15/00GK1342968SQ0012471
公开日2002年4月3日 申请日期2000年9月13日 优先权日2000年9月13日
发明者徐波, 张健 申请人:中国科学院自动化研究所