實作高品質的空間音訊和頭部追蹤

Android 13 透過提供 API 支援空間音訊,可讓應用程式開發人員瞭解目前的手機實作、連接耳機和使用者設定組合,是否允許以沉浸方式播放多頻道音訊內容。

原始設備製造商 (OEM) 可以使用新的音訊管道架構和感應器架構整合功能,提供支援頭部追蹤的空間化音訊效果,並達到所需的效能和延遲程度。HID 通訊協定會指定如何透過藍牙連接頭部追蹤裝置,並透過 Android 感應器架構將其做為 HID 裝置使用。如需更多相關規定和驗證資訊,請參閱「空間音訊和頭部追蹤」。

本頁的規範適用於採用新空間音訊 API 和音訊架構的空間音訊解決方案,前提是使用搭載 Android 13 以上版本的 Android 手機,以及支援頭部追蹤感應器的耳機。

動態和靜態空間音訊模式實作指南

靜態空間音訊不需要頭部追蹤,因此頭戴式裝置不需要特定功能。所有有線和無線耳機都能支援靜態空間音訊。

API 實作

OEM 廠商必須實作 Android 12 中引進的 Spatializer 類別。實作項目必須通過為 Spatializer 類別引入的 CTS 測試

穩健的 API 實作可確保應用程式開發人員 (尤其是媒體串流服務) 能依賴生態系統中的一致行為,並根據裝置功能、目前的轉譯內容和使用者選擇,挑選最佳內容。

使用者介面

實作 Spatializer 類別後,請驗證 UI 是否具有下列行為:

  • 配對支援空間音訊的耳機後,這個耳機的藍牙裝置設定會顯示「空間音訊」切換按鈕:

    spatial-audio-ui

    圖 1. 空間音訊設定。

  • 這些設定會在耳機連線中斷時顯示。

  • 初次配對耳機後,空間音訊的預設狀態會設為「已啟用」

  • 無論使用者選取的狀態是啟用或停用,都會持續執行手機重新啟動或解除配對及配對耳機的作業。

功能行為

音訊格式

如果啟用空間音訊,且轉譯裝置為有線或藍牙耳機,「空間」效果「必須」轉譯下列音訊格式:

  • AAC,5.1 聲道
  • 原始 PCM,5.1 聲道

為了提供更優質的使用者體驗,我們強烈建議您支援下列格式/管道設定:

  • Dolby Digital Plus
  • 5.1.2、7.1、7.1.2、7.1.4 聲道

立體聲內容播放

即使已啟用空間音訊功能,也請勿透過空間化器效果引擎轉譯立體聲內容。如果導入方式允許立體內容空間化,則必須提供自訂 UI,讓使用者輕鬆開啟或關閉這項功能。啟用空間音訊後,必須能夠在播放空間化多聲道內容和非空間化立體聲內容之間轉換,且不必變更使用者設定、重新連線或重新設定耳機。空間音訊內容和立體聲內容之間的轉換過程,必須盡量減少音訊中斷。

用途轉換和並行

請按照下列方式處理特殊用途:

  • 通知必須與非空間音訊內容混合,方式與空間音訊內容相同。
  • 鈴聲必須可與空間音訊內容混合。不過,根據預設,音訊焦點機制會在有鈴聲時暫停空間音訊內容。
  • 接聽或撥打電話或視訊會議時,空間音訊播放必須暫停。通話結束後,空間音訊播放功能必須以相同的空間音訊設定繼續播放。重新設定音訊路徑,以便從空間音訊模式切換至對話模式,必須快速且無縫,才能不影響通話體驗。

透過揚聲器轉譯

不必支援透過揚聲器的音訊空間化功能,也就是跨耳模式

導入頭部追蹤功能的指南

本節將著重於動態空間音訊,這項功能有特定的耳機需求。

使用者介面

