摘要:基音周期搜索的准确性将直接影响到语音编码器的编码质量和效率。本文根据AMR-WB+标准中基音周期搜索算法会发生检测基音倍频和半频错误,提出了开环基音搜索算法。该算法以自相关函数为基础,利用基音周期的平滑性,引入基音周期全局参考作为基音周期判断的辅助条件,有效解决了基音周期加倍的问题并在基音周期预测中体现基音周期的平滑性,实验结果表明本文算法性能优于AMR-WB+中的算法性能。该算法已应用到AVS-P10移动音频编解码框架中。
关键词:基音周期; 全局参考; 自相关函数
中图分类号:TN9123 文献标识码:A文章编号:2095-2163(2014)01-0075-04
0引言
基音周期搜索是语音编码中一个重要的问题,其准确性将直接影响到语音编码器的编码质量和效率。准确的基音周期性分析,可以在语音编码过程中有效地去除冗余,降低编码的比特数,实现低比特率,高质量的语音编码。目前,人们已经提出了多种基音检测算法。其中,在时域的角度,传统的算法主要包括基于平均幅度差函数(AMDF)的基音估计算法、基于短时自相关函数(ACF)的基音检测算法。在频域的角度,1984年,Griffin和Lim提出了一种频域基音周期估计方案[1],用于多带激励语音编码算法 (MBE),这种基音周期估计算法采用闭环分析合成方法,匹配信号频域波形,得到最优基音周期估计。1998年,Janer等提出了基于小波变换的基音周期估计方法[2],而2003年,楼红伟等提出小波加权的基音周期检测方案[3]。其后在2006年,黄海提出了一种基于Hilbert-Huang变换的语音信号基音周期提取方法,该方法无须对语音信号进行分帧截断,对其直接进行Hilbert-Huang变换后, 通过基音频率搜索处理得到基音频率及其随时间的变化[4]。2008年,Zhao采用线性导谱系数与自相关函数相结合的方式预测基音周期[5]。2012年,Ba H等将谐波比率和倒频谱分析的方法相结合对基音周期进行估计[6]。
AVS-P10音频标准是面向新一代移动通信系统的低码率高保真音频编解码,技术标准应用包括移动通信、无线宽带、多媒体通信、互联网宽带以及流媒体业务等。其中的核心编码器由ACELP和变换矢量TVC组成。基音周期搜索属于ACELP编码中重要组成部分,其搜索效率及存储代价直接影响编码器性能。3GPP制定的标准AMR-WB+[7]编码采用了加权相关函数法进行基音周期的搜索。在进行基音周期搜索之前, 对输入的信号进行预处理,除去直流分量,随后滤除对基音周期估计不起作用的高频部分。AMR-WB+使用传统的时域相关函数,并采用加权函数来防止倍周期以及平滑基音周期。在AMR-WB+编码标准中,使用加权函数进行加权,其合理之处在于该加权函数经过了训练,能够在一定程度上解决倍周期问题。但是对于倍音周期问题,并不是所有的候选值都会遇到,对于所有的候选值进行加权更无疑会增加运算复杂度。此外,加权函数函数值序列也会占用较大的内存空间,增加了存储空间开销。在AMR- WB+中,同时采用了基音周期平滑加权。其加权函数也采用类似对基音倍周期问题相似的加权。但如此这般要对其它所有的候选值进行加权,则必然会增加运算复杂度。
本文以自相关函数为基础,利用基音周期的平滑性,引入基音周期全局参考作为基音周期判断的辅助条件,有效解决了基音周期加倍的问题并在基音周期预测中体现基音周期的平滑性,实验结果表明本文算法性能优于AMR-WB+中的算法性能。该算法已应用到AVS-P10移动音频编解码框架中。
1开环基音搜索方法
每帧输入信号可分成四个子帧,开环基音搜索每两个子帧,即执行一次基音周期估计。开环基音搜索是为了估计出一个比较准确的基音周期,由此而降低闭环基音周期搜索的复杂度。
开环基音周期搜索基于感知加权后的信号而展开分析,感知加权域信号Sw(n)在进行基音周期搜索之前,使用4阶FIR滤波器Hdecim2(z)实现降采样处理,得到信号Swd(n)进行开环基音周期搜索。
开环基音周期搜索过程包括:自相关函数序列计算,基音周期全局参考确定,基音周期确定三个部分。首先计算信号Swd(n)的自相关函数,然后根据自相关函数的结果确定当前的基音周期全局参考,最后根据当前的基音周期全局参考确定语音信号的基音周期。
1.1自相关函数计算
1.2基音周期全局参考
为满足基音周期的平滑性,引入基音周期全局参考global_pitch辅助进行基音周期的判断。基音周期全局参考确定方法如下所述:
利用前节确定的基音周期候选值序列peakpos[6]以及自相关函数序列maxcorr[6],首先选择与前帧的基音周期全局参考接近的基音周期候选值,对其相应的自相关函数值进行加权,将自相关函数值乘以1.2,加权后重新排列基音周期候选值序列peakpos[6]以及自相关函数序列maxcorr[6]。
对peakpos[6]以及maxcorr[6]判断并去除基音周期加倍的情况。倍周期的消除采用的是固定加权方法,其最终目的是找出一个最佳基音周期候选值,算法过程为:
(1)设定最佳的基音周期候选值为自相关函数最大值对应的基音周期候选值,对于每一个基音周期候选值,选择一个自相关函数值的缩放因子,当基音周期候选值大于阈值25时,选择缩放因子为1.2,否则选择缩放因子为1.11;
(2)比较该基音周期候选值对应的自相关函数值与自相关函数值序列中的最大值和缩放因子的比值,若
①当前考虑的基音周期候选值小于当前最佳的基音周期;
②当前基音周期候选值对应的自相关函数值大于自相关函数序列中的最大值和缩放因子的比值,这两个条件同时满足时则设定基音周期最佳候选值为当前的基音周期候选值。如此循环,直至基音周期候选值序列中的每一个基音周期候选值计算完成;