【问题标题】:Easy and straight-forward FFT of MP3 fileMP3 文件的简单直接的 FFT
【发布时间】:2013-02-17 14:32:04
【问题描述】:

我有一个 MP3 文件,需要不断检测并显示这个正在播放的 MP3 文件的 Hz 值。一些谷歌搜索表明我有 2 个机会:使用 FFT 或使用 Apple Accelerate 框架。不幸的是,我还没有找到任何易于使用的样本。所有样本,如 AurioTouch 等,都需要大量代码来获取样本缓冲区的简单数字。 iOS 的音高检测有什么简单的例子吗?

例如,我找到了https://github.com/clindsey/pkmFFT,但它缺少一些其作者已删除的文件。有这样的工作吗?

【问题讨论】:

  • 音高检测/估计不是一个简单直接的问题。

标签: iphone ios objective-c audio fft


【解决方案1】:

恐怕不会。处理声音通常很困难,Core Audio 也不例外。现在谈谈手头的事情。

FFT 是一种将输入从时域转换到频域的算法。不一定与声音处理有关,您也可以将其用于声音以外的其他事情。

Accelerate 是 Apple 提供的框架,除其他外,它还提供 FFT 实现。因此,您实际上没有两种选择,只有一种及其实现。

现在,取决于您想要做什么(例如,如果您更喜欢速度而不是准确性、稳健性而不是简单等)以及您拥有的波形类型(简单、复杂、人类语音、音乐),FFT 可能还不够它自己的,甚至不是您任务的正确选择。还有其他选项,自相关、过零、倒谱分析、最大似然等等。但没有一个是微不足道的,除了过零,它也会给你带来最差的结果,并且无法处理复杂的波形。

【讨论】:

【解决方案2】:

这是一个很好的起点:

http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

还有其他关于 SO 的问题。

但是,正如其他答案所表明的那样,这不是可以“神奇地”完成的事情。即使您从某人那里获得代码许可(例如,iZotope 和 z-plane 都为您想做的事情提供了出色的代码),您仍然需要了解如何将数据导入和导出他们的库。

【讨论】:

    【解决方案3】:

    如果您需要快速音高检测,请使用http://www.schmittmachine.com/dywapitchtrack.html

    你会在里面找到一个 IOS 示例代码。

    如果您需要 FFT,您应该使用 Apple Accelerate 框架。

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 2013-12-28
      • 2017-09-06
      • 2020-03-12
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多