【发布时间】:2011-10-11 15:18:15
【问题描述】:
我最近一直在考虑将自相关用于音高检测。然而,我发现很难找到学习自相关的好资源,我的意思是让逐步理解自相关变得容易的资源。
我还不是一个很好的程序员,对公式也不是很了解,所以我发现的资源真的很难理解。
基本上,我现在知道的是自相关的概念就像信号的比较和对比方法?但如果我能对自相关算法有更多的了解,我将不胜感激。
非常感谢!
更新:这是我从网站获得的示例代码。也许您可以将其用作参考。我已经测试了这段代码,它确实正确地返回了正确的音高(尽管这里和那里有一些不正确的)
maxOffset = sampleRate / minFreq;
minOffset = sampleRate / maxFreq;
for (int lag = maxOffset; lag >= minOffset; lag--)
{
float corr = 0; // this is calculated as the sum of squares
for (int i = 0; i < framesize; i++)
{
int oldIndex = i - lag;
float sample = ((oldIndex < 0) ? prevBuffer[frames + oldIndex] : buffer[oldIndex]);
corr += (sample * buffer[i]);
}
if (corr > maxCorr)
{
maxCorr = corr;
maxLag = lag;
}
}
return sampleRate / maxLag;
【问题讨论】:
-
自相关不是音高检测的最佳方法 - 您确定在您开始了解它的细节之前您想使用它吗?
-
是的,因为我读过,尽管它不是最好的方法,但它是除 FFT 之外的简单方法之一。而且我不想深入研究 FFT,因为它看起来更复杂。
标签: algorithm signal-processing correlation