在iOS的WebRTC中测量麦克风级别

我有一个WebRTC iOS应用程序。 那里有AVAudioSessionRTCAudioSource 。 我需要检测麦克风何时开始接收响亮的声音(就像一个人开始说话的时候),类似于使用AudioContext在浏览器中做的事情。 我如何检测它或获取类似于可以像AVCaptureAudioChannelAVCaptureAudioDataOutput一样测量的stream?

使用AVAudioSession请求权限录制audio后,我会build议使用AVAudioRecorder。 这是一个相当简单的课,如下所示:

  • 创build一个AVAudioRecorder的实例
  • 调用实例上的prepareToRecord方法
  • 使用meteringEnabled方法启用声音测量function

启用录制后,您可以使用方法averagePowerForChannel:访问录制音量测量

您可能想阅读苹果的文档

~~~~~~~~~~~~~~~~~~~~~~~请NOTE ~~~~~~~~~~~~~~~~~~ NOTE ~~~~~~~~~~~~~

我不熟悉WebRTC框架/function,但AVAudioRecorder类将为您提供在录制过程中测量audioinput的function。

~~~~~~~~~~~~~~~~~~~~~~ SAMPLE ~~~~~~~~~~~~~~~~~~~~~~

我已经包含了一个我以前用过的GitHub 示例项目 。 它设置为使用我所描述的AVAudioRecorder类来检测audio的灵敏度。