Cómo configurar los efectos de procesamiento previo

La versión de Android 10 incluye lo siguiente requisitos para la captura con VOICE_COMMUNICATION.

  • Las implementaciones deben proporcionar un cancelador de eco acústico (AEC) en la ruta de captura cuando la captura con VOICE_COMMUNICATION.
  • Si se proporciona un AEC, este debe ser detectable y controlable a través de las APIs del SDK AcousticEchoCanceler

La plataforma de Android ofrece efectos de audio en los dispositivos compatibles de la audiofx, que está disponible para que accedan los desarrolladores. Por ejemplo, Nexus 10 admite los siguientes efectos de procesamiento previo:

Cómo sincronizar con instancias de AudioSource

Los efectos de procesamiento previo se combinan con el modo de caso de uso en el que el procesamiento previo. En el desarrollo de apps para Android, se hace referencia a un caso de uso como una instancia AudioSource; y desarrolladores de apps solicitan usar la Abstracción de AudioSource en lugar del hardware de audio real dispositivo. Android Audio Policy Manager asigna una instancia de AudioSource a una la configuración de la ruta de captura (incluidos el dispositivo, la ganancia y el procesamiento previo) a las reglas específicas de cada producto. Las siguientes fuentes se exponen a los desarrolladores:

  • 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

Los efectos de procesamiento previo predeterminados que se aplican a cada instancia de AudioSource se especifican en el archivo /vendor/etc/audio_effects.xml. Para especifica tus propios efectos predeterminados para cada instancia de AudioSource, crea una /vendor/etc/audio_effects.xml y especifica la de procesamiento previo. Para ver un ejemplo, consulta la implementación de el Nexus 10 en device/samsung/manta/audio_effects.xml. Las instancias AudioEffect adquieren y liberan una sesión cuando se crean y se destruyen, permitir que los efectos (como el Amplificador de volumen) persistan durante la sesión.

En el siguiente ejemplo, se habilita el procesamiento previo de VoIP Instancias AudioSource y Videocámaras AudioSource. Declarando la configuración de AudioSource de esta manera, el framework solicita automáticamente el uso de esos efectos de la HAL.

<preprocess>
        <stream type="voice_communication">
            <apply effect="aec"/>
            <apply effect="ns"/>
        </stream>
        <stream type="camcorder">
            <apply effect="agc"/>
        </stream>
    </preprocess>

Ajuste de fuente

El ajuste de AudioSource no tiene requisitos explícitos en el audio o procesamiento de audio, con la excepción del reconocimiento de voz (VOICE_RECOGNITION) Estos son algunos de los requisitos del reconocimiento de voz:

  • Respuesta de frecuencia plana (+/- 3 dB) de 100 Hz a 4 kHz
  • Configuración de conversación cerrada: SPL de 90 dB lee RMS de 2,500 (muestras de 16 bits)
  • El nivel realiza seguimientos linealmente de -18 dB a +12 dB en relación con 90 dB de SPL
  • THD < 1% (90 dB de SPL en un rango de 100 a 4,000 Hz)
  • Requisitos casi ultrasónicos (para las pruebas, consulta Ecografía cercana Pruebas):
    • Compatibilidad con SUPPORT_PROPERTY_MIC_NEAR_ULTRASOUND, como se define en la sección 7.8.3 del CDD.
    • Compatibilidad con una o ambas tasas de muestreo 44100 o 48000 sin paso de banda o filtros de suavizado de contorno.
  • Efectos/procesamiento previo inhabilitados de forma predeterminada

Estos son algunos ejemplos de ajustes de diferentes efectos para distintas fuentes:

  • Supresor de ruido
    • Ajustado para el silenciador de ruido del viento de CAMCORDER
    • Ajustado para el supresor de ruido fijo de VOICE_COMMUNICATION
  • Control automático de ganancia
    • Ajustado para la conversación estrecha de VOICE_COMMUNICATION y el teléfono principal micrófono
    • Ajustado para la diafonía de CAMCORDER

Recursos

Para obtener más información, consulta los siguientes recursos: