AEC (поддержка эхоподавления) в OSX с использованием AudioQueue

Я разрабатываю приложение VOIP для OSX и iOS и буду использовать AudioQueue для аудиопотока. Я хочу знать, поддерживает ли AudioQueue по умолчанию подавление акустического эха или нам нужно добавить поддержку для него,
Если нам нужно реализовать , я считаю, что должна быть реализована какая-то библиотека с открытым исходным кодом, такая как Speex. Есть ли какой-либо доступный пример, показывающий интеграцию AudioQueue со Speex или любой другой библиотекой?


person Amitg2k12    schedule 18.03.2013    source источник
comment
Вы смогли решить свою проблему? У меня тот же вопрос.   -  person Vincenzo    schedule 28.01.2017


Ответы (2)


Насколько я понимаю, для доступа к системе эхоподавления необходимо использовать Audio Units. Для этого используйте kAudioUnitSubType_VoiceProcessingIO вместо kAudioUnitSubType_RemoteIO.

Вы, вероятно, все равно захотите использовать Audio Units, чтобы контролировать задержку.

Вы можете использовать функцию обратного вызова рендеринга, чтобы получить данные из очереди аудио и передать их на ваш модуль ввода-вывода. Для исходящих используйте AudioUnitRender.

person David M.    schedule 18.03.2013
comment
Блок ввода-вывода для обработки голоса доступен в версии 10.7 или более поздней: developer.apple.com/library/mac/#documentation/AudioUnit/ - person David M.; 20.03.2013
comment
я использую последнюю версию OSX Sdk и установил VoiceProcessingIO, но Echo все еще идет, любые решения - person Amitg2k12; 01.10.2015

Спасибо Дэвиду и В этом посте я понял, что для эхоподавления на iOS требуются следующие изменения:

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO

Это включит аппаратное подавление эха в соответствии с документацией Apple. . Однако вам все равно нужно использовать определенные флаги для описания AudioStream:

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;
person Roozbeh Zabihollahi    schedule 26.04.2015