【读论文】2020 IEEE [C] 多种基音检测算法对比研究 A comparative study of various pitch detection algorithms

📅 2026/8/4 3:31:44
【读论文】2020 IEEE [C] 多种基音检测算法对比研究 A comparative study of various pitch detection algorithms
GB/T 7714-2015RAO P S, S K, RAVISHANKAR S, et al. A comparative study of various pitch detection algorithms[C]//2020 IEEE International Conference on Electronics, Computing and Communication Technologies (CONECCT). IEEE, 2020.文章目录GB/T 7714-2015多种基音检测算法对比研究摘要关键词一、引言二、基音检测算法A 时域基音检测算法B 时域基音检测算法1 改进自相关法2 平均幅度差函数AMDF3 YIN算法平方差函数法C 频域基音检测算法1 倒谱法三、多种基音检测算法对比A 时间复杂度/计算耗时B 算法检测误差四、结果与分析A 各算法优缺点总结1 改进自相关(AUTO)2 AMDF平均幅度差函数3 YIN算法4 倒谱法(CEPS)五、结论参考文献多种基音检测算法对比研究普拉吉瓦尔·S·拉奥*, 库希克·S*, 斯里拉姆·拉维尚卡尔*, R·阿德瓦伊思·阿南克里什南*, 巴拉钱德拉·K**印度班加罗尔 B.M.S.工程学院 电信工程系邮箱balachandrak.tcebmsce.ac.in摘要数字信号处理针对各类信号执行多种数学运算本文研究应用于音乐信号的基音估计算法。文中详细研究时域、频域两类基音检测算法改进自相关法、平均幅度差函数法、YIN算法、倒谱法。采用真实音乐信号与合成音乐信号完成算法测试基于时间复杂度与检测误差对比各算法性能。关键词基音自相关平均幅度差函数YIN倒谱杰拉德一、引言语音由肺部气流经气管到达口腔时声带振动产生声带每秒振动次数称为人声音基频也称作基音。声波等介质中波形每秒振动次数称为频率或基音。男性基音偏低频率区间55Hz131Hz大致对应标准钢琴A1C3音女性基音更高频率区间170Hz262Hz大致对应F3C4音。乐器频率覆盖范围极宽最低可达16Hz最高至4000HzC0~B7但1000Hz以上频率对基音分析意义较低因此本文研究范围限定在1000Hz以下频段。二、基音检测算法基音可在时域或频域完成计算。时域基音检测直接利用音频原始采样数据频域基音检测需借助傅里叶变换等运算将信号从时域转换至频域后再分析。A 时域基音检测算法时域算法处理声卡直接输出的原始采样序列采样点为等时间间隔离散波形数值常见采样率44100Hz。输入采样值KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x[n]\)为[ − 1 , 1 ] [-1,1][−1,1]区间实数代表离散时刻n nn处波形幅值。本节介绍自相关AUTO、平均幅度差函数AMDF、YIN平方差法、简单特征法等时域基音算法。B 时域基音检测算法时域算法处理声卡直接输出的原始采样序列采样点为等时间间隔离散波形数值常见采样率44100Hz。输入采样值KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x[n]\)为[ − 1 , 1 ] [-1,1][−1,1]区间实数代表离散时刻n nn处波形幅值。本节介绍自相关AUTO、平均幅度差函数AMDF、YIN平方差法、简单特征法等时域基音算法。1 改进自相关法自相关是最主流的基音估计算法之一将输入信号KaTeX parse error: Cant use function \( in math mode at position 1: \̲(̲x[n]\)与自身做互相关运算将信号逐位移位后与原信号相乘全部乘积求和得到单组自相关值。r [ n ] ∑ N 0 x [ n ] ⋅ x [ N − n ] r[n]\sum_{N0}x[n] \cdot x[N-n]r[n]N0∑​x[n]⋅x[N−n]式中n 1 , 2 , … , N n1,2,\dots,Nn1,2,…,NN NN为帧长。自相关法至少需要两个完整基音周期才能完成基音检测若基频为40Hz至少需要50ms语音帧因此窗口仅取前半段数据。上式为输入信号自相关计算公式。若信号周期为P PP自相关函数会在P PP整数倍位置出现极大值n 0 n0n0原点处为全局主峰各周期倍数位置为局部极大值。首个局部极大值对应的采样间隔即为基音周期取倒数得到基频。算法通过阈值过滤低幅值峰值简化峰值检索、降低误差这也是“改进自相关”与基础自相关的核心区别。图1 改进自相关基音估计框图图注输入x [ n ] x[n]x[n]→2048点分窗→自相关运算→阈值筛选峰值→基音F s / F_s/Fs​/峰值索引窗口指针未达音频末尾则滑动窗重复计算计算完成后输出绘图改进自相关提取音频基音步骤整段音频分窗处理窗长2048点该窗长可检测最低基音约50Hz分窗后乘合适窗函数对加窗信号执行自相关运算滤除低于阈值的自相关幅值检索剩余峰值并记录峰值索引采样频率F s F_sFs​除以峰值索引得到当前帧基音按帧移滑动窗口50%重叠时帧移取1024点判断窗口指针是否到达音频末尾未到则返回步骤1全部帧计算完成后绘制基音曲线等结果。图2 加窗音频的自相关曲线图注横轴采样索引纵轴幅值原点全局峰值坐标(0,6.99)首个局部极大值在索引61处幅值6.505采样率48000Hz基音计算值48000 / 61 787 H z 48000/61787\mathrm{Hz}48000/61787Hz图2为加窗信号自相关结果自相关为偶函数、关于原点对称因此仅取半段分析。原点全局峰值对应信号总能量首个局部极大值出现在第61个采样点采样率48000Hz基频48000 / 61 787 H z 48000/61787\mathrm{Hz}48000/61787Hz。2 平均幅度差函数AMDF伪周期波形相邻周期波形形状近似将波形平移一个周期后与原波形对齐波峰波谷完全重合。直接做差值求和会出现正负抵消因此取差值绝对值再求平均对应公式s [ n ] ∑ N 0 ∣ x [ n ] − x [ n − N ] ∣ / N s[n]\sum_{N0} |x[n]-x[n-N]| / Ns[n]N0∑​∣x[n]−x[n−N]∣/N式中n 1 , 2 , … , N n1,2,\dots,Nn1,2,…,NN NN为帧长。平移量β \betaβ不等于周期时差值总和偏大β \betaβ等于周期时差值总和取极小值算法检索局部极小值位置作为周期索引。图3 AMDF基音估计框图图注输入x [ n ] x[n]x[n]→2048点分窗→循环移位求绝对值差→计算差值和→检索极小值索引→基音F / F/F/极小索引窗口未结束则滑动窗迭代完成后绘图AMDF提取音频基音步骤整段音频分窗窗长2048点最低可检测基音约50Hz分段后乘窗函数加窗信号与循环移位后的信号逐点求绝对值差累加所有差值并保存求和结果循环移位重复步骤2、3直至移位后信号与原始窗完全重合检索所有差值和中的最小值记录极小值对应索引采样频率除以极小索引得到当前帧基音按帧移滑动窗口50%重叠帧移1024点判断窗口是否遍历完整音频未遍历则返回步骤1全部计算完成后输出绘图。图4 加窗音频的平均幅度差函数曲线图注横轴采样索引纵轴绝对差值首个局部极小值位于索引133差值15.93采样率44100Hz基音44100 / 133 331.57 H z 44100/133331.57\mathrm{Hz}44100/133331.57Hz图4为加窗信号AMDF曲线首个局部极小值在133号采样点采样率44100Hz基频44100 / 133 331.57 H z 44100/133331.57\mathrm{Hz}44100/133331.57Hz。3 YIN算法平方差函数法伪周期波形平移一个周期后与原波形高度重合直接差值求和会正负抵消因此采用差值平方求和所有项恒非负公式s [ n ] ∑ ( x [ n ] − x [ n − N ] ) 2 s[n]\sum (x[n]-x[n-N])^{2}s[n]∑(x[n]−x[n−N])2式中n 1 , 2 , … , N n1,2,\dots,Nn1,2,…,NN NN为帧长。平移量不等于周期时平方和偏大等于周期时平方和取极小值算法检索局部极小值位置。图5 YIN基音估计框图图注输入x [ n ] x[n]x[n]→2048点分窗→循环移位求差值平方和→检索极小索引→基音F s / F_s/Fs​/极小索引窗口未结束则滑动迭代全部计算完成绘图YIN提取音频基音步骤整段音频分窗窗长2048点最低可检测基音约50Hz分段后乘窗函数加窗信号与循环移位信号求差值平方累加所有平方项并保存循环移位重复步骤2、3直至信号还原初始窗口检索所有平方和的最小值记录极小值索引采样频率除以极小索引得到当前帧基音帧移1024点滑动窗口50%重叠判断窗口是否遍历完整音频未遍历返回步骤1全部计算完成绘图。图6 加窗音频YIN算法曲线图注横轴采样索引纵轴绝对平方差值首个极小值索引343数值0.9768采样率44100Hz基音44100 / 343 128.57 H z 44100/343128.57\mathrm{Hz}44100/343128.57Hz图6为加窗信号YIN函数曲线首个局部极小值在343采样点采样率44100Hz基频44100 / 343 128.57 H z 44100/343128.57\mathrm{Hz}44100/343128.57Hz。C 频域基音检测算法频域算法不直接处理原始时域采样先通过傅里叶变换将时域信号转换至频域包括谐波积谱、次谐波谐波比、复倒谱、频谱峰值法。1 倒谱法倒谱适用于卷积型信号基音检测核心思路卷积在频域转为相乘取对数将乘积转换为加法再逆傅里叶变换还原类时域倒谱域。X ( ω ) ∑ n − ∞ ∞ x [ n ] e − j ω n (4) X(\omega ) \sum _{n-\infty }^{\infty }x[n] e^{-j\omega n} \tag{4}X(ω)n−∞∑∞​x[n]e−jωn(4)l o g ( X ( ω ) ) l o g ∣ X ( ω ) ∣ j a r g ( X ( ω ) ) log (X(\omega))log |X(\omega)|j arg (X(\omega))log(X(ω))log∣X(ω)∣jarg(X(ω))x ′ [ n ] 1 2 π ∫ 0 2 π l o g ( X ( ω ) ) e j ω n d ω x[n]\frac{1}{2 \pi} \int_{0}^{2 \pi} log (X(\omega)) e^{j \omega n} d \omegax′[n]2π1​∫02π​log(X(ω))ejωndω图7 倒谱CEPS基音估计框图图注输入x [ n ] x[n]x[n]→2048点分窗→FFT傅里叶变换→取对数→IFFT逆傅里叶变换→检索峰值索引→基音F s / F_s/Fs​/峰值索引窗口未结束则滑动迭代计算完成绘图倒谱提取音频基音步骤原文笔误写成YIN实际为倒谱整段音频分窗窗长2048点最低可检测基音约50Hz分段后乘窗函数对加窗信号执行FFT快速傅里叶变换转换至频域对频谱幅值取对数执行IFFT逆傅里叶变换回到倒谱时域检索倒谱峰值并记录峰值索引采样频率除以峰值索引得到当前帧基音帧移1024点滑动窗口判断窗口是否遍历完整音频未遍历返回步骤1全部计算完成绘图。三、多种基音检测算法对比A 时间复杂度/计算耗时所有算法均在MATLAB平台实现表1汇总各类乐器采样的单段计算耗时。表1 各基音算法计算耗时单位秒乐器采样改进自相关(AUTO)AMDFYIN倒谱(CEPS)小提琴E60.2670.7691.3730.125小提琴E40.2150.3230.5070.115小号E30.3071.3962.4320.134双簧管G50.2500.6430.9860.120吉他B20.2790.9911.7480.137长笛A40.3662.2613.6720.142低音提琴C10.3271.0571.8550.130测试数据集包含各类乐器标准乐音E6(1295Hz)、E4(324Hz)、E3(162Hz)、G5(770Hz)、B2(121Hz)、A4(440Hz)、C1(32Hz)乐器包含小提琴、小号、双簧管、吉他、长笛、低音提琴。改进自相关(AUTO)时间复杂度O ( n ) O(n)O(n)仅单次遍历窗内采样耗时主要消耗在峰值检索AMDF复杂度O ( n 2 ) O(n^2)O(n2)双层循环遍历信号与循环移位采样差值运算开销较低YIN复杂度O ( n 2 ) O(n^2)O(n2)双层循环差值平方运算计算量更大整体耗时最长倒谱(CEPS)复杂度O ( n ) O(n)O(n)单次遍历耗时集中在FFT/IFFT与峰值检索。图8 各算法计算耗时对比柱状图图注横轴乐器采样纵轴计算时长秒图例蓝色AUTO、青色AMDF、绿色YIN、紫色倒谱B 算法检测误差采用总误差率GER衡量检测偏差公式G E R ∑ i 1 N ∣ 实际频率 − 检测频率 ∣ 实际频率 × 100 % (7) GER \sum _{i1}^{N}\frac {|实际频率 - 检测频率 | }{ 实际频率 }× 100\% \tag{7}GERi1∑N​实际频率∣实际频率−检测频率∣​×100%(7)求和覆盖全部音频帧取绝对值避免正负误差抵消。改进自相关若阈值设置不当会误判峰值倒谱也存在同类问题当基频幅值低于谐波时倒谱失效例如吉他B2音121Hz基频幅值远低于242Hz一次谐波总误差率高达187%。所有算法在1000Hz以下低频段表现稳定高频E6误差普遍更高。表2与图9为各算法误差百分比对比。图9 各算法检测误差对比柱状图图注横轴乐器采样纵轴误差百分比图例蓝色AUTO、青色AMDF、绿色YIN、紫色倒谱表2 各基音算法检测误差单位%乐器采样AUTOAMDFYINCEPS小提琴E619.6416.6515.816.64小提琴E42.781.361.564.55小号E32.821.451.324.75双簧管G54.611.251.259.42长笛A41.791.021.214.62低音提琴C19.745.425.256.92四、结果与分析本文在MATLAB中搭建实时基音检测系统完成四类算法测试得到如下结论AMDF、YIN算法实时延迟约1~2秒AUTO与倒谱延迟小于1秒延迟排序C E P S A U T O A M D F Y I N CEPS AUTO AMDF YINCEPSAUTOAMDFYIN取10秒音频约50万采样测试YIN计算耗时最长倒谱耗时最短精度层面YIN多数帧检测值贴近真实频率倒谱误差最大。误差从高到低排序C E P S A U T O A M D F Y I N CEPS AUTO AMDF YINCEPSAUTOAMDFYIN计算耗时排序与实时测试完全一致。图10 多算法基音曲线对比图注横轴时间纵轴频率蓝线AUTO、橙线AMDF、黄线YIN、紫线CEPS四段钢琴音频基音轨迹对比A 各算法优缺点总结1 改进自相关(AUTO)优点原理简单计算速度快数学模型直观易懂。缺点峰值筛选阈值难以确定易误取首个局部峰值前的伪峰需自适应自相关优化检测误差中等。2 AMDF平均幅度差函数优点底层数学逻辑简单整体检测误差最小。缺点计算耗时中等偏高。3 YIN算法优点架构简洁可高效实现支持多种非周期信号拓展适配语音、音乐场景检测误差全局最低。缺点计算开销最大耗时久。4 倒谱法(CEPS)优点无需处理相位理解后频谱分解操作简单基础遍历运算耗时适中。缺点FFT、IFFT变换计算开销大易丢失频谱细节等效对频谱做平滑低通滤波基频幅值弱于谐波时误差急剧升高前文吉他B2案例已验证。五、结论本文详细介绍改进自相关、AMDF、YIN、倒谱四类基音估计算法在MATLAB平台完成全部实现从计算耗时、总误差率两个维度完成对比分析。本研究成果可落地各类音乐处理应用实时音高检测场景优先选用AUTO或倒谱追求低延迟音高偏移、高精度音频处理场景优先AMDF、YIN允许更长计算时间以换取更低检测误差。参考文献[1] Denis Jouvet, Yves Laprie. Performance Analysis of Several Pitch Detection Algorithms on Simulated and Real Noisy Speech Data. EUSIPCO’2017, 25th European Signal Processing Conference, Aug 2017, Kos, Greece.[2] Lyudmila Sukhostat and Yadigar Imamverdiyev (2014). “A Comparative Analysis of Pitch Detection Methods Under the Influence of Different Noise Conditions”.[3] Lyudmila Sukhostat, Yadigar Imamverdiyev “A Comparative Analysis of Pitch Detection Methods under the Influence of Different Noise Conditions”, Journal of Voice September 2014.[4] Rabiner, L.R. (1977), “On the Use of Autocorrelation Analysis for Pitch Detection, IEEE Trans. Acoustic, Speech, Signal Process. 25, 24-33.[5] De Cheveigne, A., Kawahara, H. (2002). “YIN, a fundamental frequency estimator for speech and music, J. Acoustic Society Am. 111, 1917-1930.[6] Alain de Cheveigne and Hideki Kawahara (2001). “Comparative evaluation of F0 estimation algorithms”.[7] Gerhard, David. (2003). Pitch Extraction and Fundamental Frequency: History and Current Techniques.[8] Camacho A. SWIPE: A saw tooth waveform inspired pitch estimator for speech and music. Gainesville, Florida: University of Florida; 2007.[9] T. T. Swee, S. H. S. Salleh and M. R. Jamaludin, “Speech pitch detection using short-time energy,” International Conference on Computer and Communication Engineering (ICCCE’10), Kuala Lumpur, 2010, pp. 1-6, doi: 10.1109/ICCCE.2010.5556836.[10] T. Drugman, G. Huybrechts, V. Klimkov and A. Moinet, “Traditional Machine Learning for Pitch Detection,” in IEEE Signal Processing Letters, vol. 25, no. 11, pp. 1745-1749, Nov. 2018, doi: 10.1109/LSP.2018.2874155.[11] B. Faghih and J. Timoney, “An investigation into several pitch detection algorithms for singing phrases analysis,” 2019 30th Irish Signals and Systems Conference (ISSC), Maynooth, 10.1109/ISSC.2019.8904943. Ireland, 2019, pp. 1-5, doi: