Mise en œuvre d'un son spatial dynamique et du suivi des mouvements de la tête

Android 13 est compatible avec l'audio spatial grâce à des API qui permettent aux développeurs d'applications de déterminer si la combinaison actuelle d'implémentation du téléphone, du casque connecté et des paramètres utilisateur permet la lecture de contenu audio multicanal de manière immersive.

Les OEM peuvent fournir un effet audio spatialiseur avec prise en charge du suivi des mouvements de la tête avec le niveau de performances et la latence requis, en utilisant la nouvelle architecture de pipeline audio et l'intégration du framework de capteurs. Le protocole HID spécifie comment connecter un appareil de suivi de la tête via Bluetooth et le rendre disponible en tant qu'appareil HID via le framework de capteur Android. Pour en savoir plus sur les exigences et la validation, consultez Son spatial et suivi de la tête.

Les consignes de cette page s'appliquent à une solution audio spatial qui adopte les nouvelles API et l'architecture audio avec un téléphone Android équipé d'Android 13 ou version ultérieure, et des casques compatibles avec un capteur de suivi de la tête.

Consignes pour l'implémentation des modes audio spatial dynamique et statique

Le son spatial statique ne nécessite pas de suivi de la tête. Aucune fonctionnalité spécifique n'est donc requise dans le casque. Tous les casques filaires et sans fil sont compatibles avec le son spatial statique.

Implémentation de l'API

Les OEM DOIVENT implémenter la classe Spatializer introduite dans Android 12. L'implémentation doit réussir les tests CTS introduits pour la classe Spatializer.

Une implémentation robuste de l'API garantit que les développeurs d'applications, en particulier les services de streaming multimédia, peuvent s'appuyer sur un comportement cohérent dans l'écosystème et choisir le meilleur contenu en fonction des capacités de l'appareil, du contexte de rendu actuel et des choix de l'utilisateur.

Interface utilisateur

Après avoir implémenté la classe Spatializer, vérifiez que votre UI présente le comportement suivant :

  • Lorsque le casque compatible avec le son spatial est associé, les paramètres de l'appareil Bluetooth pour ce casque affichent un bouton bascule Son spatial :

    spatial-audio-ui

    Figure 1. Paramètre du son spatial.

  • Les paramètres sont disponibles lorsque le casque est déconnecté.

  • L'état par défaut du son spatial après l'association initiale du casque est activé.

  • L'état sélectionné par l'utilisateur (activé ou désactivé) est conservé même si le téléphone est redémarré ou si le casque est dissocié puis associé.

Comportement fonctionnel

Formats audio

Les formats audio suivants DOIVENT être rendus par l'effet spatialiseur lorsque le son spatial est activé et que l'appareil de rendu est un casque filaire ou Bluetooth :

  • AAC, 5.1 canaux
  • PCM brut, 5.1 canaux

Pour une meilleure expérience utilisateur, nous vous recommandons vivement de prendre en charge les formats/configurations de chaînes suivants :

  • Dolby Digital Plus
  • Canaux 5.1.2, 7.1, 7.1.2, 7.1.4

Lecture de contenu stéréo

Le contenu stéréo ne doit pas être rendu par le moteur d'effets de spatialisation, même si l'audio spatial est activé. Si une implémentation permet la spatialisation du contenu stéréo, elle doit présenter une UI personnalisée qui permet à l'utilisateur d'activer ou de désactiver facilement cette fonctionnalité. Lorsque l'audio spatial est activé, il doit être possible de passer de la lecture de contenu multicanal spatialisé à du contenu stéréo non spatialisé sans nécessiter de modification des paramètres utilisateur ni de reconnexion ou de reconfiguration du casque. La transition entre le contenu audio spatialisé et le contenu stéréo doit se faire avec un minimum de perturbations audio.

Transitions de cas d'utilisation et simultanéité

Gérez les cas d'utilisation spéciaux comme suit :

  • Les notifications doivent être mixées avec le contenu audio spatial de la même manière qu'avec le contenu audio non spatial.
  • Les sonneries doivent pouvoir être mixées avec du contenu audio spatial. Toutefois, par défaut, le mécanisme de priorité audio met en pause le contenu audio spatial lorsqu'une sonnerie retentit.
  • La lecture de l'audio spatial doit se mettre en pause lorsque l'utilisateur répond à un appel téléphonique ou à une visioconférence, ou en passe un. La lecture du son spatial doit reprendre avec les mêmes paramètres de son spatial à la fin de l'appel. La reconfiguration d'un chemin audio pour passer du mode audio spatial au mode conversationnel doit se faire rapidement et de manière suffisamment fluide pour ne pas affecter l'expérience d'appel.

Rendu sur les enceintes

La prise en charge de la spatialisation audio sur les enceintes ou du mode transaural n'est pas requise.

Consignes pour l'implémentation du suivi de la tête

Cette section se concentre sur le son spatial dynamique, qui nécessite un casque spécifique.

