我已经研究了 FFT 和 Pitch Detection 有一段时间了,但我无法将它们拼凑在一起。
我发现 Accelerate 框架可能是处理此问题的最佳方式,并且我已阅读 apple 的示例代码以了解如何将其用于 FFT。如果我想实时运行音调检测,FFT 的输入数据是什么?我只是从麦克风传入音频流吗?我该怎么做?
此外,在获得 FFT 输出后,如何从中获得频率?我一直在到处阅读,找不到任何例子或解释?
感谢您的帮助。
最佳答案
频率和音高不是一回事 - 频率是一个物理量,音高是一种心理感知 - 它们很相似,但有重要的区别,这对你来说可能重要也可能不重要,具体取决于乐器的类型您正在尝试测量音高。
您需要稍微阅读一下各种音高检测算法(以及音高本身的含义),决定要使用的算法,然后然后着手实现它。参见 this Wikipedia page了解 pitch和音调检测(请注意,您可以将 FFT 用于基于自相关和频域的方法)。
至于使用 FFT 识别频谱中的峰值及其相关频率,SO 上已经有许多与此相关的问题和答案,例如:How do I obtain the frequencies of each value in an FFT?
关于objective-c - 使用 Accelerate Framework 的 iOS 的 FFT 音调检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378953/