我已经阅读 FFT 和音高检测有一段时间了,但我很难将它们拼凑在一起。
我发现 Accelerate 框架可能是实现此目的的最佳方法,并且我阅读了 Apple 的示例代码,了解如何将其用于 FFT。如果我想实时运行音调检测,FFT 的输入数据是什么?我是否只传递来自麦克风的音频流?我该怎么做?
另外,在获得 FFT 输出后,如何从中获得频率?我到处阅读,找不到任何例子或解释?
谢谢你的帮助。
频率和音高不是一回事 - 频率是一个物理量,音高是一种心理感知 - 它们很相似,但有重要的区别,这对您来说可能重要也可能不重要,具体取决于您所使用的乐器类型尝试测量音高。
您需要阅读一些有关各种音高检测算法(以及音高本身的含义)的知识,决定要使用哪种算法,并且只使用then着手实施它。看这个维基百科页面 https://en.wikipedia.org/wiki/Pitch_detection以便更好地了解pitch https://en.wikipedia.org/wiki/Pitch_%28music%29和基音检测(请注意,您可以使用 FFT 进行基于自相关的方法和频域方法)。
至于使用 FFT 来识别频谱中的峰值及其相关频率,SO 上已经有许多与此相关的问题和答案,例如:如何获取 FFT 中每个值的频率? https://stackoverflow.com/questions/4364823/how-to-get-frequency-from-fft-result/4371627#4371627
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)