Configura los efectos de preprocesamiento

La versión de Android 10 incluye los siguientes requisitos para la captura con VOICE_COMMUNICATION.

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

La plataforma de Android proporciona efectos de audio en los dispositivos compatibles en el paquete audiofx, al que los desarrolladores pueden acceder. Por ejemplo, el Nexus 10 admite los siguientes efectos de preprocesamiento:

Cómo vincularse con instancias de AudioSource

Los efectos de preprocesamiento se vinculan con el modo de caso de uso en el que se solicita el preprocesamiento. En el desarrollo de apps para Android, un caso de uso se conoce como una instancia de AudioSource, y los desarrolladores de apps solicitan usar la abstracción de AudioSource en lugar del dispositivo de hardware de audio real. El Audio Policy Manager de Android asigna una instancia de AudioSource a una configuración de ruta de captura determinada (incluidos el dispositivo, la ganancia y el procesamiento previo) según las reglas específicas del 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 preprocesamiento predeterminados que se aplican a cada instancia de AudioSource se especifican en el archivo /vendor/etc/audio_effects.xml. Para especificar tus propios efectos predeterminados para cada instancia de AudioSource, crea un archivo /vendor/etc/audio_effects.xml y especifica los efectos de preprocesamiento que deseas activar. Para ver un ejemplo, consulta la implementación del Nexus 10 en device/samsung/manta/audio_effects.xml. Las instancias de AudioEffect adquieren y liberan una sesión cuando se crean y destruyen, lo que permite que los efectos (como el Loudness Enhancer) persistan durante toda la sesión.

En el siguiente ejemplo, se habilita el preprocesamiento para las instancias de AudioSource de VoIP y AudioSource de Camcorder. Si declaras la configuración de AudioSource de esta manera, el framework solicita automáticamente el uso de esos efectos del HAL.

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

Ajuste de la fuente

El ajuste de AudioSource no tiene requisitos explícitos sobre la ganancia de audio ni el procesamiento de audio, con la excepción del reconocimiento de voz (VOICE_RECOGNITION), que incluye los siguientes requisitos:

  • Respuesta de frecuencia plana (±3 dB) de 100 Hz a 4 kHz
  • Configuración de conversación cercana: 90 dB SPL lee un RMS de 2,500 (muestras de 16 bits)
  • El nivel se ajusta de forma lineal de -18 dB a +12 dB en relación con 90 dB SPL.
  • THD < 1% (90 dB SPL en el rango de 100 a 4,000 Hz)
  • Requisitos de ultrasonido cercano (para las pruebas, consulta Pruebas de ultrasonido cercano):
    • 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 de 44,100 o 48,000 Hz sin filtros de banda o de suavizado
  • Efectos o preprocesamiento inhabilitados de forma predeterminada

Estos son algunos ejemplos de cómo ajustar diferentes efectos para diferentes fuentes:

  • Supresor de ruido
    • Ajuste del supresor de ruido del viento para CAMCORDER
    • Ajuste para el supresor de ruido estacionario en VOICE_COMMUNICATION
  • Control automático de ganancia
    • Ajustado para hablar de cerca con el micrófono principal del teléfono y el de VOICE_COMMUNICATION
    • Ajustado para hablar desde lejos en CAMCORDER

Recursos

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