【问题标题】:AEC ( Echo Cancellation Support ) in OSX Using AudioQueueOSX 中使用 AudioQueue 的 AEC(回声消除支持)
【发布时间】:2013-03-18 06:39:45
【问题描述】:

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

【问题讨论】:

  • 你能解决你的问题吗?我也有同样的问题。

标签: objective-c macos cocoa audioqueue echo-cancellation


【解决方案1】:

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

您可能还是想使用音频单元,以控制您的延迟。

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

【讨论】:

【解决方案2】:

感谢DavidThis post,我意识到iOS 上的回声消除需要进行以下更改:

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO

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

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多