iPhone检测声音并录制它

时间:2012-01-22 11:21:32

标签: iphone objective-c audio detect

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

有很多可以指导您的Apple CoreAudio示例。 WWDC 2010和2010年的CoreAudio会议也是必看的。

答案 1 :(得分:0)

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

您需要启动录制API以检测任何声音,但您无需将录制回调中的所有内容保存到文件中。