我正在开发的OSX和iOS VoIP应用和将要使用AudioQueue的音频流,有什么想知道的是,在默认情况下不支持AudioQueue声学回声消除还是我们需要添加对它的支持,
如果我们需要实现,我相信一些开源库必须要像Speex的实现是否有任何可用的实例显示集成AudioQueue与Speex语音或任何其他库
Answer 1:
至于我能找到,你必须使用音频单元访问系统的回声消除。 你这样做,通过使用kAudioUnitSubType_VoiceProcessingIO
代替kAudioUnitSubType_RemoteIO
。
你可能仍要使用音频单元,以控制您的等待时间。
您可以使用呈现回调函数从音频队列中获取数据,并把它传递给你的I / O单元。 对于传出,使用AudioUnitRender
。
Answer 2:
由于大卫和这个职位 ,我已经意识到所需的回音消除iOS上的以下变化:
desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO
这将根据启用硬件回声抑制苹果的文档 。 但是,你仍然需要使用语音串流描述特定的标志:
audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;
文章来源: AEC ( Echo Cancellation Support ) in OSX Using AudioQueue