基音检测算法
基音检测演算法(英语:pitch detection algorithm,缩写:PDA)是估计周期性或准周期性讯号的音高或基本频率的算法。该算法主要用于语音或乐音的信号处理中。基音检测算法既可以单独从时域或频域的角度实现,也可以同时利用时域和频域。
基音检测算法的用途广泛,在语音学、音乐分析、语音编码和电子音乐表演中均有重要位置。这些不同的需求使得通用算法的产生更为困难,故目前尚不存在完美的基音检测算法,实际使用中有一系列算法共存。多数基音检测算法大致可归类为下述分类中的一种[1]。
通常情况下,基音检测算法会估计准周期性信号的周期。周期的倒数即为频率。
常见的算法
[编辑]最简单的方法之一是算出信号零点间的间隔(过零率)。这种方法的缺点在于它无法应对诸如多个周期不同的正弦波或噪音这样的覆杂波形。不过这并不意味著这种方法一无是处,在只有单一声源的情景中过零率是个不错的基音检测指标。这种算法相当易于实现。
更复杂的方法会将原讯号平移一些时间,去跟原本讯号内积比对相似度,若平移若干时间后的讯号与原讯号很相似,则平移时间非常可能是该讯号之周期,透过尝试不同的平移时间,可把平移时间对相似度作图,找出相似度最大的周期, 像是AMDF演算法 (平均幅度差函数), ASMDF演算法 (平均方均差函数)和其他类似的自相关函数法,可以精确的找出基音。但是自相关函数法有时会因为杂讯太多、复音、泛音等因素(通常是“八度音程错误”),导致判断错误。他们可以很好地应对噪声信号(取决于实际状况),但不能很好地处理复音音乐(涉及多个音符)。[来源请求]
目前最精确的基音检测算法会先结合各种找相似度的方法(内积、差值),并透过人类的经验法则去修正去设门槛值,像是若讯号为音讯,可确定频率范围在20赫兹到20000赫兹间,可先锁定平移时间在0.00005秒到0.05秒的范围间,最后透过机率模型或机器学习的方法来判断音高。像是广泛被采用的YIN演算法[2]与MPM演算法[3],皆为自相关函数法的进阶版,但仍局限在单音的音频侦测,若讯号为复音,同时有两个音源,往往会采用频域的方法。
基于频域的算法
[编辑]若讯号为复音,要同时侦测两个以上的音源之频率,在频域中是可行的,首先会先将讯号转为频谱[4] ,常见的方法是透过快速傅立叶变换,可在有限运算资源下,得到非常有效的准确度。
常见的频域方法包含泛音内积频谱法[5][6]、倒频谱分析[7],最大似然估计法,他们都是由预设的频率对照表,试图从讯号频谱特征中,找到对应之频率[8]。
为了改进从离散傅立叶频谱得到的基音估计,可以使用重新分布法 (基于相位) or 格兰徳克插值 (基于幅度) 的技术超出离散傅立叶频段提供的精度。 布朗和普克特提供了另一种基于阶段的方法 [9]
基于频域和时域的算法
[编辑]频谱/动态的基音检测法,像是YAAPT[10][11],结合了时域和频域,时域方面,透过自相关函数法,频域则是透过频谱资讯来辨识出音高,并从较为可能的音高种类中,利用动态规划找出最佳的音高选择,这种结合时域和频域的演算法,可以结合更多资讯,降低时域或频域所独立造成的误差。
语音讯号的基本频率
[编辑]语音讯号的基本频率范围大约为40赫兹到600赫兹。[12]
自相关函数法需要至少两个周期才能侦测频率,假如音讯的基本频率为40赫兹,至少需要0.05秒的语音讯号才能分析。然而在0.05秒内,具有较高基频的语音不一定在整个窗口中具有相同的基频。[12]
参考资料
[编辑]- ^ D. Gerhard. Pitch Extraction and Fundamental Frequency: History and Current Techniques (页面存档备份,存于互联网档案馆), technical report, Dept. of Computer Science, University of Regina, 2003.
- ^ A. de Cheveigné and H. Kawahara. YIN, a fundamental frequency estimator for speech and music.[永久失效链接] The Journal of the Acoustical Society of America, 111:1917, 2002. doi:10.1121/1.1458024
- ^ P. McLeod and G. Wyvill. A smarter way to find pitch. (页面存档备份,存于互联网档案馆) In Proceedings of the International Computer Music Conference (ICMC’05), 2005.
- ^ Hayes, Monson. Statistical Digital Signal Processing and Modeling. John Wiley & Sons, Inc. 1996: 393. ISBN 0-471-59431-8.
- ^ Pitch Detection Algorithms (页面存档备份,存于互联网档案馆), online resource from Connexions
- ^ A. Michael Noll, “Pitch Determination of Human Speech by the Harmonic Product Spectrum, the Harmonic Sum Spectrum and a Maximum Likelihood Estimate,” Proceedings of the Symposium on Computer Processing in Communications, Vol. XIX, Polytechnic Press: Brooklyn, New York, (1970), pp. 779-797.
- ^ A. Michael Noll, “Cepstrum Pitch Determination,” Journal of the Acoustical Society of America, Vol. 41, No. 2, (February 1967), pp. 293-309.
- ^ Mitre, Adriano; Queiroz, Marcelo; Faria, Régis. Accurate and Efficient Fundamental Frequency Determination from Precise Partial Estimates. (页面存档备份,存于互联网档案馆) Proceedings of the 4th AES Brazil Conference. 113-118, 2006.
- ^ Brown JC and Puckette MS (1993). A high resolution fundamental frequency determination based on phase changes of the Fourier transform. J. Acoust. Soc. Am. Volume 94, Issue 2, pp. 662-667 [1]
- ^ Stephen A. Zahorian and Hongbing Hu. A Spectral/temporal method for Robust Fundamental Frequency Tracking. (页面存档备份,存于互联网档案馆) The Journal of the Acoustical Society of America, 123 (6), 2008. doi:10.1121/1.2916590
- ^ Stephen A. Zahorian and Hongbing Hu. YAAPT Pitch Tracking MATLAB Function (页面存档备份,存于互联网档案馆)
- ^ 12.0 12.1 Huang, Xuedong; Alex Acero; Hsiao-Wuen Hon. Spoken Language Processing. Prentice Hall PTR. 2001: 325. ISBN 0-13-022616-5.