所以这里是“开创性”的YIN论文:
以及新的改进的概率 YIN:
现在,我已经对YIN中唯一的新想法不以为然,那就是这种“累积平均归一化差分函数”(CMNDF),它的唯一目的似乎是避免选择“平均平方差函数”(ASDF),总是以零滞后存在。大迪尔。还有其他更好的方法可以避免这种明显的错误。
我试图用这个pYIN 弄清楚的是音高跟踪和音高候选评估模型。我了解马尔可夫过程,我想我了解隐马尔可夫模型 (HMM) 是什么。而且我相信他们正试图将前一帧的音高候选连接到当前帧的音高候选。我已经用我的音高检测器做到了这一点(但没有那么多使用 HMM)。我们这样做是为了避免由八度音阶错误引起的故障和哔哔声当次谐波的存在导致周期看起来是所需周期的两倍时,或者弱奇次谐波导致周期看起来是所需周期的一半。我对这个问题非常熟悉,并且用我自己的愚蠢技术解决了这个问题,这种技术似乎工作得很好,很简单,并且对我们想知道其周期的准周期信号模型做很少的假设。
我还没有从 pYIN 论文中探究如何在当前帧中选择有限(希望很小)数量的音高候选,以及它们如何与前一帧的音高候选相关。
然后我想了解他们最终如何为最终决定的每个投球候选人打分。
在我的音高检测器中,我使用直接从 ASDF 函数计算的自相关变体,并且自校正的最大值始终对应于 ASDF 的最小值。如果您保证音高检测器的输入是无直流的,那么避免零滞后的峰值是微不足道的,但是对于超过一个非常粗略的阈值的每个峰值,我只会稍微限制较大滞后的峰值,这样我就不会虚假地选择滞后两个时期仅仅是因为它看起来比一个时期的滞后稍好。
在我的 SE 答案中没有显示我认为候选的每个峰是音高候选(这些是超过总阈值的峰),如何使用抛物线确定峰的确切位置(到分数样本精度)和高度插值,如果该峰值是五个最高峰之一,我将其称为“音高候选”,并将该候选与前一帧中最接近当前候选对数频率(即音高)的候选相关联。然后对每个当前候选者进行评分,这是当前峰值高度和前一帧的启发式函数,假设当前峰值与前一帧相关。对于“粘性”,无论候选者在前一帧中获胜,如果当前帧中有一个候选者与前一帧获胜者相关联,则该候选者得分会得到额外提升。稍微优先考虑我之前选择的候选人。
但是,Mauch 和 Dixon 在做什么呢?如果有一些代码概述了这一点,我会感兴趣的。我想放弃 YIN 的东西,但考虑他们的候选人评分方法。但我无法从论文中解码它。