Я использую RemoteIO в приложении для голосового чата. Чтобы включить эхоподавление, я изменил "kAudioUnitSubType_RemoteIO" на "kAudioUnitSubType_VoiceProcessingIO" после установки "kAudioSessionCategory_PlayAndRecord" в качестве типа сеанса. В настоящее время работа по эхоподавлению работает, но уровень выходного уровня значительно снизился по сравнению с предыдущим уровнем вывода RemoteIO. Кто-нибудь знает, как получить тот же уровень громкости при использовании VoiceProcessingIO, как при использовании RemoteIO?
Использование подтипа аудиоустройства VoiceProcessingIO вместо RemoteIO вызывает нежелательное падение объема вывода
Ответ 1
Я понимаю, что на это не ответили в течение длительного времени, но я обнаружил, что если вы меняете следующие звуковые единицы:
AudioComponentInstanceDispose(_ioUnit);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&nsError];
[[AVAudioSession sharedInstance] setActive:NO error:&nsError];
Тогда, похоже, не создается такая огромная проблема громкости между каждым блоком. На этом этапе просто повторите инициализацию своего аудиоустройства и установите тип сеанса так, как вам нужно.
Ответ 2
Я не думаю, что можно учесть потерю выхода в объеме. Согласно Переключение громкости записи между RemoteIO и VPIO
"Нет API, который контролирует уровень усиления (или в вашем случае), все внутренняя настройка ОС в зависимости от категории аудиосеансов (для например, VPIO, как ожидается, будет использоваться с PlayAndRecord всегда) и какой модуль ввода-вывода настроен".
Это также помогло бы, если бы вы сказали, на что iOS вы тестировали, потому что у них разные капли объема вывода.