實作並配對空間音訊耳機後,請確認 UI 有下列行為:

  • 在藍牙裝置設定中,如果啟用耳機的空間音訊設定,空間音訊下方會顯示頭部追蹤設定:

    ht-ui

    圖 2. 空間音訊和頭部追蹤設定。

  • 停用空間音訊時,「頭部追蹤」設定「不會」顯示。

  • 初次配對耳機後,頭部追蹤功能的預設狀態會設為「已啟用」

  • 無論是啟用或停用,使用者選取的狀態必須在手機重新啟動或解除配對及配對耳機時持續存在。

功能行為

頭部姿勢回報

  • 從頭戴式裝置傳送至 Android 裝置的頭部姿勢資訊 (以 x、y 和 z 座標表示),必須快速且準確地反映使用者的頭部動作。
  • 透過藍牙連結回報頭部姿勢時,必須遵循 HID 中定義的通訊協定。
  • 只有在使用者在藍牙裝置設定 UI 中啟用頭部追蹤時,耳機才會將頭部追蹤資訊傳送至 Android 手機。

成效

回覆太慢

頭部追蹤延遲是指從慣性測量單元 (IMU) 擷取頭部動作到耳機轉換器偵測這項動作所造成的聲音變化所需的時間。頭部追蹤延遲時間不得超過 150 毫秒。

頭戴式裝置回報率

頭部追蹤功能啟用時,耳機必須以約 20 毫秒的建議週期回報頭部姿勢。為避免在藍牙傳輸抖動期間觸發手機上的陳舊輸入偵測邏輯,兩次更新之間的最大時間不得超過 40 毫秒。

電源最佳化

為了盡量節省電力,建議實作項目使用 audio HALBluetooth audio HAL 介面提供的 Bluetooth 轉碼器切換延遲模式選取機制。

音訊架構和藍牙堆疊的 Android 開放原始碼計畫實作已支援用於控制轉碼器切換的信號。如果原始設備製造商 (OEM) 的實作項目使用主要音訊 HAL 來處理藍牙音訊 (稱為「轉碼器卸載模式」),則原始設備製造商必須確保音訊 HAL 會在音訊 HAL 和藍牙堆疊之間轉送這些訊號。

轉碼器切換

在開啟動態空間音訊和頭部追蹤功能時,請使用低延遲轉碼器,例如 Opus。播放非空間音訊內容時,請使用低功耗轉碼器,例如進階音訊編碼 (AAC)

切換轉碼器時,請遵循下列規則:

  • 只追蹤下列音訊 HAL 輸出串流的活動:
    • 專屬空間化器輸出
    • 媒體專屬串流,例如深層緩衝或壓縮卸載播放功能
  • 當所有相關串流皆閒置且空間器串流開始時,請在 isLowLatency 設為 true 的情況下啟動藍牙串流,指定低延遲轉碼器。

  • 當所有相關串流處於閒置狀態且媒體串流開始時,請將 isLowLatency 設為 false,以便啟動藍牙串流,並指定低耗電編解碼器。

  • 如果媒體串流處於活動狀態,且空間化器串流已啟動,請將 isLowLatency 設為 true,重新啟動藍牙串流。

在耳機方面,耳機必須同時支援低延遲和低耗電量的解碼器,並實作標準的編解碼器選取通訊協定。

延遲模式調整

選取低延遲編解碼時,系統會調整延遲模式。

視頭部追蹤是否開啟而定,延遲模式調整會使用可用機制來縮短或增加延遲時間,在延遲時間、電源和音訊品質之間達到最佳效能。啟用空間音訊和頭部追蹤功能後,系統會選擇低延遲模式。啟用空間音訊且停用頭部追蹤時,系統會選取免費延遲模式。當系統只要求靜態空間音訊時,延遲調整功能可大幅節省電力,並提高藍牙音訊連結的穩定性。最常見的延遲調整機制,就是減少或擴大藍牙耳機中的抖動緩衝區大小。

如要調整 LE Audio 的延遲模式,請參閱「透過 LE Audio 進行頭部追蹤」一文。