我正在使用AVAudioRecorder从iPhone的麦克风录制音频,但我想丢弃静音期:当检测到声音时开始录制,下一个静默时停止录制。
不知道如何实现
有什么建议吗?
谢谢!
我正在使用AVAudioRecorder从iPhone的麦克风录制音频,但我想丢弃静音期:当检测到声音时开始录制,下一个静默时停止录制。
不知道如何实现
有什么建议吗?
谢谢!
或许您可以利用AVAudioRecorder对音频水平计量的支持来跟踪音频水平,并在音频水平高于给定阈值时启用录制。您需要使用以下命令启用计量:
[anAVAudioRecorder setMeteringEnabled:YES];
然后你可以定期调用:
[anAVAudioRecorder updateMeters];
power = [anAVAudioRecorder averagePowerForChannel:0];
if (power > threshold && anAVAudioRecorder.recording==NO) {
[anAVAudioRecorder record];
} else if (power < threshold && anAVAudioRecorder.recording==YES) {
[anAVAudioRecorder stop];
}
或者类似于此。
我已经找到一种基于音频队列服务的方法。虽然它更加复杂,但也更有趣,因为您可以定义传入音频数据的队列缓冲区。
您需要定义当缓冲区满时的回调函数,这样您就可以处理缓冲区中的音频数据包,以便按照您的需求进行处理,就像我的情况一样,用于检测静默和其他一些东西。
稍后,我会发布解决方案。如果有人急需帮助,可以给我发电子邮件,我很乐意提供帮助。
在此处查看SpeakHere示例:http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html