音訊架構概觀
除了可用於解碼、合成、轉譯和其他工作的一般 CPU 運算能力之外,XBOX One 還提供數個專用於音訊處理的硬體元件 (如圖 1 所示),這些元件可以定址整個統一記憶體空間。 圖 1. 硬體加速音訊元件的示意圖
- 可調整硬體音訊處理引擎 (SHAPE) 構成 XBOX One 上大部分的音訊功能,不過其他處理器也提供了重要的功能。
- 音訊控制處理器 (ACP) 提供狀態管理和排程。
- 音訊純量處理器 (ASP) 支援純量浮點數和向量整數運算。
- 音訊向量處理器 (AVP) 支援向量浮點數運算,主要設計用於多聲道回音消除 (MEC)。
SHAPE
SHAPE 是專用於音訊處理的核心硬體。SHAPE 會執行許多以每個語音為基礎通常需要的基本作業。使用 SHAPE,您可以降低 CPU 的負擔 (即使是高複音數和複雜的訊號路由也一樣),同時在遊戲選擇自訂處理數位訊號或執行分析或軟體合成時,仍能提供 SHAPE 與 CPU 之間資料交換的彈性。 SHAPE 以 128 個樣本的區塊運作,當 CPU 使用時,每個樣本支援 24 位元整數解析度或 32 位元浮點數。在 48 KHz 時,這代表 2.67 毫秒的音訊框架,相較於 XBOX 360 上的 256 個樣本區塊,可提供更高的計時解析度和更低的延遲。 SHAPE 提供下列六個專注於常見音訊工作的固定功能區塊。- XMA 解碼器 XMA 可同時解碼 512 個 XMA 格式的語音。這是為 XBOX 360 開發的感知編解碼器,提供使用者可調整的品質和壓縮率,壓縮率通常介於 6:1 到 14:1 之間。
- SRC 高品質、專用的多相取樣率轉換器 (SRC) 區塊,可對 512 個單聲道音訊資料進行高效能、高品質的頻率重新取樣。SRC 可用於格式轉換、都卜勒效應或音高變化。
- 混音緩衝區 混音緩衝區是 128 個就地混音聲道的專用累加器。它們不需要存取記憶體,而且總共有 8192 個虛擬可用的聲道。混音緩衝區也提供粗略的計量和削波偵測,以用於偵錯和監視。
-
FLTVOL
FLTVOL 模組為 2560 個語音或混音提供音量縮放和狀態變數篩選器的實作。它類似於 Windows 和 XBOX 360 上提供的軟體公開
XAudio2每個語音篩選器。此篩選器可以提供低通、高通、帶通和陷波篩選。此篩選器會公開 Q 和截止/中心頻率參數。它最常用於距離和遮蔽模型。 - EQ/CMP EQ/CMP 模組提供最多 512 個聲道的三頻段等化和動態範圍壓縮。EQ 由三個串聯的雙二階篩選器組成。壓縮器具有硬拐點回應,並支援側鏈和擴展器功能。
- DMA SHAPE 具有專用的直接記憶體存取 (DMA) 硬體,可在統一記憶體空間之間傳輸音訊資料。DMA 讓各種情境成為可能,例如在不使用取樣率轉換器的情況下傳輸、傳輸最終混音聲道,以及在以 SHAPE 為基礎的音訊圖形中間進行以 CPU 為基礎的處理。
ACP
ACP 為北橋上所有其他音訊硬體元件提供狀態管理和排程。不需要讓 CPU 參與框架內處理,也不需要承受其可能帶來的同步或延遲。ASP
ASP 支援純量浮點數和向量整數運算。硬體中提供了語音聊天編解碼器:包括管理語音聊天耳機與主機之間無線通訊的編解碼器,以及用來壓縮和解壓縮 SILK 編解碼器語音資料以進行網路語音通訊的編解碼器。AVP
AVP 支援向量浮點數運算,主要設計用於新一代 Kinect 音訊輸入的 MEC 和其他雜訊降低。AVP 支援語音辨識以及聊天/任意音訊輸入的使用。 MEC 和其他雜訊降低程序可提供更清晰易懂的使用者語音音訊資料串流,即使通話麥克風的位置比較靠近輸出喇叭而不是使用者也一樣。音訊與 XBOX One 硬體
XBOX One 上的音訊輸出管線去除了前一代主機中的數位類比轉換器 (DAC)。所有音訊都嚴格地以數位方式透過 HDMI 1.4a 或 S/PDIF 光纖輸出進行輸出。HDMI 1.4a 允許從主機傳輸高傳真、線性的 7.1 聲道脈衝碼調變 (PCM)。遊戲預設的輸出取樣率為 48 KHz,位元深度為 24 位元。XBOX One 也最多可支援同時輸出至四個立體聲耳機。每個輸出都可以代表獨特的多聲道混音,並根據輸出格式 (例如耳機或 S/PDIF 輸出) 的需求進行降混。 XBOX One 接受來自各種來源的音訊輸入,例如 Kinect 麥克風陣列、語音聊天耳機和雲端資源。此外,音訊可以透過以 CPU 為基礎的運算以演算法產生,並在 CPU 上、透過 SHAPE 硬體元件,或透過這兩種方法即時處理。壓縮格式
XBOX One 支援 XMA2 的硬體解壓縮,相較於未壓縮的 PCM,可大幅減少儲存空間、頻寬和記憶體。XAudio2 也針對 xWMA 和適應性差分脈衝碼調變 (ADPCM) 提供軟體解碼支援。雖然 ADPCM 格式的運算負擔很低,但 ADPCM 作為非感知編解碼器,在較低的取樣率下可能會出現明顯的失真。
xWMA 和 XMA2 都源自為 Windows Media Audio (WMA) 開發的編解碼器,而且兩者都是專為 XBOX 遊戲開發的。XMA2 所使用的可用編解碼器和參數子集比 xWMA 使用的子集小。雖然 xWMA 和 XMA2 都是為 XBOX 開發的,但兩者無法互換:每種檔案格式的標頭不同,而且這些格式與 PC 版本的 Windows 不相容。XMA2 和 xWMA 使用的編解碼器也略有不同,因此每一種都會因所使用的壓縮系統而產生各自的失真。
MP3、OGG 和其他用於遊戲資產的音訊格式,可以透過在 CPU 上執行的遊戲或中介軟體軟體編解碼器來提供。
音訊與 XBOX One 應用程式模型
在前景時,應用程式可以完整存取 SHAPE 硬體。不過,當應用程式被推入背景釘選、子母畫面或其他情境時,應用程式會放棄硬體控制權。根據預設,其硬體會暫停,並在遊戲返回前景時繼續。對於軟體圖形會暫停的獨佔資源應用程式 (ERA) 也是如此。 遊戲可以選擇卸除其音訊圖形,並在繼續時重新建構。某些遊戲,特別是播放背景音樂 (例如串流廣播) 的共用資源應用程式 (SRA),可能會選擇讓音訊的某些層面即使在暫停時也繼續播放。在這些情境中,遊戲應仔細評估是否要嘗試從硬體轉譯無縫轉換為軟體轉譯,或一律透過純軟體管線播放預定用於背景播放的音訊。這會影響壓縮格式和 CPU 成本。例如,XMA 壓縮的資產需要使用 SHAPE 硬體,因此背景應用程式將無法解碼。 對於選擇配置 CPU 資源的遊戲,XAudio2 音訊引擎為許多功能提供軟體路徑。在可行的情況下,這些功能會模擬硬體功能,但某些運算密集的處理在軟體中無法使用或以不同的方式實作。根據應用程式狀態從硬體處理轉換為軟體處理的遊戲,在規劃音訊管線時可能需要考慮這些差異,如下表所示。
| 功能| XBOX One 硬體功能 | XBOX One 軟體功能 | 是否相同? |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 取樣率轉換| SRC,多相| XAudio2 線性插補| 否 |
| 參數式 EQ| EQ/CMP,三頻段 EQ| 簡單的單頻段 EQ 或自訂數位訊號處理 (DSP)| 否 |
| 壓縮器/限制器| EQ/CMP,硬拐點、側鏈和擴展器功能| 自訂 DSP| 否 |
| 篩選| FLTVOL,狀態變數篩選器| XAudio2 狀態變數篩選器、單極 LPF 或自訂 DSP| 是 |
| 混音| 混音緩衝區;包括削波偵測和計量| 軟體混音;用於削波偵測和計量的自訂 DSP| 是,針對混音 |
XBOX One 音訊程式庫
XBOX One 支援兩種用於一般遊戲用途的音訊轉譯 API,以及用於播放使用者音樂的 Windows 8 Media Foundation API 變體。-
XAudio2是以遊戲為主的音訊程式庫,已可在 XBOX 360 和 Windows (從 Windows XP 到 Windows 8) 上使用。我們建議大多數遊戲的開發都使用XAudio2。 - Windows 音訊工作階段 API (WASAPI) 可用於任何自訂、完全以軟體實作的管線。WASAPI 只提供音訊端點功能。用戶端必須實作解壓縮、取樣率轉換、混音和數位訊號處理,以及與 XBOX One 上音訊硬體元件的互動。WASAPI 最常由音訊中介軟體解決方案使用。
XBOX One 環境不支援 Microsoft 跨平台音訊建立工具 (XACT) 和
DirectSound。先前使用這些技術的遊戲應考慮本主題中所列的解決方案,或使用經過核准的 XBOX One 音訊中介軟體選項。總結:立即開始使用
開始為 XBOX One 開發的遊戲內容建立者和實作者,在開始規劃時可以考慮下列事項。- 規劃 7.1 音訊。這包括預先轉譯和即時內容的平移與定位。考慮您的遊戲將如何使用每個音訊聲道。
- 探索並了解音訊壓縮選項。了解 XMA、xWMA 和 ADPCM 壓縮在聲音和大小上的差異。若要了解 XBOX One 上預期的預算目標,請評估內容的品質和位元速率設定。
- 考慮硬體加速 DSP 的使用模式,特別是當您的遊戲打算實作遮蔽或阻擋的模擬時。
