用于查找基频的yin算法

时间:2016-04-20 05:34:44

标签: python algorithm audio signal-processing

我试图用python中的YIN算法找到基频。

我在this document的第2步。

我需要从这段代码中找到0值的索引:

def auto(t, lag, samples):
    total_index = len(samples)
    zero_padded = np.append(samples, np.zeros(total_index))

    r = 0
    for j in range(t+1, t+total_index):
        r += zero_padded[j] * zero_padded[j+lag]

    return r

diff = []
rt0 = auto(0, 0, samples)
for lag in range(0, 2700):
    diff.append(rt0 + auto(lag, 0, samples) - (2*auto(0, lag, samples)))

如文件中所述:

enter image description here

enter image description here

但除了index(lag)= 0之外,我找不到任何0值索引。

enter image description here

  1. 应该修复哪些代码?
  2. 并且该文件表示他们确实对正常化做了累积意义。

    1. 什么是累积平均正常化?

1 个答案:

答案 0 :(得分:1)

通常情况下,忽略AMDF结果时滞后或接近零,并寻找具有小但通常非零差异的非零AMDF滞后。选择哪个非零AMDF称为八度音程问题,可能涉及加权差函数。