Son spatial et suivi de la tête

Android 13 offre aux OEM une méthode standard pour prendre en charge le son spatial et le suivi des mouvements de la tête, sans nécessiter de contraintes spécifiques au fournisseur ; personnalisations ou SDK.

Le son spatial est une technologie utilisée pour créer un champ sonore autour du l'écouteur. Le son spatial permet aux utilisateurs de percevoir les canaux et les sons individuels dans des positions différentes de celles des transducteurs appareil audio utilisé pour la lecture. Par exemple, le son spatial offre à l'utilisateur la possibilité d'écouter une bande-son multicanale avec un casque audio. Utilisation de l'API les utilisateurs de casques perçoivent les dialogues d'effet, bien qu'il n'y ait que deux transducteurs pour la lecture.

Le suivi de la tête aide l'utilisateur à comprendre la nature du son spatialisé d'entraînement simulée autour de sa tête. Cette expérience n'est efficace que la latence est faible, la latence correspond au délai écoulé entre le moment où l'utilisateur bouge la tête et le moment où il entend la position de l'intervenant virtuel en conséquence.

Android 13 optimise le son spatial et le son stéréo en offrant un traitement audio spatial au niveau le plus bas possible dans le pipeline audio pour obtenir la latence la plus faible possible.

Architecture

Framework audio et API Android modifiés dans Android 13 facilite l'adoption de la technologie du son spatial dans l'écosystème.

L'illustration suivante illustre les modifications apportées au son spatialisé dans les architecture de pipeline audio avec Android 13:

son-spatial

Figure 1 : Architecture de pipeline audio avec spatialisation

Dans le nouveau modèle, le spatialisateur fait partie de la structure audio. découplés du décodeur. Le spatialisateur accepte du contenu audio mixte affiche un flux stéréo sur le HAL audio. En dissociant le spatialisateur de permet aux OEM de choisir différents fournisseurs pour le décodeur et l'outil de spatialisation. et d'atteindre la latence aller-retour souhaitée pour le suivi des mouvements de la tête. Ce nouveau modèle Il est également doté de crochets à la structure du capteur pour le suivi de la tête.

La figure suivante illustre l'architecture système du framework audio pour l'effet spatialisant et suivi de la tête:

spatial-sys-arch

Figure 2. Architecture système avec spatialisation et suivi de la tête

Toutes les API de son spatialisé sont regroupées dans l'espace public. Spatializer au niveau de l'application. SpatializerHelper dans les interfaces de service audio avec les composants d'UI du système pour gérer les fonctionnalités de spatialisation en fonction de la plate-forme et de l'appareil connecté ; des fonctionnalités. La nouvelle classe Spatializer du service de règles audio crée et contrôle l'espace graphique audio requis pour le mixage multicanal et la spatialisation en fonction de les fonctionnalités exprimées par l'OEM, les appareils connectés et les cas d'utilisation actifs. Une nouvelle classe de mixage SpatializerThread mixe les pistes multicanaux et transmet le mix obtenu à un effet de post-traitement qui fournit une sortie stéréo au HAL audio. Pour le suivi de la tête, La classe SpatializerPoseController regroupe les fonctions liées au suivi des mouvements de la tête, pour : à la pile de capteurs, et fusionner et filtrer les signaux des capteurs est transmise au moteur d'effets. Les données du capteur de suivi de la tête sont transférées via le protocole HID à partir du pilote Bluetooth.

Modifications apportées à l'architecture du pipeline audio Android 13 améliorer dans les domaines suivants:

  • Réduction de la latence entre le spatialisateur et le casque
  • Fournir des API unifiées aux développeurs d'applications
  • Contrôler l'état du suivi des mouvements de la tête via des API système
  • Découvrir les capteurs de suivi de la tête et les associer à des appareils audio actifs
  • Fusionner les signaux de différents capteurs et calculer la posture de la tête qui peut être utilisés par le moteur d'effet de spatialisation.

Des fonctions telles que la compensation du biais, la détection de l'immobilité et la limitation du débit peuvent être implémenté à l'aide de la bibliothèque d'utilitaires de suivi des mouvements de la tête ;

API de son spatial

Android 13 propose un système de son spatialisé pour les développeurs API.

