标题 | 一种语音信号基音周期时域估计算法 |
范文 | 吴树兴 摘要:在语音识别和语音合成中,基频周期的准确估计是一项重要的语音处理环节。自相关函数法是一种适用于低信噪比下的非常有效的基音周期估计算法,这种算法需要对信号相关后的峰值位置进行准确估计。本文提出了一种峰值点位置判别方法,它可以对时域语音信号相关后的峰值点位置进行准确判断,从而比较准确地估计出语音信号的基频周期,并且复杂性不高,易于实现。 关键词:语音合成;基频周期;时域;自相关函数法;峰值估计 中图分类号:TP247? ? ?文献标识码:A 文章编号:1009-3044(2019)22-0214-03 开放科学(资源服务)标识码(OSID): A Time Domain Estimation Algorithm for Speech Signal Pitch Period WU Shu-xing (Beijing Information Technology College, Beijing 100015, China) Abstract: In speech recognition and speech synthesis, accurate estimation of the fundamental frequency period is an important part of speech processing. The autocorrelation function method is a very effective pitch period estimation algorithm suitable for low SNR. This algorithm needs to accurately estimate the peak position after signal correlation. In this paper, a method for judging the peak position is proposed, which can accurately judge the position of the peak point after the correlation of the time domain speech signal, so as to estimate the fundamental frequency period of the speech signal more accurately, and the complexity is not high and easy to implement. Key words: speech synthesis; fundamental frequency; period time domain; autocorrelation function method; peak estimation 在語音信号处理技术中,基频周期的估计是一个非常重要的环节[1-2]。基音检测广泛地应用于语音分析合成、语音压缩编码、语音识别以及语音分段等方面[3],多年来,研究者们提出了各种基音检测算法,例如自相关函数法(Autocorrelation Functi,ACF)[4]、平均幅度差函数法(Average Magnitude Difference Function,AMDF)、小波变换法、倒谱法等。通常,基音周期提取方法主要有时域估计法和变换域估计法。 时域估计法是直接由语音信号波形来估计基音周期,很早就得到应用,由于其实现起来比较简单、运算量少应用非常广泛。自相关函数法就属于这种时域估计法,比较适合低信噪比情况下的基音周期提取 [5-6]。自相关函数法在进行基音提取时,需要对峰值位置进行估计,当峰值位置由于局部极小值导致估计不准确时,就会影响其性能。 本文将描述一种峰值点位置估计方法,它能使峰值点位置的判断更加准确,从而比较准确地估计出语音信号的基频周期。 1短时自相关函数法估计基音周期 自相关函数法属于时域估计算法,与其他时域算法相比,具有较好的抗噪声干扰的特性,提取到的基音轮廓特征明显,准确度较好,实现简单,同时也是语音信号处理领域中使用广泛的一种算法。 算法的原理是语音信号的自相关函数值会在基音周期的整数倍位置上出现峰值,检测峰值的位置即可提取出基音周期,如图1所示。 通过短时自相关函数的计算公式对每一帧进行自相关计算, [acf(τ)=i=0n-1-τs(i)s(i+τ)]? ? ? ? ? ? ?(1) 再通过搜索极值点,检测到峰值的位置,既可估计出基音周期。 采用自相关函数法进行基音周期检测,除了需要采用自相关模块进行处理外,还需要事先进行数据采集、分帧、加窗和滤波等信号处理,以便取得更好的效果。 在信号处理中,加窗通常使用矩形窗和汉明窗[7]。选择窗长时,需要考虑语音信号的基音周期。一般在一个帧内应包含个1-7个基音周期。在16kHz采样率下,一般选择10-20ms为一个窗长。选择好窗函数和窗长后,还要设定帧移参数,以便让帧与帧之间平滑过渡,保持连续性。 由于基音检测中,搜索峰值会受到各种干扰的影响,导致检测误差。因此,在进行自相关计算之后,使用低通滤波器,将高频干扰进行初步过滤,确保提取到比较准确的基音周期。 2一种用于基音周期估计的峰值点检测算法 采用自相关函数法对语音信号的基音周期进行估计时,最重要的一步是准确地检测峰值的位置。峰值位置的检测一般都直接采用搜寻最大值点的方法来实现,这种方法最大的优势是简单、直观,但容易陷入局部极值点中,从而影响最终的效果。这里提出一种多截线法进行峰值位置的检测,其基本思想是依据波形的对称性,通过对波形的大部分位置进行多次截取,间接计算中值来评估峰值位置,如图2所示,最上边的截线与波形相交得到的起始位置A1和结束位置B1,将A1和B1取中值就是对峰值位置P的估计,同理由中间的截线获得的A2和B2,下边的截线获得的A3和B3,取中值仍然可以得到对峰值位置P的估计,将得到的中值取均值,就可以得到对峰值位置准确的估计。由于多截线的滤波作用,这种方法能够避免误将局部极值点作为峰值点,与直接搜寻峰值点的方法相比,能够获得更加准确的峰值点位置,从而准确估计出语音信号的基频周期。 若实现这里所提出的多截线法进行峰值位置检测,需要先对当前要判别的峰值点所对应的周期进行粗略估计,假设估值為T,一般来说,该估计值是通过新峰值点之前的若干个已估计周期来预测的,因此,该值是不准确的,不能由它导出峰值点的确切位置,而之前的峰值点已经通过这里所介绍的判决方法得到,是已知的和准确的,进而得到的周期也是准确的。尽管我们不使用评估出的周期直接来估计峰值点,但我们需要使用它来辅助完成峰值点评估过程,在这个过程中,周期估计值用来确定评估过程的起止点,对正确评估峰值点有着关键作用。在下面的“峰值点评估过程”中的T就是我们这里所提到的周期估值T。 要正确进行峰值点位置的判定,我们先来确定峰值点评估过程的开始点,我们通常的做法是把峰值点评估过程的结束点作为下一次峰值点评估过程的开始点,首先判断截线完成计数器值是否达到预设值m,如果达到则搜索过程停止,否则判断从前一个峰值点到当前读取的采样点之间是否达到了5/4T个采样点,如果已经达到5/4T个采样点,则搜索过程停止,评估出新峰值点,如果当前采样点已经超过新峰值点3/8T,那么将当前采样点作为下一次峰值点评估过程的开始点,否则向前推进到距离新峰值点3/8T位置作为下一次峰值点评估过程的开始点,从该点进行下一次峰值点评估过程,这点也是此次峰值点评估过程的结束点。如图3所示,图中的A点到E点之间是5/4T个采样点,新峰值点C到F点之间是3/8T个采样点,如果设定m=4,那么搜索过程将在D点结束,如果m=5或者m大于5,那么搜索过程将在E点结束,搜索过程结束后,如果F点位于D和E的右侧(如图3所示),那么F点是下一次峰值点评估过程的起点。 评估过程的起点确定好后,就需要通过下面的“峰值点评估过程”来实现,具体操作如下: (1)开始点的采样值设定为阈值A(1),与纵轴交点值A(1),做平行于横轴的截线1,即y= A(1),与波形相交于M(1)点和N(1)点,M(1)点也是开始点,位置记录为ps(1)。并且截线1对应计数器c(1),c(1)值为1,设定下一条截线2对应的阈值A(2),A(2)=? A(1)+△(1)。如图4所示。 (2)如果截线完成计数器值没有达到数目m并且前一个峰值点到当前采样点之间没有达到5/4T个采样点,则进行第(3)步,否则搜索过程停止,跳到第(5)步。 (3)假设已经做好了第N个截线,下一个截线也就是第N+1个截线对应的阈值为A(N+1),A(N+1)=A(N)+△(N)。读取当前采样点值,如果采样点值大于等于 A(N+1),与纵轴交点值A(N+1),做平行于横轴的截线N+1,与波形相交于M(N+1)点和N(N+1)点,位置记录为ps(N+1),并且截线N+1对应计数器c(N+1),c(N+1)值设为0,更新下一条截线N+2对应的阈值A(N+2),A(N+2)=? A(N+1)+△(N+1),如图5所示。采样点值与已有的所有截线进行比较,如果采样点在截线的上方,相应截线计数器值加1,即c(1),c(2),…,c(N+1)中,只要采样点在相应截线的上方就加1,如图5,如果采样点在截线下方并且对应截线计数器值大于0时,该位置记录为该截线的结束点,记录该位置pe(N+1),截线完成计数器值加1,并进行更新。 (4)重复步(2)和步(3)。 (5)评估出新峰值点,如果当前采样点已经超过新峰值点3/8T,那么将当前采样点作为下一次峰值点评估过程的开始点,否则向前推进到距离新峰值点3/8T位置作为下一次峰值点评估过程的开始点,也是此次“峰值点评估过程”的结束点。 (5)中评估出新峰值点,是根据记录的截线位置来进行计算的,计算方法为所有完成的截线起始点位置与结束点位置求和取均值得到的就是新峰值点位置,如图6中的ps(4),ps(5),ps(6),ps(7),pe(4),pe(5),pe(6),pe(7),将这8个值求和取平均值再取整数即为新峰值点位置,也可以采用其他加权方法来求得。 在具体实现过程中,我们可以限定最大截线数目,将截线循环使用,以便节省内存资源,但算法复杂度会有所提高。 当然,在进行此处的操作之前需要进行低通滤波,并且确定出浊音之后来通过该算法进行基频周期估计。 3算法性能验证 我们采用比较简单的方法初步对前文所提出的峰值位置检测算法进行了验证。验证是采用单一频率信号叠加各种参数白噪声信号对算法进行测试,设置不同的信噪比,当信噪比比较大时,提出的算法与传统峰值检测方法相比,两者没有明显差别,但当信噪比比较小时,低于10dB,采用新提出的算法进行峰值位置估计,会显著好于普通峰值检测算法,这说明该算法在抗干扰性能方面由于传统峰值检测方法。我们在低信噪比下也对不同截线数目下该方法的性能进行了仿真评估,结果显示,性能与截线密集程度有关,太密集和太稀疏都不能获得良好的性能,各个截线所得交点的采样点间隔为3时性能最好。 4结束语 本文提出了一种语音信号峰值位置检测算法,它可以在一定程度上消除干扰,从而获得对语音信号基频周期进行比较精确的估计。该算法不仅可以对语音信号进行基频周期估计,也可以对由磁感应效应得到的信号进行周期估计,从而解调出数据。 参考文献: [1] 刘维巍.语音信号基音周期检测算法研究[D].哈尔滨:哈尔滨工程大学,2010. [2] 李坤,刘加. 基于小波变换和线性预测的基音提取[J]. 计算机工程,2010,36(10):276-278. [3] 赵静,罗兴国,蔡文涛.噪声环境下语音信号的基音检测[J].电声技术,2007,31(3):54?56. [4] KRUBSACK D A,NIEDERJOHN R J. An autocorrelation pitch detector and voicing decision with confidence measures developed for noise?corrupted speech [J]. IEEE transactions on signal processing,199,39(2):319?329. [5] 小利.含噪语音基音周期检测算法的研究[D].郑州:解放军信息工程大学,2007. [6] 沈晓东.语音增强技术研究[D].北京:清华大学,2010. [7] 赵力,语音信号处理[M]北京:机械工业出版社,2003. 【通联编辑:梁书】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。