您的位置:首页 > 其它

声学特征(三) pitch

2016-04-25 20:50 676 查看

基本含义

pitch跟声音的基频fundamental frequency(F0)有关,反应的是音高的信息,即声调。计算F0也被称为‘‘pitch detection algorithms(PDA)。

YIN算法

sphinx使用的YIN算法提取pitch特征,相对简单而且进行了定点化。

YIN来自于“阴阳”哲学,寓意在autocorrelation和cancellation之间的变换。YIN算法的演化流程:

Step 1: The autocorrelation method

autocorrelation function(ACF)运算可以用于寻找周期信号的周期。因为周期信号的自相关函数也是周期信号,而且周期一致。

rt(τ)=∑j=t+1t+Wxjxj+τ (1)r_t(\tau)=\sum_{j=t+1}^{t+W}x_jx_{j+\tau}\ \ \ \ \ \ \ \ \ \ \ \ \ (1)

W表示相关函数的窗口,τ\tau表示相关函数的延时。

Step 2: Difference function

dt(τ)=∑j=1W(xj−xj+τ)2d_t(\tau)=\sum_{j=1}^{W}(x_j-x_{j+\tau})^2

YIN算法使用该函数替换上面的第一步的自相关函数,优势在于:

当时域信号随着时间幅值变大的时候,导致自相关函数的峰值也会逐渐变大,最大的峰值就会后移,从而导致周期变长。而对于差分函数,幅值的变化会导致所有的τ\tau对应的差分值都会改变,减弱了这种影响。

Step 3: Cumulative mean normalized difference function

d′t(τ)=⎧⎩⎨1dt(τ)1τ∑τj=1dt(j)if τ=0otherwise
d_t'(\tau) =
\begin{cases}
1 & \quad \text{if } \tau=0\\
\frac{d_t(\tau)}{\frac{1}{\tau}\sum_{j=1}^{\tau}d_t(j)} & \quad \text{otherwise}\\
\end{cases}

相比于step2,减少了τ\tau比较小的时候出现零点的情况,减弱了小周期的产生。

Step 4: Absolute threshold

step3,如果极小值出现的时间点比周期对应的时间点要长,会出现周期变长的情况。为了解决这类问题,可以设置一个绝对的门限(比如0.1),找到低于这个门限的每一段的极小值,这些极小值中的第一个极小值对应τ\tau作为周期(第三步是使用这些极小值的中的最小值对应的τ\tau作为周期)。如果没有低于门限的点,那么选择全局最小值作为周期。

Step 5: Parabolic interpolation

前面的步骤有一个假设,即信号的周期是采样周期的倍数。如果不满足的话,会引起错误。

为了解决这个问题,每个d′(τ)d'(\tau)的局部最小值以及相邻的点,可以使用二次函数抛物线进行拟合。后续周期计算的时候使用每个局部最小值对应的拟合值。找到的最小值对应的时间即为周期。使用这种方法有可能存在bias,可以用d(τ)d(\tau)来避免这个问题。

Step 6: Best local estimate

在找到的周期值附近,在时间窗口[t−Tmax/2,t+Tmax/2][t-T_{max}/2, t+T_{max}/2]寻找极小值对应的时间作为周期,TmaxT_{max}是最大期望周期值。

总体上,YIN算法使用d′(τ)d'(\tau)进行周期估计,同时设置一个绝对门限,在找得到周期值附近重新进行搜索获得最优值。

参考

《YIN, a fundamental frequency estimator for speech and music》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: