注意
本檔是以開發人員對象為目標。 關於啟用裝置空間音效的終端用戶支援,請參見如何在Windows 10開啟空間音效。
Microsoft 空間音效是 Microsoft 在 Xbox、Windows 及 HoloLens 2 上提供空間音效支援的平台層級解決方案,能同時支援環繞聲及視角(聽眾上方或下方)音訊提示。空間音效可被 Windows 桌面(Win32)應用程式以及支援平台上的 Universal Windows Platform (UWP) 應用程式利用。 空間音效 API 可讓開發人員建立從 3D 空間位置發出音訊的音訊物件。 動態音訊物件可讓您從空間中的任意位置發出音訊,這可能會隨著時間而變更。 您也可以指定音頻物件從17個預先定義的靜態通道 (8.1.4.4) 發出聲音,以代表實際或虛擬化的喇叭。 實際輸出格式由使用者選擇,且可從 Microsoft 空間音效實作中抽象化;音訊將呈現給現有喇叭、耳機及家庭劇院接收器,無需任何程式碼或內容變更。 該平台完全支援 HDMI 與立體聲耳機輸出的即時 Dolby Atmos 編碼、耳機的 DTS:X 編碼,以及立體聲耳機的 Windows Sonic 耳機編碼。 最後,Microsoft 空間音效應用程式遵守系統混音政策,其音訊也會與非空間感知的應用程式混音。 Microsoft 空間音效支援也整合於 Media Foundation 中;使用 Media Foundation 的應用程式可在無需額外實作的情況下成功播放 Dolby Atmos 內容。
Microsoft 空間音效 支援 Dolby Atmos 的電視、家庭劇院及音響條。 空間音效也可用於消費者擁有的任何耳機,平台透過 Windows Sonic for Headphones、Dolby Atmos for Headphones 或 DTS Headphone:X 來輸出音頻。
啟用 Microsoft 空間音效
無論是開發者或消費者,使用者都必須在其裝置上啟用 Microsoft 空間音效,才能聽到空間化的聲音。
Windows
在 Windows PC 上,這可以透過特定音效輸出裝置的屬性頁面來完成。 從 [音效 控制面板],選取輸出裝置,然後按兩下 [裝置屬性] 。 在頁面的 [空間音效] 區段中,如果裝置支援空間音效,您可以從 [空間音效格式] 下拉式清單中選取其中一個可用的格式。
你也可以在工作列右鍵點擊 Volume 圖示來Microsoft啟用空間音效。
Xbox
在Xbox中,Microsoft空間音效功能始終提供給消費者,並可透過General -> 音量與音訊輸出的Windows設定啟用。
HDMI 音訊按鈕會顯示由音訊視訊接收器(AVR)、音響條或直接連接到您的 Xbox 主機的電視所支援的所有格式。 「光纖音訊」選項僅在較舊的 Xbox 主機上提供,且不適用於 Xbox Series X|S 及以上版本。
請注意,如果尚未安裝,請在 HDMI 音訊中選取 [Dolby Atmos for home theater (HDMI only)] 或 [DTS:X for home theater (HDMI only)] 選項,將會提示用戶下載並安裝 Dolby Access 或 DTS Sound Unbound 應用程式。
從Headset audio 下拉選單中的 Headset format 選項選擇 Dolby Atmos for Headphones、DTS Headphone:X 或 Windows Sonic for Headphones。
當 Microsoft 空間音效不可用時(例如,在使用嵌入式筆電立體聲喇叭播放時,或使用者未明確啟用上述的 Microsoft 空間音效),ISpatialAudioClient::GetMaxDynamicObjectCount 回傳給應用程式的可用動態物件數量將為 0。
HoloLens 2
在 HoloLens 2 中,預設啟用 Microsoft 空間音效,並使用專為 Windows Sonic for Headphone 設計的硬體 DSP 卸載功能。
Microsoft 空間音效與音訊中介軟體
許多應用程式和遊戲開發人員都使用第三方音頻轉譯引擎解決方案,這些解決方案通常包括複雜的撰寫和試鏡工具。 Microsoft 已與多家這些解決方案供應商合作,在其現有的創作環境中實作 Microsoft Spatial Sound。 這通常意味著這裡討論的 API 會從應用程式的視圖中抽象出來;它們被封裝為數位訊號處理(DSP)外掛,應用程式可以實例化為,音訊實作者可以使用這些插件將音訊混合至 Microsoft 空間音效通道床、次混音,或者根據需要將個別聲音傳送至動態物件實例外掛。 請諮詢您的音訊中介軟體解決方案供應商,了解他們對 Microsoft 空間音效的支援程度。
Microsoft 空間音效音訊渲染器
許多音訊渲染器會針對Windows音訊會話 API(WASAPI)IAudioClient端點,應用程式將混合及格式化音訊資料的緩衝區送至 WASAPI 音訊匯流器;這些緩衝區隨後用於與其他用戶端混音、最終系統層級處理及渲染。
Microsoft 空間音效的空間端點實作為 ISpatialAudioClient,與 IAudioClient 有許多相似之處。 它支援 靜態聲音物件形成通道基座,可支援多達8.1.4.4個通道(聆聽者周圍有8個通道 – 左、右、中、左側、右側、後左、後右和後中; 1個低頻效果通道; 聆聽者上方4個通道; 聆聽者下方4個通道)。 而且它支援 動態 音效物件,它可以任意放置在 3D 空間中。
ISpatialAudioClient 的一般實作編碼模式為:
- 建立靜態和/或動態音頻物件。
- 將每個物件的音訊緩衝區饋送每個畫面,讓系統可以轉譯它。
- 根據應用程式的需求,隨時更新動態物件的3D位置,不論頻繁或不頻繁。
請注意,目前的輸出格式(喇叭或耳機;Windows Sonic for Headphones、Dolby Atmos 或 DTS Headphone:X)是從上述實作抽象出來的——應用程式開發者可以專注於空間音效,而不必因格式而調整。 想要其行為根據輸出格式而分裂的應用程式可以查詢使用中的格式,但抽象表示應用程式不需要處理這些格式。
Microsoft 空間音效與音訊渲染器的整合
因為 ISpatialAudioClient 是取用數據的音訊接收器,音訊轉譯器有多個選項可用於與其互動並傳遞音訊數據。 有三種常用的整合技術(針對使用音訊中間件的標題,您可能會看到根據這些選項提供的對等外掛程式):
- 7.1.4 平移器和主控語音:已經支援 7.1 端點的轉譯器可以選擇只新增對 ISpatialAudioClient 靜態通道床支援的四個額外高度通道的支援。 他們先前所做的任何通道移動流覽(可能已經利用 x、y、z 座標)都可以更新為現在包含這些高度通道。 這通常為渲染器和應用程式音訊工作流程、信號、流程及混音控制提供最小的干擾。 在使用耳機時,請注意,整個應用程式的音效會進行空間化處理,因此,即便是立體聲的音樂,也可能被感知為來自聽眾身外的聲音。
- 維護現有的端點,加上 7.1.4 總線(和聲道平衡器):某些標題可能會選擇維護兩個端點:其現有的立體聲 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 Headphone:X 和 Windows Sonic 耳機)皆在硬體上執行,且不占用 CPU 資源。
自 2303 Xbox OS 更新及遊戲開發套件(GDK)起,Xbox 的資源限制更新為以下數值:
| 格式 | 最大靜態物件 (通道床) | 最大動態物件 Xbox Series X|S,UWP 應用程式 & >=2303 GDK |
最大動態物件 Xbox Series 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 Headphone:X (耳機) | 17 (8.1.4.4) | 200 | 20 | 16 |
| Windows Sonic(耳機) | 17 (8.1.4.4) | 220 | 20 | 15 |
從 5 月的 Windows 22621 服務版本開始,Windows 的資源限制更新為以下數值:
| 格式 | 最大靜態物件(信道床) | 最大動態物件数量 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 Headphone:X(耳機) | 17 (8.1.4.4) | 128 | N/A |
| DTS:X Ultra (內建喇叭) | 17 (8.1.4.4) | 128 | N/A |
| Windows Sonic(耳機) | 17 (8.1.4.4) | 128 | 31 |
對於先前的 Windows、Xbox 和 HoloLens 版本,適用以下資源限制。
| 格式 | 最大靜態物件 (通道床) | 最大動態物件 Xbox One |
最大動態物件 Windows |
最大動態物件 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 Sonic 耳機版 | 17 (8.1.4.4) | 15 | 112 | 31 |
應用程式也應該考慮下列資源含意:
- 存儲/光碟帶寬:預先構建的 7.1.4 線性內容通常會大於 7.1 線性內容(儘管感知編碼器經常利用通道間的相關性,這使得音頻數據的實際通道數量遠低於多出 50% 的情況)
- 其他數位訊號處理成本:某些先前的全球效果現在可能會針對每個動態音效對象實例化。 此外,某些內容建立者可能會想要更新某些 DSP 效果,以支援其他通道,或獨一無二地使用它們。
Microsoft 空間音效與聲音空間化提示
Microsoft 空間音效專注於在聽眾周圍理想化的球體上進行聲音定位模擬。 Windows Sonic for Headphones、DTS Headphone:X 和 Dolby Atmos 都將喇叭映射與虛擬化應用於耳機,但請注意,許多聲音空間模擬的部分,通常已以內容創作者支援的方式實現,仍交由現有引擎完成。 內容建立者繼續使用現有的遊戲工具和程式,例如多普勒、距離型衰減和篩選、遮蔽和阻礙,以及環境殘響等空間提示。
其他資源
- Microsoft空間音效範例 github repository
- Dolby 提供多項與 Dolby Atmos 及 Dolby Access 應用程式相關的支援資源,包括 應用程式開發知識庫 與 Dolby Access 支援。
空間音效介面
| 介面 | 描述 |
|---|---|
| ISpatialAudioClient | 可讓用戶端建立從 3D 空間中位置發出音訊的音訊串流。 |
| ISpatialAudioObject | 表示一個能提供相對於使用者位置,在3D空間中呈現的音訊資料的物件。 |
| ISpatialAudioObjectRenderStream | 提供控制空間音頻物件轉譯數據流的方法,包括啟動、停止和重設數據流。 |
| ISpatialAudioObjectRenderStreamNotify | 提供空間音訊客戶端回應 ISpatialAudioObjectRenderStream 狀態變更的通知。 |
注意
在Xbox One開發套件(XDK)標題中使用ISpatialAudioClient介面時,必須先呼叫 EnableSpatialAudio,再呼叫 IMMDeviceEnumerator::EnumAudioEndpoints 或 IMMDeviceEnumerator::GetDefaultAudioEndpoint。 未能這麼做將導致呼叫 Activate 時返回 E_NOINTERFACE 錯誤。 EnableSpatialAudio 僅適用於 XDK 遊戲,且對於運行於 Xbox One 上的通用 Windows 平台應用程式,以及任何非Xbox One裝置,無需呼叫。
空間音效結構
| 結構 | 描述 |
|---|---|
| SpatialAudioObjectRenderStreamActivationParams | 表示空間音訊轉譯數據流的啟用參數。 |
| SpatialAudioClientActivationParams | 表示空間音訊轉譯數據流的選擇性啟用參數。 |
空間音效列舉
| 列舉 | 描述 |
|---|---|
| AudioObjectType | 指定 ISpatialAudioObject 的類型。 |