基频估计,也叫音高跟踪。
最简单的方法:单纯用频谱最大值,结果不靠谱。
音高跟踪应用:哼唱搜索、音调识别、音调评分、变调变速、韵律分析。
时域法:如自相关函数法、YIN 音高估计法、最大似然算法、SIFT 滤波器算法、超分辨率算法等。
频域法:如傅里叶变换正弦波模型法;倒谱变换法;小波变换法等。
参数法:构建信号模型,根据统计准则估计参数。一般计算复杂度较高,但更为可靠,对噪声的鲁棒性也更强。
乐音音高范围
类型 | 音高范围 | 频率范围 |
---|---|---|
男高音 | C4-C6 | 261.6Hz~1046.5Hz |
男中音 | A2-A4 | 220Hz~440Hz |
男低音 | C2-D3 | 65.4Hz~148.83Hz |
女高音 | C4-E6 | 261.6Hz~1318.5Hz |
女中音 | G3-G5 | 196Hz~784Hz |
女低音 | E3-E5 | 164.8Hz~659.3Hz |
时域方法基本上都是对时域帧信号作出一个副本,然后把副本套在原件上滑动并对比二者,求出一些相应指标(如自相关),最终求出点数周期 $N_0$,基频即为 $f_0 = \frac {f_s}{N_0}$。
比如原始的自相关 $C[m]$ 的版本如下,随着 $m$ 增大,可乘区间会越来越短,求出来的值也会最终趋于 $0$。:
$$ C[m] = \sum_{n=0}^{N-1-m} x[n] x[n + m], \ \ \ m \in [0, N-1] $$
改进后的版本如下,其中半帧长度 $N_H = \lfloor \frac {N}{2}\rfloor$:
$$ C[m] = \sum_{n=0}^{N_H-1} x[n] x[n + m], \ \ \ m \in [0, N_H-1] $$
下面是一份唢呐音频(半帧)。
对整段信号做自相关:
$$ R[m] = \sum_{n=0}^{N-1-m} x[n] x[n + m] $$