我只是进行音高检测。将输入(麦克风)数据传递给fft例程,然后寻找具有最大值的音高。这意味着:
Max(pow(data[i].getRe(), 2) + pow(data[i].getIm(), 2)) for 0<= i < SAmplesSize
我需要它来检测吉他弦的主频。它适用于440赫兹(也许更高,我没有检查)到250赫兹的频率范围内。在此值以下,检测到的频率是应有频率的两倍,例如195赫兹的检测频率约为380赫兹。看起来它在250赫兹以下检测到了更高的谐波。对于纯195赫兹的音调,它可以完美检测,但对于吉他弦似乎有些问题。
有什么建议可以导致这种情况吗?或者我应该使用更复杂的音高检测方法?
附:采样率:8000赫兹,输入数据大小:1024