我在语音聊天应用程序中使用RemoteIO。为了启用回声消除,在将“kAudioSessionCategory_PlayAndRecord”设置为会话类型后,我将“kAudioUnitSubType_RemoteIO”更改为“kAudioUnitSubType_VoiceProcessingIO”。现在回声消除工作,但输出音量水平相对于之前的RemoteIO输出水平显着下降。有没有人知道如何在使用VoiceProcessingIO时获得与使用RemoteIO时相同的输出音量?
答案 0 :(得分:4)
我意识到这在很长一段时间内都没有得到解答,但我发现如果您在更改音频单元之间执行以下操作:
AudioComponentInstanceDispose(_ioUnit);
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:&nsError];
[[AVAudioSession sharedInstance] setActive:NO error:&nsError];
然后似乎不会在每个单元之间产生如此巨大的响度问题。此时,只需重新初始化您的音频设备并将会话类型设置为您需要的。
答案 1 :(得分:2)
我认为没有可能考虑到产量的损失。根据{{3}}
“没有API可以控制此增益(或者在您的情况下是丢弃)级别,一切都是 由OS根据音频会话类别进行内部设置(for 示例VPIO预计将与PlayAndRecord一起使用)和 已经设置了哪个IO单元。“
如果您说出要测试的iOS,因为它们的输出量会有不同的下降,这也会有所帮助。