Audio espacial y seguimiento de cabeza

Android 13 presenta una forma estándar para que los OEM compatibilidad con audio espacial y seguimiento de cabeza sin la necesidad de ajustar personalizados o SDKs.

El audio espacial es una tecnología que se usa para crear un campo sonoro que rodea el objeto de escucha. El audio espacial permite a los usuarios percibir canales y sonidos individuales en posiciones que difieren de las posiciones físicas de los transductores de la dispositivo de audio usado para la reproducción. Por ejemplo, el audio espacial ofrece al usuario la capacidad de escuchar una banda sonora multicanal con auriculares. Cómo usar la función espacial audio, los usuarios de auriculares pueden percibir un diálogo frente a ellos y rodear efectos detrás de ellos, a pesar de tener solo dos transductores para la reproducción.

El seguimiento de cabeza ayuda al usuario a comprender la naturaleza del sonido espacial. que se simula en la cabeza. Esta experiencia es efectiva solo cuando La latencia es baja, que se mide como el tiempo que transcurre desde que el usuario mueve la cabeza y la hora en que escucha cómo se mueve la posición del orador virtual según corresponda.

Android 13 se optimiza para el audio espacial y la cabeza del seguimiento mediante la oferta de procesamiento de sonido espacial al menor nivel posible en la canalización de audio para obtener la latencia más baja posible.

Arquitectura

El framework de audio y la API de Android modificados en Android 13 y facilita la adopción de tecnología de audio espacial en todo el ecosistema.

En la siguiente figura, se ilustran los cambios relacionados con el sonido espacial que se realizaron en el Arquitectura de canalización de audio con Android 13:

audio-espacial

Figura 1: Arquitectura de canalización de audio con espacializador

En el modelo nuevo, el espacializador es parte del framework de audio están desvinculados del decodificador. El espacializador toma contenido de audio mixto renderiza una transmisión estéreo a la HAL de audio. Separar el espacializador del el decodificador permite que los OEM elijan diferentes proveedores para el decodificador y el espacializador. y lograr la latencia de ida y vuelta deseada para el seguimiento de cabeza. Este nuevo modelo también incluye ganchos a la estructura del sensor para el seguimiento de la cabeza.

En la siguiente figura, se ilustra la arquitectura del sistema del framework de audio. para el efecto espacializador y seguimiento de la cabeza:

arco-espacial

Figura 2: Arquitectura de sistemas con espacializador y seguimiento de cabeza

Todas las APIs de sonido espacial se agrupan en público. Spatializer a nivel de la app. La SpatializerHelper en las interfaces del servicio de audio con los componentes de la IU del sistema que se administrarán Funcionalidad relacionada con el espacializador que se basa en la plataforma y el dispositivo conectado capacidades de integración. La nueva clase Spatializer del servicio de política de audio crea y controla la transmisión gráfico de audio necesario para la mezcla multicanal y la espacialización basada en capacidades expresadas por el OEM, los dispositivos conectados y los casos de uso activos. Una nueva clase de mezclador SpatializerThread mezcla pistas multicanal y transmite la mezcla resultante a un FX de procesamiento posterior. que genera una salida estéreo para la HAL de audio. Para el seguimiento de la cabeza, el La clase SpatializerPoseController agrupa funciones relacionadas con el seguimiento de cabeza para con la pila de sensores y para fusionar y filtrar las señales de los sensores alimentar el motor del efecto. Los datos del sensor de seguimiento de cabeza se transfieren mediante el protocolo HID. desde el controlador Bluetooth.

Cambios en la arquitectura de canalización de audio de Android 13 mejorar los siguientes aspectos:

  • Se reducirá la latencia entre el espacializador y los auriculares.
  • Proporcionar APIs unificadas para brindar servicio a los desarrolladores de apps
  • Control del estado del seguimiento de cabeza a través de las APIs del sistema
  • Descubrir sensores de seguimiento de cabeza y asociarlos con dispositivos de audio activos
  • Combinar señales de varios sensores e calcular la postura de la cabeza que se puede que consume el motor de efecto espacializador.

Las funciones como la compensación de sesgo, la detección de quietud y la limitación de frecuencia Implementarse con la biblioteca de utilidades para el seguimiento de cabeza

APIs de audio espacial

Android 13 ofrece un sistema de audio espacial y desarrolladores APIs

Los OEMs pueden adaptar el comportamiento de las apps en función de la disponibilidad de las funciones y el estado habilitado. establecido por las APIs del sistema. Las apps también pueden configurar atributos de audio para inhabilitar el audio espacial por razones estéticas o para indicar que la reproducción de audio es ya se procesó para el audio espacial.

