實現高品質空間音訊和頭部跟踪

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 聲道

為了獲得更好的使用者體驗,我們強烈建議支援以下格式/通道配置:

  • 杜比數位+
  • 5.1.2、7.1、7.1.2、7.1.4 通道

立體聲內容播放

即使啟用了空間音頻,也不得透過空間效果引擎渲染立體聲內容。如果實作允許立體內容空間化,它必須提供一個自訂 UI,讓使用者輕鬆開啟或關閉此功能。啟用空間音訊後,必須能夠在空間化多聲道內容的播放之間轉換為非空間化立體聲內容,而無需更改使用者設定或耳機重新連接或重新配置。空間音訊內容和立體聲內容之間的轉換必須以最小的音訊中斷進行。

用例轉換和並發

處理特殊用例如下:

  • 通知必須以與非空間音訊內容相同的方式與空間音訊內容混合。
  • 必須允許鈴聲與空間音訊內容混合。然而,預設情況下,音訊焦點機制會在有鈴聲時暫停空間音訊內容。
  • 接聽或撥打電話或視訊會議時,空間音訊播放必須暫停。通話結束時,空間音訊播放必須以相同的空間音訊設定恢復。重新配置音訊路徑以從空間音訊模式切換到對話模式必須足夠快速且無縫地進行,這樣才不會影響通話體驗。

透過揚聲器渲染

不需要透過揚聲器支援音訊空間化或轉耳模式

頭部追蹤實施指南

本節重點介紹動態空間音頻,它具有特定的耳機要求。

使用者介面

在實作並配對具有空間音訊功能的耳機後,請驗證您的 UI 具有以下行為:

  • 在藍牙裝置設定中,啟用耳機的Spatial Audio設定後,頭部追蹤設定將出現在Spatial Audio下:

    ht-ui

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

  • 停用空間音訊時,頭部追蹤設定不可見。

  • 最初與耳機配對後,頭部追蹤的預設狀態設定為「啟用」

  • 使用者選擇的狀態(無論是啟用還是停用)必須在電話重新啟動或取消配對和配對耳機後持續存在。

功能行為

頭部姿勢報告

  • 從耳機發送到 Android 裝置的頭部姿勢資訊(以 x、y 和 z 座標表示)必須快速且準確地反映使用者的頭部運動。
  • 透過藍牙鏈路進行的頭部姿勢報告必須遵循透過HID定義的協議。
  • 只有當使用者在藍牙裝置設定 UI 中啟用頭部追蹤時,耳機才必須將頭部追蹤資訊傳送到 Android 手機。

表現

潛伏

頭部追蹤延遲定義為從慣性測量單元 (IMU) 捕捉頭部運動到耳機感測器偵測到該運動引起的聲音變化所需的時間。頭部追蹤延遲不得超過 150 毫秒。

頭部姿勢報告率

當頭部追蹤處於活動狀態時,耳機必須按照建議的大約 20 毫秒的周期報告頭部姿勢。為了避免在藍牙傳輸抖動期間觸發手機上的過時輸入偵測邏輯,兩次更新之間的最大時間不得超過 40 ms。

功耗優化

為了優化功耗,我們建議實現使用音訊 HAL藍牙音訊 HAL介面提供的藍牙編解碼器切換延遲模式選擇機制。

音訊框架和藍牙堆疊的 AOSP 實作已經支援控制編解碼器切換的訊號。如果 OEM 的實作使用藍牙音訊的主音訊 HAL(稱為編解碼器卸載模式) ,則 OEM 必須確保音訊 HAL 在音訊 HAL 和藍牙堆疊之間中繼這些訊號。

編解碼器切換

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

編解碼切換時遵循以下規則:

  • 僅追蹤以下音訊 HAL 輸出流上的活動:
    • 專用空間化器輸出
    • 媒體特定串流,例如深度緩衝或壓縮卸載播放
  • 當所有相關串流都空閒且空間化器流啟動時,啟動藍牙流並將isLowLatency設為true以指定低延遲編解碼器。

  • 當所有相關串流都空閒且媒體串流啟動時,啟動藍牙串流並將isLowLatency設為false以指定低功耗編解碼器。

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

在耳機方面,耳機必須同時支援低延遲和低功耗解碼器,並實現標準編解碼器選擇協定。

延遲模式調整

當選擇低延遲編解碼器時,會發生延遲模式調整。

根據頭部追蹤是開啟還是關閉,延遲模式調整使用可用的機制來減少或增加延遲,以達到延遲、功耗和音訊品質之間的最佳折衷。當啟用空間音訊並啟用頭部追蹤時,將選擇低延遲模式。當啟用空間音訊並停用頭部追蹤時,將選擇自由延遲模式。當僅請求靜態空間音訊時,延遲調整可顯著節省功耗並提高藍牙音訊鏈路的穩健性。最常見的延遲調整機制是減少或擴展藍牙耳機中的抖動緩衝區大小。