在Apple的SpeakHere示例中设置kAudioSessionMode会导致音量大幅下降。任何解决方法?

时间:2012-11-21 21:25:38

标签: ios avaudiosession

在我使用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模式时防止大音量下降的任何建议吗?

1 个答案:

答案 0 :(得分:1)

事实证明,当VoiceChat模式设置为确定增益,回声消除等的最佳设置时,会使用/ current / audio路径。这意味着如果您要设置特定路线,则需要在设置模式之前执行此操作 - 而不是之后。

按此顺序执行此操作可以解决我的音量问题:

  • 设置PlayAndRecord
  • 设置发言人的路线
  • 设置模式
  • 在我的音频设备中使用VoiceProcessingIO
  • 保持硬件采样率低(8k),以便在3GS等旧设备上保持良好的性能