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

Android 13 prend en charge l'audio spatial en fournissant des API qui permettent aux développeurs d'applications de découvrir si la combinaison actuelle de l'implémentation du téléphone, du casque connecté et des paramètres utilisateur permet de lire des contenus audio multicanaux de manière immersive.

Les OEM peuvent fournir un effet audio de spatialisation compatible avec le suivi de la tête avec le niveau de performances et de latence requis, à l'aide de la nouvelle architecture du pipeline audio et de 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 la section Son spatial et suivi des mouvements de la tête.

Les consignes de cette page s'appliquent à une solution audio spatiale qui adopte les nouvelles API et l'architecture audio audio spatiale 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 d'implémentation des modes de son 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 d'API robuste garantit que les développeurs d'applications, en particulier les services de streaming multimédia, peuvent compter sur un comportement cohérent dans l'ensemble de l'écosystème et choisir le meilleur contenu en fonction des fonctionnalités de l'appareil, du contexte de rendu actuel et des choix des utilisateurs.

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 correspondant affichent un bouton Son spatial:

    spatial-audio-ui

    Figure 1 : Paramètre du son spatial.

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

  • Le son spatialisé après l'association initiale du casque est défini sur activé par défaut.

  • L'état sélectionné par l'utilisateur, qu'il soit activé ou désactivé, persiste après un redémarrage du téléphone, ou après la dissociation et l'association du casque.

Comportement fonctionnel

Formats audio

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

  • AAC, canaux 5.1
  • PCM brut, 5.1 canaux

Pour une meilleure expérience utilisateur, nous vous recommandons vivement d'accepter les formats/configurations de canaux suivants:

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

Lecture de contenu stéréo

Le contenu stéréo ne doit pas être rendu via le moteur d'effet spatialisateur, même si le son 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 avoir à modifier les paramètres utilisateur, ni à reconnecter ou reconfigurer le casque. La transition entre le contenu audio spatialisé et le contenu stéréo doit se produire avec une interruption audio minimale.

Transitions de cas d'utilisation et simultanéité

Gérez les cas d'utilisation particuliers comme suit:

  • Les notifications doivent être mélangées au contenu audio spatial de la même manière que les contenus audio non spatiaux.
  • Les sonneries doivent pouvoir être mélangées aux contenus audio en son spatial. Toutefois, par défaut, le mécanisme de mise au point audio met en pause le contenu audio spatial en cas de sonnerie.
  • Lorsque vous répondez à un appel téléphonique ou à une visioconférence, la lecture audio spatiale doit être mise en pause. 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 fluide pour ne pas affecter l'expérience d'appel.

Rendu via les haut-parleurs

La prise en charge de la spatialisation audio sur les haut-parleurs, ou mode transaural, n'est pas obligatoire.

Consignes pour la mise en œuvre du suivi de la tête

Cette section se concentre sur le son spatial dynamique, qui nécessite des casques spécifiques.

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 des mouvements de la tête.

  • Le paramètre de suivi 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 défini sur Activé.

  • L'état sélectionné par l'utilisateur, qu'il soit activé ou désactivé, doit persister après un redémarrage du téléphone ou une dissociation et une association du casque.

Comportement fonctionnel

Rapports sur la position de la tête

  • Les informations sur la position de la tête, en coordonnées X, Y et Z, envoyées du casque à l'appareil Android, doivent refléter rapidement et précisément les mouvements de la tête de l'utilisateur.
  • La signalisation de la position de la tête via le lien Bluetooth doit suivre le protocole défini sur HID.
  • Le casque doit envoyer les informations de suivi de la tête au téléphone Android uniquement lorsque l'utilisateur active le suivi de la tête dans l'interface utilisateur des paramètres de l'appareil Bluetooth.

Performances

Tardive

La latence de suivi de la tête correspond au temps écoulé entre le mouvement de la tête capturé par l'unité de mesure inertielle (IMU) et la détection par les transducteurs des écouteurs du changement de son causé par ce mouvement. La latence de suivi de la tête ne doit pas dépasser 150 ms.

Taux de signalement des poses de la tête

Lorsque le suivi de la tête est actif, le casque doit signaler la position 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 des entrées obsolètes 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'énergie

Pour optimiser la consommation d'énergie, nous vous recommandons d'utiliser les mécanismes de commutation de codec Bluetooth et de sélection du mode de latence fournis par les interfaces HAL audio et HAL audio Bluetooth.

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 transfert de 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. Pour lire du contenu audio non spatial, utilisez un codec à faible consommation d'énergie, tel que le codec audio avancé (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 spatialisateur dédié
    • Flux spécifiques aux contenus multimédias, tels que la lecture en mode tampon profond ou la lecture en décharge compressée
  • Lorsque tous les flux pertinents sont inactifs et que le flux du spatialisateur démarre, démarrez 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 à faible consommation d'énergie.

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

Côté casque, le casque doit être compatible avec les décodeurs à faible latence et à faible consommation d'énergie, et mettre en œuvre le protocole standard de sélection de codec.

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 que le suivi de la tête est désactivé, le mode à latence nulle est sélectionné. L'ajustement de la latence permet d'économiser de l'énergie de manière significative et de renforcer 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 jitter dans le casque Bluetooth.

Consultez Suivi de la tête avec LE Audio pour connaître les réglages du mode de latence pour LE Audio.