我试图用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)))
如文件中所述:
但除了index(lag)= 0之外,我找不到任何0值索引。
并且该文件表示他们确实对正常化做了累积意义。
答案 0 :(得分:1)
通常情况下,忽略AMDF结果时滞后或接近零,并寻找具有小但通常非零差异的非零AMDF滞后。选择哪个非零AMDF称为八度音程问题,可能涉及加权差函数。