Les OEM peuvent adapter le comportement des applications en fonction de la disponibilité des fonctionnalités et de l'état d'activation. défini par les API système. Les applications peuvent également configurer des attributs audio pour : désactiver le son spatial pour des raisons esthétiques ou pour indiquer que le flux audio déjà traités pour le son spatial.

Pour en savoir plus sur les API destinées aux développeurs, consultez Spatializer.

Les OEM peuvent utiliser des API système pour implémenter l'interface utilisateur des paramètres Sons et Bluetooth, qui permet à l'utilisateur de contrôler l'état du son spatial pour leur appareil. L'utilisateur peut activer ou désactiver le son spatial pour l'enceinte et le casque filaire dans l'UI des paramètres de son. L'effet spatial le paramètre audio de l'enceinte n'est disponible que si l'effet spatialisant est compatible avec le mode transaural.

L'utilisateur peut également activer ou désactiver le son spatial et le suivi de la tête dans le Il s'agit des paramètres de l'appareil Bluetooth pour chaque appareil. Le paramètre de suivi de la tête est disponible uniquement si le casque Bluetooth expose un capteur de suivi de la tête.

Les paramètres par défaut du son spatial sont toujours activés si la fonctionnalité est compatibles. Voir Spatializer.java pour obtenir la liste complète des API système.

Le nouveau type de capteur de suivi de la tête Sensor.TYPE_HEAD_TRACKER est ajouté Structure du capteur et exposition du HAL du capteur en tant que capteur dynamique au-dessus Bluetooth ou USB.

Intégrer le son spatial

Parallèlement à l'implémentation du moteur d'effet spatialisant, les OEM doivent configurer leurs pour le son spatialisé.

Conditions requises

Pour intégrer du son spatial, les conditions suivantes doivent être remplies:

  • Le HAL audio et le DSP audio doivent être compatibles avec un chemin de sortie dédié pour la diffusion audio.
  • Pour le son spatial dynamique avec suivi de la tête, le casque doit être intégré dans la tête capteurs du coach électronique.
  • La mise en œuvre doit respecter la norme proposée pour le suivi de la tête. via le protocole HID à partir d'un casque Bluetooth à un téléphone.
  • HAL audio version 7.1 est nécessaire pour la prise en charge du son spatial.

Pour intégrer le son spatial, procédez comme suit:

  1. Pour déclarer la prise en charge du son spatialisé dans votre fichier device.mk, procédez comme suit:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    AudioService initialise alors la prise en charge de la spatialisation.

  2. Déclarez une sortie dédiée pour le mixage audio spatial dans la audio_policy_configuration.xml, comme suit:

    <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. Déclarez la bibliothèque d'effets de spatialisation dans audio_effects.xml, comme suit:

    <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. Les fournisseurs qui implémentent l'effet spatialisant doivent se conformer aux règles suivantes:

    • Configuration et contrôle de base identiques aux autres effets dans Effect CARL.
    • Paramètres spécifiques nécessaires pour que le framework puisse identifier et leur configuration, par exemple:

      • 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

    Pour en savoir plus, consultez effect_spatializer.h.

Recommandations

Nous recommandons aux OEM de suivre les consignes suivantes lors de l'implémentation:

  • Utilisez LE Audio lorsqu'il est disponible pour faciliter l'interopérabilité et obtenir une latence objectifs.
  • Latence aller-retour, de la détection des mouvements du capteur au son reçu par le pour un casque audio, doit durer moins de 150 ms pour assurer une bonne expérience utilisateur.
  • Pour la version Bluetooth classique (BT) avec profil de distribution audio avancée (A2DP): <ph type="x-smartling-placeholder">
      </ph>
    • Utilisez un codec à faible latence, tel que Opus.
    • Implémentez des fonctions de contrôle de la latence au niveau de la HAL audio. Cela permet d'optimiser la puissance et les performances lorsque le suivi des mouvements de la tête est et désactiver le suivi de la tête dans des conditions non optimales.

Validation

Pour valider le fonctionnement du son spatial, utilisez les tests CTS disponible dans SpatializerTest.java.

Une mauvaise mise en œuvre des algorithmes de spatialisation ou de suivi des mouvements de la tête peut entraîner de non-respect de la recommandation de latence aller-retour telle qu'indiquée dans le Recommandations.