配置预处理效果

Android 平台向 audiofx 软件包(可供开发者访问)中支持的设备提供音频效果。例如,Nexus 10 支持以下预处理效果:

与 AudioSources 配对

预处理效果与在其下请求预处理的使用情形模式配对。在 Android 应用的开发过程中,使用情形称为 AudioSource;且应用开发者会要求使用 AudioSource 的抽象,而不是实际的音频硬件设备。Android 音频政策管理器根据特定于产品的规则将 AudioSource 映射到指定的捕获路径配置(设备、增益、预处理等)。我们向开发者提供了以下来源:

  • android.media.MediaRecorder.AudioSource.CAMCORDER
  • android.media.MediaRecorder.AudioSource.VOICE_COMMUNICATION
  • android.media.MediaRecorder.AudioSource.VOICE_CALL
  • android.media.MediaRecorder.AudioSource.VOICE_DOWNLINK
  • android.media.MediaRecorder.AudioSource.VOICE_UPLINK
  • android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
  • android.media.MediaRecorder.AudioSource.MIC
  • android.media.MediaRecorder.AudioSource.DEFAULT

针对各个 AudioSource 请求的默认预处理效果在 /system/etc/audio_effects.conf 文件中指定。要为各个 AudioSource 指定您自己的默认效果,请创建一个 /system/vendor/etc/audio_effects.conf 文件,并指定要开启的预处理效果。有关示例,请参阅 device/samsung/manta/audio_effects.conf 中的 Nexus 10 实现。AudioEffect 实例在创建和销毁时获取和释放会话,因此效果(如响度增强器)能够在整个会话期间持续存在。

警告:对于 VOICE_RECOGNITION 使用情形,请勿启用噪音抑制预处理效果。从此音频来源录制时,该效果应默认处于停用状态,您不得在自己的 audio_effects.conf 文件中启用它。无论该效果处于默认启用状态的原因在于配置文件,还是音频 HAL 实现的默认行为,都将导致设备无法满足兼容性要求

以下示例为 VoIP AudioSource 和摄像机 AudioSource 启用了预处理。通过以这种方式声明 AudioSource 配置,框架会自动向音频 HAL 请求使用这些效果。

pre_processing {
   voice_communication {
       aec {}
       ns {}
   }
   camcorder {
       agc {}
   }
}

来源调谐

AudioSource 调谐对音频增益或音频处理没有明确的要求,但语音识别 (VOICE_RECOGNITION) 除外。语音识别的要求包括:

  • 100Hz 至 4kHz 范围内的平坦频率响应 (+/- 3dB)
  • 近距离通话配置:90dB SPL 读取值为 2500 的 RMS(16 位样本)
  • 在 -18dB 至 +12dB 范围内相对于 90dB SPL 的呈线性的电平轨道
  • THD < 1%(100Hz 至 4000Hz 范围内的 90dB SPL)
  • 近超声要求(有关测试,请参阅近超声测试):
    • 支持 CDD 中第 7.8.3 节中定义的 SUPPORT_PROPERTY_MIC_NEAR_ULTRASOUND。
    • 支持 44100 或 48000 采样率中的一个,或者两者都支持(无带通或抗混叠滤波器的情况下)。
  • 效果/预处理必须默认处于停用状态。

关于调谐不同来源的不同效果,示例如下:

  • 噪音抑制器
    • 调谐 CAMCORDER 的风噪抑制器
    • 调谐 VOICE_COMMUNICATION 的静态噪音抑制器
  • 自动增益控制
    • 调谐 VOICE_COMMUNICATION 和手机主麦克风的近距离通话
    • 调谐 CAMCORDER 的远距离通话

资源

有关详情,请参阅以下资源: