APP下载

基频提取算法的研究与评价

2012-10-20陈敏敏张云刚王智

微型电脑应用 2012年9期
关键词:基音错误率基频

陈敏敏,张云刚,王智

0 引言

通过对语音信号发声过程的研究以及观察记录的各种语音波形,便可知道语音信号的频率分量的分布范围。如果用一个防混叠的带通滤波器将此范围内的语音信号频率分量取出,然后按某采样率对语音信号进行采样,就可以得到离散时域的语音信号。近代语音系统中,为了实现更高质量的语音编译码器或者使语音识别系统得到更好的识别率,将此频率范围扩展到 7-9kHz,采样率从 8kHz提高到了15-20kHz。

由于语音信号的准平稳特性,任何语音信号数字处理算法和技术,都建立在“短时”的基础上,在某些短时段中,它呈现出随机噪声的特性,另一些短时段则呈现出周期信号的特征,其它一些是二者的混合。即语音信号的特征是随时间而变化的。只有在一短时间间隔中,语音信号才保持相对稳定一致的特性,这段短时间一般可取为5—50ms。

早在1951年,Licklider提出了一种自相关算法[1]去分析周期特性,但这种方法的复杂度是随信号的采样率的提高成平方增加的,为了提高精度增大采样率,因此,算法的实现需要较好的硬件支持,同时,当基频超过帧长一半时,自相关法的精度会下降;为了避免短时自相关函数的乘法运算,1983年Hess[1]采用了一个简单方法,用加减法和绝对值的运算,替换了自相关的乘法运算,设计了AMDF算法公式(1)

虽然AMDF运算量远远小于自相关法,但AMDF算法中k值变化一大,判断结果就不准确。研究人员对上述进行改进,产生了k变长的LV—AMDF算法,但对于周期性和平稳性都较好的浊音语音段来说,该方法常会出现的第一周期谷点,并不是全局最低谷点,最低谷值点也不一定是基音周期所在点,在这种情况下,若以全局最低谷点作为基音周期计算点,就会产生严重的检测错误[2]。

语音的音频提取有广泛的应用。它促进了韵律学研究的发展;在语音识别中被用来识别原始的词汇;一些音乐的应用也需要基频提取,比如多媒体内容元数据的抽取,被用在自动评分和实时交互系统等等应用上。但是大部分算法在可靠性上存在一定的缺陷和错误率,下面我们着重比较最近几年主要的几种基频提取算法,具有篇幅有限,我们选用测试集51mike.com中许志安的《为什么你背着我爱别人》做原始的筛选。

1 基频提取算法比较

1.1 Paul Boersma[3]提出了一种改进了的自相关算法(kpitch),主要从两个公式上进行了改进自相关算法。用原始的窗体信号的自相关变量 ra(t)除以窗体的自相关变量rw(t),得到新的rx(t)的预估值公式(2)

在公式‘sin x / x’中补充延迟的部分,得公式(3)

分别取窗大小τmax400和1000时,抽取《为什么你背着我爱别人》得到如下波形,如图1、图2所示:

图1 τmax=400时的kpitch音高提取结果

图2 τmax=1000时的kpitch音高提取结果

从结果看出,歌曲具有较多的倍频误差,效果不是很理想。

1.2 近年来,又有不少研究者改进了原始的AMDF算法[4],并且和Viterbi算法[5]结合起来,来提取语音基音周期[4], 抽取我们的示例歌曲得到如下结果,如图3所示:

图3 归一化SMDSF、及分别加中值平滑、SViterbi后的效果

归一化 SMDSF 函数确定基音周期候选值, 定义状态损失函数和转移损失函数, 进而运用 Viterbi算法进行基音周期提取, 比基准系统基音周期提取的总错误率降低了 9.31%。其中, 使用 Viterbi 算法后处理的错误率,比使用 5点中值平滑方法后处理的总错误率降低了27.0%[6]。可是提取效果仍然比较差。

