基频提取算法-YIN算法解析

来源:互联网 发布:oracle连接数据库很慢 编辑:程序博客网 时间:2024/05/16 03:26

YIN 算法解析

 

目的:计算基音周期从而提取基频。

 

YIN算法是基于自相关函数法的,或者说是自相关函数法的变形。其主要针对浊音,因为浊音呈现‘准’周期性、逐渐衰减。   

为解决长短基音周期受窗口长度的影响,采用了修正的短时相关,选取两个不同序列的两个不同窗。

自相关函数法就是找到第一个最大值点与0点的距离,可以认为是基频周期。

 

 

Yin算法首先计算每一个点与后一个点的差值设为delta,然后将delta的乘积赋值给每一个buffer。

基于短时相关法的一个问题就是对振幅改变很敏感。所以用前后两个点的差进行相乘,取得乘积用于解决后面的过高或者过低的误差问题。

 

解决过高问题的方法是平均值和归一化,将数值控制在0到1之间,

 

 

具体做法就是取第一个数为基准,与每个数叠加,用个每个buffer与下标的乘积除以这个叠加。

解决过低引起的错误(八度错误)的方法是加一个阈值。找到低于阈值的个数一共多少个。

通过抛物线插值取得基音周期。

频率/基音周期=基频

0 0
原创粉丝点击