共用方式為


Windows、Xbox 和 Hololens 2 應用程式開發人員的空間音效

注意

本檔是以開發人員對象為目標。 如需在裝置上啟用空間音效的終端用戶支援,請參閱 如何在 Windows 10中開啟空間音效。

Microsoft空間音效是Microsoft Xbox、Windows 和 HoloLens 2 上空間音效支援的平臺層級解決方案,可同時啟用環繞和提升(高於或低於接聽程式)音訊提示。Windows 桌面 (Win32) 應用程式以及支持平臺上的通用 Windows 平臺 (UWP) 應用程式可以利用空間音效。 空間音效 API 可讓開發人員建立從 3D 空間位置發出音訊的音訊物件。 動態音訊物件可讓您從空間中的任意位置發出音訊,這可能會隨著時間而變更。 您也可以指定音頻物件從17個預先定義的靜態通道 (8.1.4.4) 發出聲音,以代表實際或虛擬化的喇叭。 實際的輸出格式是由用戶選取,而且可以從空間音效實作Microsoft擷取;音訊將呈現給現有的喇叭、耳機和家庭影院接收器,而不需要任何程式代碼或內容變更。 平臺完全支援 HDMI 和立體聲耳機輸出的即時 Dolby Atmos 編碼、適用於耳機的 DTS:X,以及適用於立體聲耳機的 Windows Sonics 編碼。 最後,Microsoft空間音效應用程式遵守系統混合原則,而且其音訊也會與非空間感知應用程式混合。 Microsoft空間音效支援也整合到媒體基礎;使用媒體基礎的應用程式可以順利播放 Dolby Atmos 內容,而不需要其他實作。

具有Microsoft空間音效的空間音效支援支援 Dolby Atmos 的電視、家庭影院和音效列。 空間音效也可以與消費者可能擁有的任何一對耳機搭配使用,使用 Windows Sonic for Headphones、Dolby Atmos for Headphones 或 DTS 耳機:X 來轉譯平臺的音訊。

啟用空間音效Microsoft

無論是開發人員還是取用者,用戶都必須在其裝置上啟用Microsoft空間音效,才能聽到空間化的聲音。

窗戶

在 Windows 電腦上,這會透過指定音效輸出裝置的屬性頁面來完成。 從 [音效 控制面板],選取輸出裝置,然後按兩下 [裝置屬性] 。 在頁面的 [空間音效] 區段中,如果裝置支援空間音效,您可以從 [空間音效格式] 下拉式清單中選取其中一個可用的格式。

在聲音控制面板中啟用空間音效

您也可以在任務欄中以滑鼠右鍵按兩下 音量 圖示,以啟用Microsoft空間音效。

從任務列啟用空間音效

Xbox

在 Xbox 上,Microsoft 空間音效功能一律可供取用者使用,並透過 [一般 ] 下的 [設定] 應用程式啟用 -> 音量 & 音訊輸出

HDMI 音訊按鈕會填入音訊接收器 (AVR) 或聲條或直接連線到 Xbox 控制台的電視所支援的所有格式。 「光學音訊」選項僅適用於較舊的 Xbox 控制台,不適用於 Xbox Series X|S 和更新版本。

顯示 HDMI 音訊下拉式清單之 [一般音量 & 輸出設定] 頁面的螢幕快照。

請注意,如果尚未安裝,請在 HDMI 音訊中選取 [Dolby Atmos for home theater (HDMI only)] 或 [DTS:X for home theater (HDMI only)] 選項,將會提示用戶下載並安裝 Dolby Access 或 DTS Sound Unbound 應用程式。

[一般磁碟區 & 輸出設定] 頁面的螢幕快照,其中顯示 [DTS 數字環繞] 選取專案。

從 [耳機格式 ] 下拉式清單中選取 [Dolby Atmos for Headsets]、[DTS 耳機:X] 或 [Windows Sonic for Headsets] 下拉式清單 [頭戴式裝置音頻]

顯示耳機啟用空間音效的 [一般音量 & 輸出設定] 頁面的螢幕快照。

當Microsoft空間音效無法使用時(例如,播放內嵌膝上型膝上型計算機立體聲喇叭時,或使用者尚未明確啟用上述Microsoft Spatial Sound),ISpatialAudioClient::GetMaxDynamicObjectCount 傳回的可用動態物件數目將會是 0。

HoloLens 2

在 HoloLens 2 上,預設會啟用 Microsoft Spatial Sound,並使用專為適用於耳機的 Windows Sonic 而設計的硬體 DSP 卸除。

Microsoft空間音效和音訊中間件

許多應用程式和遊戲開發人員都使用第三方音頻轉譯引擎解決方案,這些解決方案通常包括複雜的撰寫和試鏡工具。 Microsoft已與其中幾個解決方案提供者合作,在現有的撰寫環境中實作 Microsoft Spatial Sound。 這通常表示此處討論的 API 會從應用程式的檢視中抽象化;它們會包裝為應用程式可以具現化的數位訊號處理(DSP)外掛程式,而 app 的音訊實作者可以視需要將它混合到Microsoft空間音效通道床、副混音或將個別語音傳送至動態物件實例外掛程式。 請洽詢音訊中間件解決方案提供者,以取得Microsoft空間音效的支援層級。

