我正在使用AudioUnit访问RemoteIO以获得高性能音频。我的应用程序解码嵌入在从麦克风接收的音频中的信号。为了准确,我需要保持音频过滤和把操作降到最低限度。我这样做是为了音频会议:
UInt32 mode = kAudioSessionMode_Measurement;
Float32 zeroF = 0;
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_Mode, sizeof(mode), &mode);
AudioSessionSetProperty(kAudioSessionProperty_InputGainScalar, sizeof(zeroF), &zeroF);
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
这是音频单元:
UInt32 one = 1;
UInt32 zero = 0;
AudioUnitSetProperty(rioUnit, kAUVoiceIOProperty_BypassVoiceProcessing, kAudioUnitScope_Input, 0, &one, sizeof(one));
AudioUnitSetProperty(rioUnit, kAUVoiceIOProperty_VoiceProcessingEnableAGC, kAudioUnitScope_Input, 0, &zero, sizeof(zero));
AudioUnitSetProperty(rioUnit, kAUVoiceIOProperty_DuckNonVoiceAudio, kAudioUnitScope_Input, 0, &zero, sizeof(zero));
这似乎有效,尽管肯定还会有一些增益修正。
我的问题是当用户按下主页按钮离开应用程序,然后点击应用程序图标返回到该应用程序。关于音频的一些变化,似乎iOS正在启用噪声抑制和增益控制。这是音频的频谱图 - 注意整个音频频谱中功率的巨大下降,在图表的中间。这是我离开应用程序然后重新打开它。
我觉得我已经尝试了所有东西 - 停止&重启音频单元,停止和重新启动音频会话...似乎没有任何帮助。会喜欢任何尝试的提示。