Interface utilisateur

Après avoir implémenté et associé le casque compatible avec le son spatial, vérifiez que votre UI présente le comportement suivant :

  • Dans les paramètres de l'appareil Bluetooth, lorsque le paramètre Son spatial du casque est activé, un paramètre Suivi de la tête s'affiche sous Son spatial :

    ht-ui

    Figure 2. Paramètre du son spatial et du suivi de la tête.

  • Le paramètre de suivi des mouvements de la tête n'est PAS visible lorsque le son spatial est désactivé.

  • L'état par défaut du suivi de la tête après l'association initiale du casque est activé.

  • L'état sélectionné par l'utilisateur (activé ou désactivé) doit persister après le redémarrage du téléphone ou le déjumelage et le jumelage du casque.

Comportement fonctionnel

Rapports sur la pose de la tête

  • Les informations sur la pose de la tête, en coordonnées x, y et z, envoyées du casque à l'appareil Android doivent refléter les mouvements de la tête de l'utilisateur rapidement et précisément.
  • Le signalement de la pose de la tête via la connexion Bluetooth doit suivre le protocole défini sur HID.
  • Le casque ne doit envoyer les informations de suivi de la tête au téléphone Android que lorsque l'utilisateur active l'option Suivi de la tête dans l'interface utilisateur des paramètres de l'appareil Bluetooth.

Performances

Latence

La latence du suivi de la tête est définie comme le temps nécessaire à la détection par les transducteurs des écouteurs du changement de son causé par le mouvement de la tête capturé par l'unité de mesure inertielle (IMU). La latence du suivi de la tête ne doit pas dépasser 150 ms.

Taux de signalement de la pose de la tête

Lorsque le suivi de la tête est actif, le casque doit signaler la pose de la tête à une fréquence périodique recommandée d'environ 20 ms. Pour éviter de déclencher la logique de détection d'entrée obsolète sur le téléphone lors d'un jitter de transmission du Bluetooth, le temps maximal entre deux mises à jour ne doit pas dépasser 40 ms.

Optimisation de l'alimentation

Pour optimiser la consommation d'énergie, nous recommandons que l'implémentation utilise les mécanismes de changement de codec Bluetooth et de sélection du mode de latence fournis par les interfaces audio HAL et Bluetooth audio HAL.

Les implémentations AOSP du framework audio et de la pile Bluetooth prennent déjà en charge les signaux permettant de contrôler le changement de codec. Si l'implémentation de l'OEM utilise le HAL audio principal pour l'audio Bluetooth, appelé mode de déchargement du codec, l'OEM doit s'assurer que le HAL audio relaie ces signaux entre le HAL audio et la pile Bluetooth.

Changement de codec

Lorsque le son spatial dynamique et le suivi de la tête sont activés, utilisez un codec à faible latence, tel que Opus. Lorsque vous lisez du contenu audio non spatial, utilisez un codec basse consommation, tel que Advanced Audio Coding (AAC).

Suivez ces règles lors du changement de codec :

  • Ne suivez que l'activité sur les flux de sortie HAL audio suivants :
    • Sortie du spatialiseur dédiée
    • Flux spécifiques aux contenus multimédias, tels que la lecture avec mise en mémoire tampon profonde ou le déchargement compressé
  • Lorsque tous les flux pertinents sont inactifs et que le flux du spatialiseur démarre, lancez le flux Bluetooth avec isLowLatency défini sur true pour spécifier un codec à faible latence.

  • Lorsque tous les flux pertinents sont inactifs et qu'un flux multimédia démarre, démarrez le flux Bluetooth avec isLowLatency défini sur false pour spécifier un codec basse consommation.

  • Si un flux multimédia est actif et que le flux du spatialiseur démarre, redémarrez le flux Bluetooth avec isLowLatency défini sur true.

Du côté du casque, celui-ci doit être compatible avec les décodeurs à faible latence et à faible consommation d'énergie, et implémenter le protocole standard de sélection des codecs.

Ajustement du mode de latence

L'ajustement du mode de latence se produit lorsque le codec à faible latence est sélectionné.

Selon que le suivi de la tête est activé ou désactivé, l'ajustement du mode de latence utilise les mécanismes disponibles pour réduire ou augmenter la latence afin d'obtenir le meilleur compromis entre latence, puissance et qualité audio. Lorsque le son spatial et le suivi de la tête sont activés, le mode à faible latence est sélectionné. Lorsque le son spatial est activé et le suivi de la tête désactivé, le mode sans latence est sélectionné. Le réglage de la latence permet de réaliser d'importantes économies d'énergie et d'améliorer la robustesse de la liaison audio Bluetooth lorsque seul le son spatial statique est demandé. Le mécanisme d'ajustement de la latence le plus courant consiste à réduire ou à étendre la taille de la mémoire tampon de gigue dans le casque Bluetooth.

Consultez Suivi de la tête avec LE Audio pour savoir comment ajuster le mode Latence pour LE Audio.