Microsoft音頻轉譯器的空間音效

許多音訊轉譯器的目標為 Windows 音訊工作階段 API (WASAPI) IAudioClient 端點,其中應用程式會將混合和格式的音訊數據緩衝區饋送至 WASAPI 音訊接收:接著會使用傳遞的緩衝區與其他客戶端、最終的系統層級處理和轉譯混合。

Microsoft空間音效空間端點會實作為 ISpatialAudioClient,其與 IAudioClient 有許多相似之處。 它支援 靜態 聲音物件形成通道床,支援最多 8.1.4.4 個通道(接聽程式周圍有 8 個通道 – 左、右、中、左、右和後置;1 個低頻率效果通道;接聽程式上方 4 個通道;接聽程式下方 4 個通道)。 而且它支援 動態 音效物件,它可以任意放置在 3D 空間中。

ISpatialAudioClient 的一般實作編碼模式為:

  • 建立靜態和/或動態音頻物件。
  • 將每個物件的音訊緩衝區饋送每個畫面,讓系統可以轉譯它。
  • 視需要更新動態物件的 3D 位置 - 應用程式所需的頻率 (或不常使用)。

請注意,目前的輸出格式(喇叭或耳機;適用於耳機的 Windows Sonics、Dolby Atmos 或 DTS 耳機:X) 是從上述實作中抽象的 – 應用程式開發人員可以專注於空間音效,而不需要根據格式進行樞紐分析。 想要其行為根據輸出格式而分裂的應用程式可以查詢使用中的格式,但抽象表示應用程式不需要處理這些格式。

Microsoft空間音效與音訊轉譯器整合

因為 ISpatialAudioClient 是取用數據的音訊接收,所以音訊轉譯器有數個選項可用來與音訊數據互動並傳遞音頻數據。 有三種常用的整合技術(針對使用音訊中間件的標題,您可能會看到根據這些選項提供的對等外掛程式):

  • 7.1.4 平移器和主控語音:已經支援 7.1 端點的轉譯器可以選擇只新增對 ISpatialAudioClient 靜態通道床支援的四個額外高度通道的支援。 他們先前所做的任何通道移動流覽(可能已經利用 x、y、z 座標)都可以更新為現在包含這些高度通道。 這通常為轉譯器和應用程式音訊工作流程、訊號、流程和混合控制提供最少的中斷。 在耳機上,請注意,完整的應用程式混合會空間化,因此即使是立體聲音樂也可能被視為來自接聽程式的「外部化」。
  • 維護現有的端點, 加上 7.1.4 巴士 (和 panners):某些標題可能會選擇維護兩個端點:其現有的立體聲 WASAPI 端點(用於“直接到耳朵”的內容,而不是空間化)與 ISpatialAudioClient 靜態通道床支援 7.1.4 (甚至高達 8.1.4.4)。 當然,在兩個混合之間管理互動對內容建立者來說,雖然會維護同步處理,因為指定時間作用中的WASAPI和ISAC實例確實使用相同的緩衝區大小和時鐘進行處理。
  • 針對特定聲音或副混音使用動態聲音物件:提供最詳細的/精確的定位,但可能建立混合不透明度,這項技術涉及使用 ISpatialAudioClient 動態音效物件。 請注意,元數據加上音頻緩衝區會傳遞至轉譯器,因此這些聲音會不透明到應用程式混合的其餘部分。 此外,由於可用的動態聲音物件數目有限,轉譯器必須考慮實作優先順序技術 – 撲殺、聲音共置、混合至靜態通道床等等。 遊戲經常將這項技術用於個人「英雄」的聲音,例如將四處移動的直升機在接聽程式上方。

轉譯器也可以混合和比對這些方法。

Microsoft空間音效運行時間資源含意

在 Windows 和 Xbox 上,可用的語音數目會根據使用中的格式而有所不同。 Dolby Atmos 格式支援 32 個作用中對象總計(因此,如果 7.1.4 通道床正在使用中,20 個額外的動態聲音物件可以使用)。 Windows Sonic for Headphones 支援 128 個使用中物件,低頻率效果 (LFE) 通道實際上不會算作物件 -- 因此當 8.1.4.4 通道床使用時,112 個動態音效物件可以使用。

針對在 Xbox One 遊戲機上執行的通用 Windows 平臺應用程式,即時編碼(適用於家用影院的 Dolby Atmos、適用於耳機的 Dolby Atmos、適用於家庭影院的 DTS:X、DTS 耳機:X 和 Windows Sonic for Headphones)在硬體中執行,不花費 CPU 成本。

從 2303 Xbox OS 更新和遊戲開發工具套件 (GDK) 開始,Xbox 上的資源限制會更新為下列值:

