iphone - 简单直接的 MP3 文件 FFT

标签 iphone ios objective-c audio fft

我有一个 MP3 文件,需要不断检测并显示这个正在播放的 MP3 文件的 Hz 值。谷歌搜索显示我有 2 个机会:使用 FFT 或使用 Apple Accelerate 框架。不幸的是,我还没有找到任何易于使用的示例。所有样本,如 AurioTouch 等,都需要大量代码才能获得样本缓冲区的简单编号。有没有针对 iOS 的音调检测的简单示例?

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

最佳答案

恐怕不行。处理声音通常很困难,Core Audio 也不异常(exception)。现在开始手头的事情。

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

Accelerate 是 Apple 提供的框架,除其他外,它还提供 FFT 实现。所以,你实际上没有两个选择,只有一个和它的实现。

现在,根据你想做什么(例如,如果你喜欢速度而不是准确性,鲁棒性而不是简单性等)和你拥有的波形类型(简单,复杂,人类语音,音乐),FFT 可能不够它自己或什至不是您任务的正确选择。还有其他选项,自相关,零交叉,倒谱分析,最大似然提一些。但没有一个是微不足道的,除了过零,它也会给你最差的结果,并且无法处理复杂的波形。

关于iphone - 简单直接的 MP3 文件 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922146/

相关文章:

ios - "Use of undeclared identifier ' Braintree '"在不使用 CocoaPods 的情况下手动集成 Braintree 后出现错误

iphone - 我在这个日期格式化程序中做错了什么

objective-c - 在Objective-C中替换字符串中的一个字符

ios - UITableViewCell - 不要删除和回收

objective-c - 如何在不子类化的情况下将成员变量和方法添加到内置类中

iphone - didFinishPickingMediaWithInfo中的应用程序崩溃

iphone - 如何验证实体的 NSMutableArray 包含具有特定属性的对象

iphone - 检查互联网连接

ios - 是否可以将应用程序添加到 native 共享对话框?

iphone - ARC 下紧密循环中 UIKit 的内存管理