我有一个MP3文件,需要不断检测并显示此播放MP3文件的Hz值。一些谷歌搜索显示我有2个机会:使用FFT或使用Apple Accelerate框架。不幸的是,我没有找到任何易于使用的样本。所有样本,如AurioTouch等,都需要大量代码才能获得样本缓冲区的简单数字。对于iOS的音高检测有什么简单的例子吗?
例如,我找到了https://github.com/clindsey/pkmFFT,但它遗漏了一些“作者已删除的文件”。有什么工作吗?
答案 0 :(得分:1)
我不敢。使用声音通常很难,Core Audio也不例外。现在就此事。
FFT是一种用于将输入从时域变换到频域的算法。不一定与声音处理相关联,您也可以将它用于除声音之外的其他事物。
Accelerate是Apple提供的框架,在许多其他方面提供了FFT实现。所以,你实际上没有两个选项,只有一个选项及其实现。
现在,根据你想要做的事情(例如,如果你喜欢速度超过准确性,强度超过简单性等)和你拥有的波形类型(简单,复杂,人类语音,音乐),FFT可能还不够它自己甚至不是你的任务的正确选择。还有其他选择,自相关,过零,倒谱分析,最有可能提一些。但是没有一个是微不足道的,除了过零,这也会给你最差的结果,并且无法处理复杂的波形。
答案 1 :(得分:1)
这是一个很好的起点:
http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html
还有其他问题。
然而,正如其他答案所表明的那样,这不是可以“神奇地”完成的事情。即使您从某人那里获得代码许可(例如,iZotope和z-plane都可以为您的目标做出优秀的代码),您仍然需要了解将数据导入和导出库的行为。
答案 2 :(得分:0)
如果您需要快速音高检测,请使用http://www.schmittmachine.com/dywapitchtrack.html
你会在里面找到一个IOS示例代码。
如果您需要FFT,则应使用Apple Accelerate框架。
希望这个帮助