格式 最大靜態物件 (通道床) 最大動態物件
Xbox Series X|S、UWP app & >=2303 GDK
最大動態物件
Xbox 系列 X|S、XDK & <2303 GDK
最大動態物件
Xbox One
杜比·阿特莫斯家庭劇院 (HDMI) 12 (7.1.4) 20 20 20
DTS:X 家庭劇院 (HDMI) 17 (8.1.4.4) 20 20 16
杜比·阿特莫斯 (耳機) 17 (8.1.4.4) 128 20 16
DTS 耳機:X (耳機) 17 (8.1.4.4) 200 20 16
Windows 音速 (耳機) 17 (8.1.4.4) 220 20 15

從 Windows 組建 22621 的 5 月服務版本開始,Windows 上的資源限制會更新為下列值:

格式 最大靜態物件 (通道床) 最大動態物件
窗戶
最大動態物件
HoloLens 2
多爾比·阿特莫斯家庭劇院 (HDMI) 12 (7.1.4) 20 N/A
家庭影院的 DTS:X (HDMI) 17 (8.1.4.4) 32 N/A
杜比·阿特莫斯 (耳機) 17 (8.1.4.4) 128 N/A
Dolby Atmos (內建喇叭) 17 (8.1.4.4) 128 N/A
DTS 耳機:X (耳機) 17 (8.1.4.4) 128 N/A
DTS:X Ultra (內建喇叭) 17 (8.1.4.4) 128 N/A
Windows 音速 (耳機) 17 (8.1.4.4) 128 31

針對先前的 Windows、Xbox 和 HoloLens 版本,適用下列資源限制。

格式 最大靜態物件 (通道床) 最大動態物件
Xbox One
最大動態物件
窗戶
最大動態物件
HoloLens 2
杜比·阿特莫斯家庭劇院 (HDMI) 12 (7.1.4) 20 20 N/A
家庭影院的 DTS:X (HDMI) 17 (8.1.4.4) 16 32 N/A
杜比·阿特莫斯 (耳機) 17 (8.1.4.4) 16 16 N/A
Dolby Atmos (內建喇叭) 17 (8.1.4.4) N/A 16 N/A
DTS 耳機:X (耳機) 17 (8.1.4.4) 16 32 N/A
DTS Ultra (內建喇叭) 17 (8.1.4.4) N/A 32 N/A
適用於耳機的 Windows 音速 17 (8.1.4.4) 15 112 31

應用程式也應該考慮下列資源含意:

  • 記憶體/光碟带寬:預先撰寫到 7.1.4 的線性內容通常大於 7.1 線性內容(雖然感知編解碼器已經經常利用通道相互關聯,使這遠遠低於 50 個% 音頻數據的實際通道)
  • 其他數位訊號處理成本:某些先前的全球效果現在可能會成為每個動態音效對象的實例。 此外,某些內容建立者可能會想要更新某些 DSP 效果,以支援其他通道,或獨一無二地使用它們。

Microsoft空間音效和聲音空間化提示

Microsoft空間音效著重於在接聽程式周圍理想化球體上的音效定位模擬。 適用於耳機、DTS 耳機:X 和 Dolby Atmos 的 Windows Sonic 會實作喇叭對應和耳機虛擬化,但請注意,聲音空間仿真的許多其他層面,通常以內容建立者啟用的方式實作,都會留給現有的引擎。 內容建立者繼續使用現有的遊戲工具和程式,例如多普勒、距離型衰減和篩選、遮蔽和阻礙,以及環境殘響等空間提示。

其他資源

空間音效介面

介面 描述
ISpatialAudioClient 可讓用戶端建立從 3D 空間中位置發出音訊的音訊串流。
ISpatialAudioObject 表示 物件,提供相對於使用者從 3D 空間中的位置轉譯的音訊數據。
ISpatialAudioObjectRenderStream 提供控制空間音頻物件轉譯數據流的方法,包括啟動、停止和重設數據流。
ISpatialAudioObjectRenderStreamNotify 提供空間音訊客戶端回應 ISpatialAudioObjectRenderStream 狀態變更的通知。

 

注意

在 Xbox One 開發工具包 (XDK) 標題上使用 ISpatialAudioClient 介面時,您必須先 呼叫 enableSpatialAudio,再呼叫 IMMDeviceEnumerator::EnumAudioEndpointsIMMDeviceEnumerator::GetDefaultAudioEndpoint。 若無法這麼做,會導致從呼叫 Activate 傳回E_NOINTERFACE錯誤。 EnableSpatialAudio 僅適用於 XDK 標題,不需要針對在 Xbox One 上執行的通用 Windows 平台應用程式呼叫,也不需要針對任何非 Xbox One 裝置呼叫。

 

空間音效結構

結構 描述
SpatialAudioObjectRenderStreamActivationParams 表示空間音訊轉譯數據流的啟用參數。
SpatialAudioClientActivationParams 表示空間音訊轉譯數據流的選擇性啟用參數。

 

空間音效列舉

列舉 描述
AudioObjectType 指定 ISpatialAudioObject 的類型。