【问题标题】:iPhone Detect sound and Record itiPhone 检测声音并录制
【发布时间】:2012-01-22 11:21:31
【问题描述】:

所以我正在制作一个应用程序,我需要做的是,例如当有人开始说话时,我需要检测到有声音然后记录下来。
我找到了本教程http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/,但它从一开始就开始录音,然后根据录音检测声音。
有没有其他方法可以在不先实际启动录音机的情况下检测声音?我想到的是有两台录音机,一台用于检测,一台用于实际录制声音。另一种解决方案是在录制后编辑(修剪)声音。
这些方法是标准的还是有更好的方法来检测声音?
谢谢。

编辑:如果有人读过这个,我也发现了这个http://bonkel.wordpress.com/2010/03/03/frequency-detection-using-fourier-transform/

【问题讨论】:

    标签: iphone objective-c audio detect


    【解决方案1】:

    如果您不介意有点脏,您可以降低到较低级别,到 CoreAudio,并从输入缓冲区中读取数据,直到您看到超过阈值的值,然后开始记录这些输入缓冲区,或者触发高级别录音通话。同样,您也可以在一段时间的静音后停止录制。

    如果您使用 CoreAudio,您可以对录制的内容进行大量控制。您可以非常轻松地过滤掉背景噪音,或添加哔声以表示录制因静音而停止,甚至添加标记以供稍后使用以匹配录制时间。

    CoreAudio 确实需要您做更多的工作。您必须及时读取麦克风缓冲区,并快速保存或丢弃数据,以免丢失任何声音数据。这并不难,因为这些设备有足够的 CPU 能力来同时完成这项工作和其他任务 - 你只需要很好地掌握 CoreAudio。

    有很多 Apple CoreAudio 示例可以为您提供指导。 WWDC 2010 和 2010 CoreAudio 会议也是不容错过的。

    【讨论】:

    【解决方案2】:

    您可以使用 Audio Queue 或 Core Audio (RemoteIO Audio Unit) API。除非您的应用需要低延迟,否则音频队列 API 可能更易于使用。

    您需要启动录音 API 来检测任何声音,但您不需要将从录音回调中获得的所有内容保存到文件中。

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2013-08-26
      相关资源
      最近更新 更多