iPhone应用程序仅在特定频率以上录音
Posted
技术标签:
【中文标题】iPhone应用程序仅在特定频率以上录音【英文标题】:iPhone app audio recording only in above certain frequency 【发布时间】:2012-05-31 00:14:19 【问题描述】:我目前正在为 iPhone 和 iPad 开发一个基于录音的应用程序。在这里,我自己完成了基本的音频录制功能,但我不知道如何录制高于特定频率的音频,比如高于 17,000 Hz。那么,任何人都可以帮助我实现这一目标吗?这真的对我的职业生涯有很大帮助。
【问题讨论】:
仅在该频率以上记录或通过过滤器以仅在该频率以上选择? 嗯,您必须通过某种数字滤波器运行数字化声音以滤除较低频率。但请注意,17KHz 是一个相当高的频率。最高的常见音频采样率(以及 iPhone 上可能的限制)是 44100,这意味着它可以处理的最高频率是 22.05KHz。 【参考方案1】:我认为你需要使用加速框架,里面有一个可以做 FFT(快速傅里叶变换)的 vDSP API。它将数据从时域转换为频域。根据 bin 大小信息,可以提取一定 bin 大小后的幅度/幅度。
我认为这可以解决您的问题。
对于 vDSP,您可以参考 Apple 网站上的aurioTouch 2。
关于 FFT 如何在那里工作,您可以参考这个问题 - Understanding FFT in aurioTouch2
希望对你有所帮助。
P.S. AurioTouch 或 AurioTouch 1 未使用 vDSP API。我记得在 ios 4 之前有一个 FFT 函数可以做类似的事情但速度较慢。所以你可能认为vDSP只有iOS4.0以后才有
【讨论】:
您看过上面的 aurio Touch 2 示例了吗?【参考方案2】:我在互联网上研究我发现了这两种墨水..
一个查找频率的库https://github.com/jkells/sc_listener
使用上述库https://github.com/jkells/sc_listener_sample的示例
我希望通过获取频率数字并设置条件,您可以实现这一目标。希望这会有所帮助...
【讨论】:
【参考方案3】:与简单的滤波器解决方案相比,使用 FFT 的计算成本高且过于复杂。除非你真的需要在频域工作,否则你应该避免它。
相反,通过高通滤波器运行您的 PCM。相关的***页面将帮助您选择合适的过滤器。如果您的最小频率限制是一个常数,this page 将为您的滤波器生成常数。否则,动态生成这些常量并不难。或者您可以将the source code 用于所述滤波器系数生成页面
【讨论】:
以上是关于iPhone应用程序仅在特定频率以上录音的主要内容,如果未能解决你的问题,请参考以下文章