8

我正在 OSX 和 iOS 上开发 VOIP 应用程序,并将使用 AudioQueue 进行音频流,想知道的是,默认情况下,AudioQueue 是否支持声学回声消除,或者我们是否需要添加对它的支持,
如果我们需要实现,我相信必须像 Speex 那样实现一些开源库 是否有任何可用示例显示 AudioQueue 与 Speex 或任何其他库的集成

4

2 回答 2

21

据我所知,您必须使用音频单元来访问系统的回声消除。您可以通过使用kAudioUnitSubType_VoiceProcessingIO而不是 kAudioUnitSubType_RemoteIO.

无论如何,您可能都想使用音频单元,以控制您的延迟。

您可以使用渲染回调函数从音频队列中获取数据并将其传递给您的 I/O 单元。对于传出,使用AudioUnitRender.

于 2013-03-18T08:52:24.820 回答
-1

感谢David这篇文章,我意识到 iOS 上的回声消除需要进行以下更改:

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO

这将根据苹果文档启用硬件回声抑制。但是,您仍然需要为 AudioStream 描述使用特定的标志:

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;
于 2015-04-26T14:17:53.907 回答