我正在尝试分析 iOS 平台上的频率检测算法。所以我找到了几个使用 FFT 和 CoreAudio 的实现(example 1 和 example 2)。但是在这两种情况下都存在频率上的一些不精确:
- (1) 对于 A4 (440Hz),显示 441.430664 Hz。
- (1) 对于 C6 (1046.5 Hz),显示 1518.09082 Hz。
- (2) 对于 A4 (440Hz) 显示 440.72 Hz。
- (2) 对于 C6 (1046.5 Hz) 显示 1042.396606 Hz。
为什么会发生这种情况,如何避免这种问题并以更准确的方式检测频率?
最佳答案
频域中的分辨率与 FFT bin 的数量成反比。您需要:
- 增加 FFT 的大小以获得更精细的分辨率
- 使用相邻 bin 的大小来调整频率估计
- 使用替代方法进行频率估计而不是 FFT,例如参数模型
关于ios - 无法在 iphone 上获得正确的频率值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9477535/