每当我使用 VoiceChat 模式时,我自己的应用程序中的音频都太低了,所以作为一个白痴检查,我下载了 Apple 的音频单元编程示例代码 (SpeakHere) 并将 VoiceChat 模式添加到该应用程序。事实证明,问题也在那里发生:在该模式下运行会导致所有内容都达到所需音量的 20% 左右。
在设置 PlayAndRecord 类别之后,我在 SpeakHereController.mm 的第 267 行添加了这段代码:
// set mode -- this results in audio being too soft
UInt32 mode = kAudioSessionMode_VoiceChat;
error = AudioSessionSetProperty(kAudioSessionProperty_Mode, sizeof(mode), &mode);
if (error) printf("couldn't set audio session mode!");
我正在使用带有 RemoteIO 的 VoiceChat 模式,以便为免提电话使用回声消除;VoiceProcessingIO 可以工作(有点),但旧 iPhone (3GS) 的性能太差了,无法使用——这就是我改用 RemoteIO 的原因。我已确认扬声器路线是正确的。我什至尝试过设置测量模式并手动增加增益——我无法检测到任何改进。
关于在使用 AudioSession 模式时防止大音量下降的任何建议?