低复杂度的基音检测算法
2013-03-01李会雅苑林门晋喜韩晓霞
李会雅,苑林,门晋喜,韩晓霞
(1.河北大学 电子信息工程学院,河北 保定 071002;2.河北大学 工商学院,河北 保定 071000;3.95866部队 无线电导航教研室,河北 保定 071051)
基音周期是描述浊音激励源的一个基本特征,其倒数称为基音频率.基音频率的不同轨迹就是声调,在汉语中声调承担着构字辩意的作用,因此基音检测是汉语语言处理的关键环节.自相关函数法(ACF)[1]和平均幅度差函数法(AMDF)[2]是基音检测的经典算法,但准确性不高,容易产生倍、半基音,在平滑过程中不仅增加了处理时间和算法复杂度,还可能引入新的误差[3-4].小波变换是近年来的研究热点,具有良好的时频局部分析能力,但受声道响应的影响较大,计算量大.文献[5]给出了降低复杂度的自相关函数法,但准确率不很理想.文献[6-7]中的平均幅度差加权自相关法(AWAC)和文献[8]中的自相关能量函数及幅度差能量函数相结合的算法,对于随信噪比减小而越来越大的谐波峰值点起到了一定的抑制作用,突出了基音周期的峰值点.但文献[8]中的算法,含有大量的平方运算,计算复杂度高.为了进一步降低其计算量,增强实时性,提高基音检测算法的鲁棒性,在研究ACF法和AMDF法的基础上,提出了一种基于ACEF和MDEF的新算法,既保留了算法简单、计算量小的优点,又提高了准确度,有效杜绝了新误差的出现.
1 基音检测基础
1.1 短时自相关函数(ACF)
对于确定性信号序列x(k),自相关函数定义为
由于浊音的波形序列具有准周期性,而且其R(τ)的周期与浊音的周期相同,因此可利用R(τ)第1个峰值的位置来估计基音周期.
设含噪语音信号s(k)由纯净语音信号x(k)及噪声信号n(k)组成,可表示为[8]
若用来选择语音段的窗函数为矩形窗,则定义含噪语音信号s(k)的短时自相关函数为
其中,N为帧长,τ为位移,Rxx(τ)为x(k)的自相关函数,Rxn(τ)为x(k)与n(k)的互相关函数,Rnx(τ)为n(k)与x(k)的互相关函数,Rnn(τ)为n(k)的自相关函数.
一般地,语音信号x(k)与噪声信号n(k)无关,则Rxn(τ)=0,Rnx(τ)=0,式(3)可表示为
当τ≠0时,n(k)互不相关,则Rnn(τ)=0,则Rss(τ)可以表示为
由式(5)易知,当τ≠0时,含噪语音信号的自相关函数Rss(τ)与噪声n(k)无关,完全等于Rxx(τ).
1.2 平均幅度差函数(AMDF)
对于完全的周期信号m(k),在其周期NP整数倍的样点上幅值相同,可表示为
实际浊音信号的d(k)会在基音周期的整数倍位置出现不为零的极小值.若用来选择语音段的窗函数为矩形窗,则定义语音信号s(k)的短时平均幅度差函数为
其中,N为帧长,τ为位移.若语音信号s(k)在窗函数取值范围内具有周期性,则Fss(τ)将在τ=0,±NP,±2NP,…处出现极小值.比较式(7)与式(3)可知,Fss(τ)的运算过程较Rss(τ)简单,易于硬件实现.
1.3 三电平中心削波
为了消除声道共振峰和语音谐波对基音周期检测的影响,对语音信号进行预处理[11].本文采用三电平中心削波的方法,对输入的语音信号进行处理,其输入输出函数
其中,y(k)为三电平中心削波器的输出信号,s(k)为三电平中心削波器的输入信号,±CL为削波电平.
由式(8)可知,当削波器的输入s(k)>CL时,削波器的输出为1;当削波器的输入s(k)<-CL时,削波器的输出为-1;当削波器的输入为其他情况时,削波器输出全为零.语音信号经过三电平削波后,其中大多数次要的峰值被滤除掉了,仅保留下明显显示周期性的峰值.之后采用自相关法进行基音检测时,可大大减少错判为倍频或半频的情况.
2 基音检测算法
2.1 基音检测过程框图
基音检测过程分为3个阶段:预处理、基音检测、后处理,具体过程如图1所示.
图1 基音检测实现过程Fig.1 Realization process of pitch detection in this paper
在预处理阶段,由录音设备采集的语音信号首先通过带通滤波器,以抑制50Hz的电源干扰和大部分共振峰的影响,之后存入循环缓冲区.为确保语音信号基音检测的连续性,在取帧时,帧移与帧长的比值一般取为,前一帧与后一帧相交叠部分的数据长度,称为帧移.将每帧数据通过削波函数,削去和声道有关的波动.
在基音周期估计阶段,采用Matlab仿真软件,记录下本文算法得到的仿真波形中相邻2个峰值横坐标之间的距离,即相隔的采样点数.
在后处理阶段,去大野点模块去除峰值横坐标相隔采样点数的错误估值,之后采用试探平滑处理算法[10],进而得到语音信号的基音周期.
2.2 自相关能量函数及幅度差能量函数相结合的算法
由于ACEF会在语音信号基音周期整数倍的位置上呈现峰值,而相应处的MDEF则会呈现出谷值的特性.因此,采用本文算法得到的仿真曲线中,基音周期整数倍处呈现峰值的特性将更加突出,有利于基音周期的提取.而且算法仅涉及到1和0的相乘和相加运算.由此可见,新算法的计算复杂度较低,而且运算量也得到了大幅度的降低.
3 仿真实验及结果分析
本实验采用的测试语音信号是在实验室的噪声环境下录制的,其采样频率fs为16kHz,每个采样点为16bit量化,含噪测试语音信号波形如图2所示.仿真实验过程中采用的带通滤波器通带为60~90Hz,通过调用语音信号处理工具箱中的分帧函数,实现对语音信号流的分帧处理,其中窗函数为矩形窗.帧移与帧长N的比值取为基于语音信号的短时平稳性,以下仿真过程均是逐次对每帧语音信号进行相应的处理.三电平中心削波处理过程中,首先分别找出该帧前个语音信号采样值中的最大值,然后比较这2个最大值,取其中较小值的65%作为门限电平.将偏离采用本文算法的仿真曲线中相邻2个峰值横坐标之间相隔采样点数平均值以上的数值设为大野点,中值平滑的滑动窗口宽度为3,精度为中值的,将不在平滑范围内的点置为0,从而纠正个别估值的错误,最后得到语音信号的基音周期的平均值.
设采用本文算法的仿真波形中相邻2个峰值横坐标之间相隔的采样点数为NT,则基音周期T=NT/fs,其中fs为采集语音信号时的采样频率,单位为kHz.
图2 含噪测试语音信号波形Fig.2 Waveform of Noisy test speech signal
由图2可见,测试语音信号波形的幅度处于[-0.1,0.1]内,其持续时间为0.12s,波形带有锯齿状的毛刺,说明测试语音信号的录制环境含有噪声.
应用语音信号处理Praat软件对测试语音信号进行基音频率提取的仿真图形,如图3所示.
图3 Praat处理测试语音信号的仿真图形Fig.3 Simulation graphics of the test speech signal using Praat
由图3可见,Praat软件得到的测试语音信号基音频率为229.49Hz,则该测试语音信号的基音周期为
以该测试语音信号的第6帧数据为例,此帧语音信号的一般自相关函数和幅度差函数结合的(ACFMDF)的仿真示意图如图4所示;基于自相关能量函数和幅度差能量函数(ACEF-MDEF)的仿真示意图如图5所示.
图4 第6帧语音信号采用ACF-MDF函数的仿真示意Fig.4 Simulation graphics of the Sixth frame test speech signal using the ACF-MDF function
图5 第6帧信号采用ACEF-MDEF函数的仿真示意Fig.5 Simulation graphics of the Sixth frame test speech signal using the ACEF-MDEF function
由图4可见,在使用ACF-MDF函数法得到的第6帧测试语音信号的仿真示意图中,在采样点数为70的位置上出现了波形的峰值,但由于此处的峰值较小,在强噪声环境下会出现峰值提取的困难,甚至峰值会完全淹没在噪声信号中,以致无法提取出语音信号的基音周期.
由图5可见,在使用ACEF-MDEF函数法得到的第6帧测试语音信号的仿真示意图中,采样点数为70位置上出现了波形的峰值,峰值尖锐明显,去除了一些对提取基音周期影响较大的谐波峰值点,使峰值点更加突出,有利于语音信号基音周期的提取,具有一定的抗噪声性能.
4 结论
基于ACEF-MDEF的基音检测算法克服了自相关函数计算量大和幅度差函数易受噪声影响的缺点,比ACF和AMDF直接结合的方法更准确,更稳定.新算法涉及到的运算简单,降低了时间和空间复杂度,适合应用于手持语音识别终端上.与此同时,基音检测的准确性和鲁棒性也有了很大提高.但由于语音信号产生过程的复杂性和不可预测性,以及基音周期本身固有的特性,到目前为止,还没有能适应任何人、任何环境的基音检测算法.因此,如何从语音信号中仅取出与声带振动有关的信息,去除声道的影响,是下一步需要解决的问题.
[1]RABINER L R.On the use of autocorrelation analysis for pitch detection[J].IEEE Trans on Acoustics Speech and Signal Proc,1977,ASSP-26(1):24-33.
[2]ROSS M J,SHAFFER H L,COHEN A,et al.Average magnitude difference function pitch extractor[J].IEEE Trans on Acoustics Speech and Signal Proc,1974,22(5):353-362.
[3]DUANPEI WU,TANAKA M,CHEN R,et al.A robust speech detection algorithm for speech activated hands-free application[Z].1999IEEE International Conference on Acoustics,Speech,and Signal Processing,Phoenix,1999.
[4]BERITELLI F,CASALE S,SERRANO S.Adaptive V/UV speech detection based on acoustic noise estimation and classification[J].Electronics Letters,2007,43(4),249-251.
[5]马祥杰,孟相如,张百生.一种自相关基音检测算法[J].通信技术,2003(5):9-11.
MA Xiangjie,MENG Xiangru,ZHANG Baisheng.An autocorrelation algorithm for pitch detection[J].Communications Technology,2003(5):9-11.
[6]刘建,郑方,邓答,等.基于混合幅度差函数的基音提取算法[J].电子学报,2006,34(10):1925-1928.
LIU Jian,ZHENG Fang,DENG Da,et al.Combined magnitude difference function based pitch tracking algorithm.[J].Chinese Journal of Electronics,2006,34(10):1925-1928.
[7]陶维青,徐士林,仁静.汉语语音的基音快速提取算法[J].合肥工业大学学报:自然科学版,1996,19(3):31-36.
TAO Weiqing,XU Shilin,REN Jing.Algorithm of Chinese Speech Pitch Extraction[J].Journal of Hefei University of Technology:Natural Science Edition,1996,19(3):31-36.
[8]李娟.基音周期检测算法研究及在语音合成中的应用[D].太原:太原理工大学,2008.
LI Juan.Study of speech pitch detection algorithm and application in speech synthesis system[D].Taiyuan:Taiyuan U-niversity of Technology,2008.
[9]朱建伟,孙水发.一种基于段的基音检测算法[J].三峡大学学报:自然科学版,2008,30(3):80-82.
ZHU Jianwei,SUN Shuifa.Pitch detection of speech segment[J].Journal of China Gorges Univercity:Natural Science Edition,2008,30(3):80-82.
[10]朱小燕,王昱,刘俊.汉语声调识别中的基音平滑新方法[J].中文信息学报,2000,15(2):45-50.
ZHU Xiaoyan,WANG Yu,LIU Jun.An approach of fundamental frequencies smoothing for Chinese Tone Recognition[J].Journal of Chinese Information Processing,2000,15(2):45-50.
[11]胡航.语音信号处理 [M].4版.哈尔滨:哈尔滨工业大学出版社,2009.