Wdrożenie wysokiej jakości dźwięku przestrzennego i śledzenia ruchów głowy

Android 13 wprowadza obsługę dźwięku przestrzennego, udostępniając interfejsy API, które pozwalają deweloperom aplikacji sprawdzić, czy obecna kombinacja implementacji telefonu, podłączonych słuchawek i ustawień użytkownika umożliwia odtwarzanie dźwięku wielokanałowego w sposób immersyjny.

Producenci urządzeń OEM mogą udostępnić efekt dźwiękowy przestrzenny z obsługą śledzenia ruchów głowy z wymaganym poziomem wydajności i opóźnienia, korzystając z nowej architektury dźwiękowej i integracji z ramami czujników. Protokół HID określa, jak podłączyć urządzenie do śledzenia ruchów głowy przez Bluetooth i uzyskać do niego dostęp jako do urządzenia HID za pomocą interfejsu czujników Androida. Więcej informacji o wymaganiach i weryfikacji znajdziesz w sekcji Dźwięk przestrzenny i monitorowanie ruchów głowy.

Wytyczne na tej stronie dotyczą rozwiązania do dźwięku przestrzennego, które korzysta z nowych interfejsów API dźwięku przestrzennego i architektury dźwiękowej na telefonie z Androidem w wersji 13 lub nowszej oraz z obsługiwanych słuchawek ze zintegrowanym czujnikiem śledzenia ruchów głowy.

Wytyczne dotyczące implementacji dynamicznych i statycznych trybów dźwięku przestrzennego

Statyczny dźwięk przestrzenny nie wymaga śledzenia ruchów głowy, więc nie trzeba stosować w przypadku niego określonych funkcji w słuchawkach. Wszystkie przewodowe i bezprzewodowe zestawy słuchawkowe mogą obsługiwać statyczny dźwięk przestrzenny.

Implementacja interfejsu API

Producenci OEM muszą zaimplementować klasę Spatializer wprowadzoną w Androidzie 12. Implementacja musi przejść testy CTS wprowadzone dla klasy Spatializer.

Solidna implementacja interfejsu API zapewnia deweloperom aplikacji, zwłaszcza usług strumieniowego przesyłania multimediów, spójne działanie w całym ekosystemie oraz wybieranie najlepszych treści zgodnie z możliwościami urządzenia, bieżącym kontekstem renderowania i wyborami użytkownika.

Interfejs użytkownika

Po zaimplementowaniu klasy Spatializer sprawdź, czy interfejs użytkownika zachowuje się w taki sposób:

  • Po sparowaniu zestawu słuchawkowego obsługującego dźwięk przestrzenny w ustawieniach urządzenia Bluetooth dla tego zestawu słuchawkowego pojawi się przełącznik Dźwięk przestrzenny:

    spatial-audio-ui

    Rysunek 1. Ustawienie dźwięku przestrzennego.

  • Ustawienia są dostępne, gdy zestaw słuchawkowy jest odłączony.

  • Domyślny stan dźwięku przestrzennego po początkowym sparowaniu zestawu słuchawkowego to włączony.

  • Wybrany przez użytkownika stan (włączony lub wyłączony) pozostaje niezmieniony po ponownym uruchomieniu telefonu lub po rozłączeniu i ponownym sparowaniu zestawu słuchawkowego.

Funkcje

Formaty audio

Gdy dźwięk przestrzenny jest włączony, a urządzenie do renderowania to zestaw słuchawkowy przewodowy lub Bluetooth, te formaty audio MUSZĄ być renderowane przez procesor dźwięku przestrzennego:

  • AAC, 5.1-kanałowe
  • surowy PCM, 5.1 kanałów

Aby zapewnić użytkownikom lepsze wrażenia, zdecydowanie zalecamy obsługę tych formatów i konfiguracji kanałów:

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

odtwarzanie treści stereo,

