2013-03-18 131 views
6

我正在OSX和iOS上開發VOIP應用程序,並且將使用AudioQueue進行音頻流,但想知道的是,默認情況下AudioQueue支持聲學回聲消除,還是我們需要添加支持它,
如果我們需要實現,我相信一些開源庫必須要像Speex的實現是否有任何實例可用的節目集成AudioQueue與Speex語音或任何其他庫使用AudioQueue的OSX中的AEC(回聲消除支持)

+1

您能解決您的問題嗎?我有同樣的問題。 – Vincenzo 2017-01-28 00:24:29

回答

13

至於我能找到,您必須使用音頻單元來訪問系統的回聲消除。你通過使用kAudioUnitSubType_VoiceProcessingIO而不是kAudioUnitSubType_RemoteIO

無論如何,您可能都想使用音頻單元,以控制您的延遲。

您可以使用渲染回調函數從音頻隊列獲取數據並將其傳遞到您的I/O單元。對於傳出,請使用AudioUnitRender

+0

感謝大衛,但我在OSX上不在iOS會工作嗎? – Amitg2k12 2013-03-19 11:28:37

+1

語音處理IO單元在10.7或更高版本上可用:https://developer.apple.com/library/mac/#documentation/AudioUnit/Reference/AUComponentServicesReference/Reference/reference.html#//apple_ref/doc/uid/ TP40007291 – 2013-03-19 20:43:36

+0

我在最新的OSX Sdk上設置了VoiceProcessingIO,但仍然Echo即將到來,任何解決方案 – Amitg2k12 2015-10-01 12:25:45

-1

感謝DavidThis post,我已經意識到,需要以下更改的回聲消除在iOS上:

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO 

這將根據apple documentation啓用硬件回聲抑制。但是,您仍然需要使用AudioStream說明的特定標誌:

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;