Implémentation d’un son spatial et d’un suivi de la tête de haute qualité

Android 13 introduit la prise en charge de l'audio spatial en fournissant des API qui permettent aux développeurs d'applications de découvrir si la combinaison actuelle de mise en œuvre du téléphone, de casque connecté et de paramètres utilisateur permet la lecture de contenu audio multicanal de manière immersive.

Les OEM peuvent fournir un effet audio de spatialisation prenant en charge le suivi de la tête avec le niveau de performances et de latence requis, en utilisant la nouvelle architecture de pipeline audio et l'intégration du cadre de capteurs. Le protocole HID spécifie comment connecter un appareil de suivi de tête via Bluetooth et le rendre disponible en tant qu'appareil HID via le cadre de capteurs Android. Voir Spatial Audio et Head Tracking pour plus d’exigences et de validation.

Les directives de cette page s'appliquent à une solution audio spatiale qui adopte les nouvelles API audio spatiales et la nouvelle architecture audio avec un téléphone Android exécutant Android 13 et versions ultérieures et des casques compatibles avec capteur de suivi de la tête.

Lignes directrices pour la mise en œuvre des modes audio spatiaux dynamiques et statiques

L'audio spatial statique ne nécessite pas de suivi de la tête, donc aucune fonctionnalité spécifique n'est requise dans le casque. Tous les casques filaires et sans fil peuvent prendre en charge l’audio spatial statique.

Implémentation d'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 s'appuyer sur un comportement cohérent dans l'ensemble de l'écosystème et sélectionner le meilleur contenu en fonction des capacité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 interface utilisateur a le comportement suivant :

  • Lorsque le casque compatible audio spatial est couplé, les paramètres du périphérique Bluetooth de ce casque affichent une bascule Spatial Audio :

    spatial-audio-ui

    Figure 1. Paramètre audio spatial.

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

  • L'état par défaut de l'audio spatial après le couplage initial du casque est défini sur activé .

  • L'état sélectionné par l'utilisateur, qu'il soit activé ou désactivé, persiste lors du redémarrage du téléphone ou du dissociation et de l'appairage du casque.

Comportement fonctionnel

Formats audio

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

  • AAC, 5.1 canaux
  • PCM brut, canaux 5.1

Pour une meilleure expérience utilisateur, nous vous recommandons fortement de prendre en charge les formats/configurations de canaux 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 restitué via 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 interface utilisateur 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 d'un contenu multicanal spatialisé à un 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 spatial et le contenu stéréo doit s'effectuer avec un minimum de perturbations audio.

Transitions de cas d'utilisation et concurrence

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

  • Les notifications doivent être mélangées avec le contenu audio spatial de la même manière qu'avec le contenu audio non spatial.
  • Les sonneries doivent pouvoir être mélangées avec du contenu audio spatial. Cependant, par défaut, le mécanisme de focus audio met en pause le contenu audio spatial lorsqu'il y a une sonnerie.
  • Lorsque vous répondez ou passez un appel téléphonique ou une vidéoconférence, la lecture audio spatiale doit être interrompue. La lecture audio spatiale doit reprendre avec les mêmes paramètres audio spatiaux à la fin de l’appel. La reconfiguration d'un chemin audio pour passer du mode audio spatial au mode conversationnel doit se faire de manière suffisamment rapide et transparente pour ne pas affecter l'expérience d'appel.

Rendu sur haut-parleurs

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

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

Cette section se concentre sur l'audio spatial dynamique, qui nécessite des exigences spécifiques en matière de casque.

Interface utilisateur

Lors de la mise en œuvre et du couplage du casque compatible audio spatial, vérifiez que votre interface utilisateur a le comportement suivant :

  • Dans les paramètres du périphérique Bluetooth, lorsque le paramètre Spatial Audio du casque est activé, un paramètre de suivi de la tête apparaît sous Spatial Audio :

    ht-ui

    Figure 2. Paramètres audio spatial et suivi de la tête.

  • Le paramètre de suivi de la tête n'est PAS visible lorsque l'audio spatial est désactivé.

  • L'état par défaut du suivi de la tête après le couplage initial du casque est défini sur activé .

  • L'état sélectionné par l'utilisateur, qu'il soit activé ou désactivé, doit persister jusqu'au redémarrage du téléphone ou au dissociation et au couplage du casque.

Comportement fonctionnel

Reportage 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 de manière rapide et précise.
  • Les rapports de pose de la tête via la liaison Bluetooth doivent suivre le protocole défini via 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 du périphérique Bluetooth.

Performance

Latence

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

Taux de signalement des poses de tête

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

Optimisation de la puissance

Pour optimiser la puissance, nous recommandons que l'implémentation utilise les mécanismes de commutation 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 la commutation 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.

Commutation de codec

Lorsque l'audio spatial dynamique et le suivi de la tête sont activés, utilisez un codec à faible latence, tel qu'Opus . Lors de la lecture de contenu audio non spatial, utilisez un codec à faible consommation, tel que Advanced Audio Coding (AAC) .

Suivez ces règles lors du changement de codec :

  • Suivez uniquement l'activité sur les flux de sortie audio HAL suivants :
    • Sortie du spatialiseur dédié
    • Flux spécifiques au média, tels que la lecture en mémoire tampon profonde ou la lecture de déchargement compressé
  • Lorsque tous les flux pertinents sont inactifs et que le flux du spatialiseur 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.

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

Côté casque, le casque doit prendre en charge à la fois les décodeurs à faible latence et à faible consommation et implémenter le protocole standard de sélection de codec.

Réglage du mode de latence

Le réglage 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é, le réglage du mode de latence utilise les mécanismes disponibles pour réduire ou augmenter la latence afin d'atteindre le meilleur compromis entre latence, puissance et qualité audio. Lorsque l'audio spatial est activé et le suivi de la tête est activé, le mode à faible latence est choisi. Lorsque l’audio spatial est activé et que le suivi de la tête est désactivé, le mode de latence libre est sélectionné. L'ajustement de la latence permet des économies d'énergie significatives et une robustesse accrue de la liaison audio Bluetooth lorsque seul l'audio spatial statique est demandé. Le mécanisme de réglage de la latence le plus courant est la réduction ou l'extension de la taille du tampon de gigue dans le casque Bluetooth.