Treści stereo nie mogą być renderowane za pomocą mechanizmu efektu przestrzennego, nawet jeśli dźwięk przestrzenny jest włączony. Jeśli implementacja umożliwia przestrzenne odtwarzanie treści stereo, musi zawierać niestandardowy interfejs użytkownika, który umożliwia łatwe włączanie i wyłączanie tej funkcji. Gdy dźwięk przestrzenny jest włączony, użytkownik musi mieć możliwość przełączania się między odtwarzaniem treści wielokanałowych z dźwiękiem przestrzennym a treściami stereo bez dźwięku przestrzennego bez konieczności wprowadzania zmian w ustawieniach użytkownika lub ponownego łączenia lub konfigurowania zestawu słuchawkowego. Przejście między treściami z dźwiękiem przestrzennym a treściami stereo musi odbywać się z minimalnym zakłóceniem dźwięku.

Przejścia między przypadkami użycia i współbieżność

W szczególnych przypadkach:

  • Powiadomienia muszą być zmiksowane z dźwiękiem przestrzennym w taki sam sposób jak dźwięk nieprzestrzenny.
  • Dźwięki dzwonka muszą być zmiksowane z dźwiękiem przestrzennym. Jednak domyślnie mechanizm skupienia dźwięku wstrzymuje odtwarzanie dźwięku przestrzennego, gdy włączy się dzwonek.
  • Podczas odbierania połączenia, nawiązywania połączenia lub uczestniczenia w wideokonferencji odtwarzanie dźwięku przestrzennego musi zostać wstrzymane. Po zakończeniu połączenia odtwarzanie dźwięku przestrzennego musi zostać wznowione z tymi samymi ustawieniami. Konfiguracja ścieżki audio w celu przełączenia z trybu dźwięku przestrzennego na tryb konwersacyjny musi przebiegać szybko i płynnie, aby nie wpływać na jakość połączenia.

Renderowanie przez głośniki

Nie jest wymagane wsparcie dla dźwięku przestrzennego w głośnikach (tzw. tryb transauralny).

Wskazówki dotyczące implementacji śledzenia ruchów głowy

Ta sekcja dotyczy dynamicznego dźwięku przestrzennego, który ma określone wymagania dotyczące słuchawek.

Interfejs użytkownika

Po zaimplementowaniu i sparowaniu słuchawek obsługujących dźwięk przestrzenny sprawdź, czy interfejs użytkownika zachowuje się w ten sposób:

  • W ustawieniach urządzenia Bluetooth, gdy włączysz ustawienie Dźwięk przestrzenny dla zestawu słuchawkowego, w sekcji Dźwięk przestrzenny pojawi się ustawienie Śledzenie ruchów głowy:

    ht-ui

    Rysunek 2. Dźwięk przestrzenny i ustawienie śledzenia ruchów głowy.

  • Ustawienie śledzenia ruchów głowy jest niewidoczne, gdy dźwięk przestrzenny jest wyłączony.

  • Początkowy stan monitorowania ruchów głowy po pierwszym sparowaniu zestawu słuchawkowego to włączony.

  • Wybrany przez użytkownika stan (włączony lub wyłączony) musi być zachowany po ponownym uruchomieniu telefonu lub po rozłączeniu i ponownym sparowaniu słuchawek.

Funkcje

Raporty dotyczące pozycji głowy

  • Informacje o pozycji głowy w układzie współrzędnych x, y, z wysyłane z zestawu słuchawkowego na urządzenie z Androidem muszą szybko i precyzyjnie odzwierciedlać ruchy głowy użytkownika.
  • Raportowanie pozycji głowy przez połączenie Bluetooth musi być zgodne z protokołem zdefiniowanym w HID.
  • Słuchawki muszą wysyłać informacje o śledzeniu ruchów głowy do telefonu z Androidem tylko wtedy, gdy użytkownik włączy śledzenie ruchów głowy w interfejsie ustawień urządzenia Bluetooth.

Wydajność

Opóźnienie

Opóźnienie śledzenia ruchów głowy to czas od ruchu głowy zarejestrowanego przez jednostkę pomiarową inercyjną (IMU) do wykrycia zmiany dźwięku spowodowanej przez ten ruch przez przetworniki słuchawek. Opóźnienie śledzenia ruchów głowy nie może przekraczać 150 ms.

Odsetek raportowania pozycji głowy

