Answers:
FFT实际上并不是制作调谐器的好方法。FFT本质上具有有限的频率分辨率,要在不使时间窗口过长的情况下检测很小的频率变化并不容易,这会使它变得笨拙且缓慢。
更好的解决方案可以基于锁相环,延迟锁环,自动相关,过零检测和跟踪,最大或最小检测和跟踪以及这些方法的智能组合。
预处理总是有帮助的。
FFT报告频谱频率的一个或多个峰值(由FFT仓大小量化),这不同于音高。FFT频谱中可能会完全丢失感知的音调频率。
一些最简单的吉他调音器仅使用低通或带通滤波,并测量过零之间的时间。倒数给出频率估计。
自相关是另一种常见的音高估计方法。滑动相关性或其他自相似性度量有很多变化,例如滑动ASDF(平方差),AMDF(均值差),非线性模式匹配器,仅针对有限范围的滞后进行自适应检查,滞后插值,开窗和自适应窗口选择,各种加权或使用决策理论在多个潜在的滞后历史序列之间进行选择等。大多数自相似性度量的一个问题是选择适当的八度,因为一个八度可能显示出几乎相同的相似性。
其他可能性包括使用PLL,滤波的正交解调器,滤波的希尔伯特变换等。
但是请注意,某些DSP滤波和解调方法在计算上几乎等同于对窗口DFT进行1进制处理,这可能适合也可能不适合您的问题。
还可以看一下相对较新的算法定义的希尔伯特-黄变换(HHT)。它可以处理可能与您的应用有关的非平稳非线性信号。
实际上,您可以使用伪频谱来计算信号的频率,该伪频谱查看其自相关矩阵的特征向量。它基本上将您的信号分解为噪声和信号子空间。从那里,您可以找到其频谱。(您也可以限制它,并给它提供检查频率的范围)。它也很抗噪音。当然,这是一种参数化方法,而不是像DFT这样的非参数化方法。
这一切都取决于要在哪个平台上进行处理,如果需要简单的电路,我建议使用增益爆破信号并将其转换为方波,并使用计时器使用微控制器测量周期。
但是,如果您想看一下信号处理,请查看MUSIC方法:
http://en.wikipedia.org/wiki/Multiple_signal_classification
希望能帮助到你
存在许多不使用DFT / FFT的音高估计方法,本文列出了其中的一些方法,包括MUSIC方法:https : //ieeexplore.ieee.org/abstract/document/6521410/本文 的仿真结果表明当基频非常低时,精确的NLS方法优于其他方法。