【问题标题】:FFT Pitch Detection for iOS using Accelerate Framework?使用 Accelerate Framework 的 iOS 的 FFT 音高检测?
【发布时间】:2012-05-09 20:57:48
【问题描述】:

我已经阅读 FFT 和音高检测有一段时间了,但我无法将它们拼凑在一起。

我发现 Accelerate 框架可能是最好的方法,我已经阅读了来自苹果的示例代码以了解如何将其用于 FFT。如果我想实时运行音高检测,FFT 的输入数据是什么?我只是从麦克风传入音频流吗?我该怎么做?

另外,在我得到 FFT 输出之后,我怎样才能从中得到频率?我一直在到处阅读,但找不到任何示例或解释?

感谢您的帮助。

【问题讨论】:

标签: objective-c ios signal-processing fft accelerate-framework


【解决方案1】:

频率和音高不是一回事——频率是一个物理量,音高是一种心理感知——它们是相似的,但有重要的区别,这对你来说可能很重要,也可能无关紧要,具体取决于乐器的类型您正在尝试测量音高。

您需要稍微了解一下各种音高检测算法(以及音高本身的含义),决定要使用哪种算法,然后然后开始着手实施它。有关pitch 和音高检测的详细概述,请参阅this Wikipedia page(请注意,您可以将 FFT 用于基于自相关和频域的方法)。

关于使用 FFT 识别频谱中的峰值及其相关频率,SO 上已经有很多与此相关的问题和答案,例如:How do I obtain the frequencies of each value in an FFT?

【讨论】:

    【解决方案2】:

    我有一个适用于 ios 5.1 的在线自相关函数的示例实现。查看this post 的实现链接以及如何找到最近的音符以及如何创建表示音高的字符串(A、A#、B、B# 等)的函数

    虽然 FFT 在许多应用中都非常有用,但如果您尝试进行简单的音高检测,它可能不是最准确的。 (它可以一样准确,但您必须处理复数才能进行大量相位计算)

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2011-01-15
      • 2011-05-28
      • 2010-11-30
      • 2023-03-19
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多