Gdy śledzenie ruchów głowy jest aktywne, zestaw słuchawkowy musi przekazywać informacje o pozycji głowy co około 20 ms. Aby uniknąć aktywowania logiki wykrywania nieaktualnych danych na telefonie podczas jittera transmisji Bluetooth, maksymalny czas między dwoma aktualizacjami nie może przekraczać 40 ms.

Optymalizacja zużycia energii

Aby zoptymalizować zużycie energii, zalecamy, aby implementacja używała mechanizmów przełączania kodeków Bluetoothwyboru trybu opóźnienia udostępnianych przez interfejsy audio HALBluetooth audio HAL.

Implementacje AOSP dotyczącego interfejsu audio i poziomu Bluetooth obsługują już sygnały umożliwiające kontrolowanie przełączania kodeków. Jeśli implementacja OEM używa głównego interfejsu HAL dźwięku do obsługi dźwięku Bluetooth (tzw. tryb odciążenia kodeka), OEM musi zadbać o to, aby interfejs HAL dźwięku przekazywał te sygnały między interfejsem HAL dźwięku a zbiorem Bluetooth.

Przełączanie kodeków

Gdy włączone są dynamiczny dźwięk przestrzenny i monitorowanie ruchów głowy, użyj kodeka o niskiej latencji, takiego jak Opus. Podczas odtwarzania treści audio bez dźwięku przestrzennego używaj kodeka o niskim poborze mocy, takiego jak Advanced Audio Coding (AAC).

Podczas przełączania kodeków przestrzegaj tych zasad:

  • Śledź tylko aktywność w tych strumieniowych wyjściach HAL dźwięku:
    • Specjalne dane wyjściowe procesora dźwięku przestrzennego
    • strumienie dotyczące multimediów, takie jak głębokie buforowanie lub odtwarzanie z skompresowanym przesyłaniem danych.
  • Gdy wszystkie odpowiednie strumienie są nieaktywne i rozpoczyna się strumień z procesorem dźwięku przestrzennego, uruchom strumień Bluetooth z parametrem isLowLatency ustawionym na true, aby określić kodek o niskiej latencji.

  • Gdy wszystkie odpowiednie strumienie są nieaktywne, a strumień Bluetooth rozpoczyna się, uruchom strumień Bluetooth z ustawionym parametrem isLowLatency = false, aby określić kodek o niskim poborze mocy.

  • Jeśli strumień multimediów jest aktywny i rozpoczyna się strumień z przestrzennym dźwiękiem, uruchom ponownie strumień Bluetooth z ustawionym parametrem isLowLatency = true.

Ze strony słuchawek: słuchawki muszą obsługiwać dekodery o niskiej latencji i małej mocy oraz implementować standardowy protokół wyboru kodeka.

Dostosowywanie trybu niskiego opóźnienia

Dostosowanie trybu opóźnienia następuje, gdy wybrany jest kodek o niskim opóźnieniu.

W zależności od tego, czy śledzenie ruchów głowy jest włączone, czy wyłączone, korekta trybu opóźnienia używa dostępnych mechanizmów do zmniejszenia lub zwiększenia opóźnienia, aby osiągnąć najlepszy kompromis między opóźnieniem, mocą i jakością dźwięku. Gdy włączony jest dźwięk przestrzenny i monitorowanie ruchów głowy, wybierany jest tryb o niskiej latencji. Gdy dźwięk przestrzenny jest włączony, a monitorowanie ruchów głowy jest wyłączone, wybrany jest tryb bez opóźnień. Korekta opóźnienia zapewnia znaczne oszczędności energii i zwiększa niezawodność połączenia audio Bluetooth, gdy wymagany jest tylko dźwięk przestrzenny statyczny. Najczęstszym mechanizmem korekcji opóźnienia jest zmniejszenie lub zwiększenie rozmiaru buforowania jittera w słuchawkach Bluetooth.

Aby dowiedzieć się więcej o dostosowaniach trybu opóźnienia w przypadku LE Audio, przeczytaj artykuł Śledzenie ruchów głowy w przypadku LE Audio.