Para las APIs orientadas al desarrollador, consulta Spatializer.

Los OEM pueden usar las APIs del sistema para implementar la IU de configuración de Sonidos y Bluetooth. que permite al usuario controlar el estado del audio espacial y la cabeza de seguimiento de conversiones para su dispositivo. El usuario puede habilitar o inhabilitar el audio espacial. para la bocina y los auriculares con cable en la IU de configuración de Sonidos. El espacio La configuración de audio de la bocina está disponible solo si el efecto de espacializador que admite el modo transaural.

El usuario también puede habilitar o inhabilitar el audio espacial y el seguimiento de la cabeza en la Configuración de dispositivo Bluetooth para cada dispositivo. El parámetro de configuración de seguimiento de cabeza ya está disponible solo si los auriculares Bluetooth exponen un sensor de seguimiento de cabeza.

La configuración predeterminada del sonido espacial siempre estará ACTIVADA si la función está no es compatible. Consulta Spatializer.java para obtener una lista completa de las APIs del sistema.

El nuevo sensor de seguimiento de cabeza Sensor.TYPE_HEAD_TRACKER se agrega al marco de trabajo del sensor y que la HAL del sensor expone como un sensor dinámico en Bluetooth o USB

Cómo integrar el audio espacial

Además de implementar el motor de efecto espacial, los OEMs deben configurar sus plataforma compatible con el sonido espacial.

Requisitos

Para integrar el sonido espacial, debes cumplir con los siguientes requisitos:

  • La HAL de audio y la DSP de audio deben admitir una ruta de salida dedicada para la audio.
  • Para usar el audio espacial con seguimiento de cabeza, los auriculares deben tener la cabeza integrada sensores de dispositivos de rastreo.
  • La implementación debe cumplir con el estándar propuesto para el seguimiento de cabeza a través del protocolo HID desde un auriculares Bluetooth a un teléfono.
  • HAL de audio versión 7.1 para la compatibilidad con el sonido espacial.

Para integrar el audio espacial, sigue estos pasos:

  1. Declara la compatibilidad de audio espacial en tu archivo device.mk de la siguiente manera:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Esto hará que AudioService inicialice la compatibilidad con el espacializador.

  2. Declara la salida dedicada para la combinación de audio espacial en la audio_policy_configuration.xml de la siguiente manera:

    <audioPolicyConfiguration>
      <modules>
       <module>
         <mixPorts>
         <mixPort name="spatializer" role="source"   flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
           <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT"
             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
    
  3. Declara la biblioteca de efectos del espacializador en audio_effects.xml de la siguiente manera:

    <audio_effects_conf>
          <libraries>
             <library name="spatializer_lib" path="libMySpatializer.so"/>
              …
             </libraries>
          <effects>
           <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
    
  4. Los proveedores que implementen el efecto espacializador deben cumplir con lo siguiente:

    • Configuración y control básicos idénticos a otros efectos en Effect HAL.
    • Parámetros específicos necesarios para que el framework descubra capacidades y configuración, como

      • SPATIALIZER_PARAM_SUPPORTED_LEVELS
      • SPATIALIZER_PARAM_LEVEL
      • SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
      • SPATIALIZER_PARAM_HEADTRACKING_MODE
      • SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
      • SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
      • SPATIALIZER_PARAM_HEAD_TO_STAGE

    Consulta effect_spatializer.h para obtener más información.

Recomendaciones

Recomendamos que los OEMs usen los siguientes lineamientos durante la implementación:

  • Usa audio de bajo consumo cuando esté disponible para facilitar la interoperabilidad y lograr latencia y objetivos de tiempo de recuperación.
  • Latencia de ida y vuelta, desde la detección de movimiento del sensor hasta el audio que recibe el los auriculares, debe durar menos de 150 ms para lograr una buena UX.
  • Para Bluetooth (BT) clásico con perfil de distribución de audio avanzada (A2DP):
    • Usa un códec de latencia baja, como Opus.
    • Implementa funciones de control de latencia en la HAL de audio. Esto permite la optimización de la energía y el rendimiento cuando se realiza el seguimiento de cabeza desactivación e inhabilita el seguimiento de cabeza en condiciones no óptimas.

Validación

Para validar la funcionalidad de la función de audio espacial, usa las pruebas del CTS disponible en SpatializerTest.java.

Una mala implementación de los algoritmos de espacialización o seguimiento de la cabeza puede causar incumplir la recomendación de latencia de ida y vuelta según se indica en el Recomendaciones.