1.3 Anssi P.Klapuri[7]提出了一种基于谐波和频谱平滑法来抽取多音信号的基频的方法,称做fxrapt算法,它分解出各个声音的谐波,设计了一个频谱平滑的算法,迭代的从混合的声音中去掉每个探测到的声音,直至剩下干净的声音为止。有明显的倍频、半频误差,效果也不是很理想。测试示例歌曲,效果如图4所示:

图4 klapuri的基音提取算法

1.4 Alain de Cheveigne[8]进一步改进了自相关算法,提出了一种Yin算法,主要从5个方面改进了原始的自相关算法,先用一个新的函数替换了自相关函数;然后通过把短延时值平均后,重新规范化每一个原始值;设置一个绝对的阀门,防止取到错误的点;用抛物中值法,解决非整数周期的情况;最后在附近区域选择最好的估计值。该方法具有低延迟并且拥有极低的错误率,测试示例歌曲,效果如图5所示:

图5 yin acf算法提取效果

同样《把根留住》也具有较低的错误率。我们用51mike.com歌库做测试集,定义凡是抽取的音高估计值超过实际值20%的为严重错误,最终严重错误率在1%左右,具有较好的效果,Yin算法比上其他几个算法错误率,都至少降低了60%以上。

2 结论

经过详细的比较,Yin算法在各类音高提取中具有最低的错误率,其他的几个算法都比Yin算法错误率高出不少,我们同样用51mile.com的曲库做样本集,经过不少高水平歌手的反复运用,均取到了良好的反馈和效果。唯一不足的是,Yin算法虽然多从方面修正了原始的自相关算法,极大的了提高了提取音高的准确性,但是经过数次修正,该算法计算效率相比其他算法有点低,一些早期的机器运算起来稍微有点卡,但是当前目前主流的PC,都不影响用户体验。

[1]Li hui, Dai Beiqian, Lu Wei.A pitch detectionalg or ithm based on AMDF and ACF[ C ].Proceedings of ICASSP.Beijing:Dig ital Object Identifier,14-19, 2006

[2]成新民等.一种改进的 AMDF求取语音基音的方法[J].微电子学与计算机,2005,(22).

[3]Boersma P.Accurate short-term analysis of the fundamental frequency and the harmonics-to-noise ratio of a sample sound.[j]Institute of Phonetic Sciences, University of Amsterdam, Proceedings.1993;(17): 97-110.

[4]Shahidur M.Rahman, Hirobumi Tanaka, Tetsuya Shimamura ."Pitch Determination Using Aligned AMDF".ICSLP Ninth International Conference on Spoken Language Processing Pittsburgh, [M]PA, USA September 17-21, 2006

[5]Gambino P.M.B.and Burnett.I.S.Low Delay Pitch Detection Using Dynamic-programming/viterbi Techniques.ISSPA, [M]Gold Coast, Australia, 25-30 August,1996.

[6]刘建,郑方,吴文虎.基于幅度差平方和函数的基音周期提取算法[J].清华大学学报.2006, Vo l.46, No.1:74-77

[7]Klapuri, A.P.“Multiple fundamental frequency estimation based on harmonicity and spectralsmoothness,” IEEE[j]Trans.Speech and Audio Proc., 2003, 11(6), 804-816.

[8]Alain de Cheveigne, Hideki Kawahara.YIN, a fundamental frequency estimator for speech and music[J].J.Acoust.Soc.Am.111 (4) 1917-1930, April 2002

猜你喜欢

基音错误率基频
语音同一认定中音段长度对基频分析的影响
基于时域的基频感知语音分离方法∗
桥面铺装层对中小跨径桥梁基频影响分析
基于多分类支持向量机和主体延伸法的基音检测算法
基于基音跟踪的语音增强研究
小学生分数计算高错误率成因及对策
45000kHz基频晶体滤波器
正视错误,寻求策略
解析小学高段学生英语单词抄写作业错误原因
一种基音周期检测中减小中值平滑误差的方法