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