【问题标题】:iPhone app audio recording only in above certain frequencyiPhone应用程序仅在特定频率以上录音
【发布时间】:2012-05-31 00:14:19
【问题描述】:

我目前正在为 iPhone 和 iPad 开发一个基于录音的应用程序。在这里,我自己完成了基本的音频录制功能,但我不知道如何录制高于特定频率的音频,比如高于 17,000 Hz。那么,任何人都可以帮助我实现这一目标吗?这真的对我的职业生涯有很大帮助。

【问题讨论】:

  • 仅在该频率以上记录或通过过滤器以仅在该频率以上选择
  • 嗯,您必须通过某种数字滤波器运行数字化声音以滤除较低频率。但请注意,17KHz 是一个相当高的频率。最高的常见音频采样率(以及 iPhone 上可能的限制)是 44100,这意味着它可以处理的最高频率是 22.05KHz。

标签: iphone ios audio voice frequency


【解决方案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 用于所述滤波器系数生成页面

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多