使用VoiceProcessingIO音频单元子类型而不是RemoteIO会导致不必要的输出音量下降

时间:2013-07-08 13:36:12

标签: ios core-audio audiounit avaudiosession remoteio

我在语音聊天应用程序中使用RemoteIO。为了启用回声消除,在将“kAudioSessionCategory_PlayAndRecord”设置为会话类型后,我将“kAudioUnitSubType_RemoteIO”更改为“kAudioUnitSubType_VoiceProcessingIO”。现在回声消除工作,但输出音量水平相对于之前的RemoteIO输出水平显着下降。有没有人知道如何在使用VoiceProcessingIO时获得与使用RemoteIO时相同的输出音量?

2 个答案:

答案 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,因为它们的输出量会有不同的下降,这也会有所帮助。