> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 音訊概觀

> 音訊概觀

電子遊戲會調動使用者的三種感官：視覺、觸覺和聽覺。充分運用使用者的聽覺非常重要。設計良好的音訊有助於引發使用者更有意義的回饋，並有助於敘述故事及喚起情感。

為了確保您的遊戲擁有最佳音效，請在平台上使用下列項目。

* 一般功能，例如環繞音效和硬體加速
* 特定功能，例如降混 (fold-down，也稱為 *downmixing*) 和類別壓低 (ducking)

使用本主題中的資訊，為您的遊戲打造最佳的音訊體驗。

* [XBOX 和 Windows 10 上的音訊類別](/zh-TW/build/console-features/audio/overviews/audio#ID_CATEGORIES)
* [語音聊天](/zh-TW/build/console-features/audio/overviews/audio#ID_VOICECHAT)
* [端點相容性](/zh-TW/build/console-features/audio/overviews/audio#ID_ENDPOINT)
* [用戶端的限制](/zh-TW/build/console-features/audio/overviews/audio#ID_LIMITS)
* [從 PC 執行](/zh-TW/build/console-features/audio/overviews/audio#ID_RFPC)

***

<a id="ID_CATEGORIES" />

## XBOX 和 Windows 10 上的音訊類別

本節說明平台如何壓低 (衰減) 您遊戲的音訊。透過為某個音效或一組音效指定音訊類別，您可以叫用系統層級的優先順序規則，以達到清晰的音效和功能豐富的使用者體驗。

### 範例

* 使用者可以選擇自己的背景音樂串流。使用此選項時，遊戲內的配樂應變得聽不見。

* 某些系統層級的通知 (例如 XBOX 成就通知) 對使用者非常重要，並能讓系統上所有遊戲的體驗保持一致。這些音效會壓低 (衰減) 您遊戲的主混音。

* 遊戲可能要求使用者的即時語音來源 (例如 Game Chat 和 Party Chat) 永遠能蓋過預先錄製的遊戲內對話而被聽見。您可以透過管理音訊優先順序來輔助遊戲體驗。

下列程式碼範例顯示您可以指派和管理的音訊類別。

```cpp theme={null}
typedef enum _AUDIO_STREAM_CATEGORY {  
    AudioCategory_Other = 0,  
    AudioCategory_Communications,  
    AudioCategory_Alerts,  
    AudioCategory_SoundEffects,  
    AudioCategory_GameEffects,  
    AudioCategory_GameMedia,  
    AudioCategory_GameChat,  
    AudioCategory_Speech,  
    AudioCategory_Movie,  
    AudioCategory_Media  
} AUDIO_STREAM_CATEGORY;  
```

如需包含常數和呼叫的相同清單，請參閱 Microsoft Docs 上的 [AUDIO\_STREAM\_CATEGORY 列舉](https://learn.microsoft.com/windows/desktop/api/audiosessiontypes/ne-audiosessiontypes-audio_stream_category)。該文章是以開發人員為導向、深入探討此技術的內容。

如需您的遊戲如何設定類別的具體資訊，請依據您的實作參閱 WASAPI [SetClientProperties](https://learn.microsoft.com/windows/win32/api/audioclient/nf-audioclient-iaudioclient2-setclientproperties) 方法或 XAudio2 [CreateMasteringVoice](https://learn.microsoft.com/windows/win32/api/xaudio2/nf-xaudio2-ixaudio2-createmasteringvoice) 方法。

***

<a id="ID_VOICECHAT" />

## 語音聊天

XBOX 是最具社交互動性的平台之一，部分原因在於其聊天功能。

若要增強多人遊戲中的體驗：

* 確保 Game Chat 中使用者的語音永遠不會與 Party Chat 中的使用者混在一起。
* 確保使用者的語音*永遠*能蓋過遊戲內的音訊混音而被聽見。

若要管理音訊優先順序和動態混音，請為您的擷取串流使用音訊類別 `AudioCategory_GameChat`。在 XBOX 上為擷取串流設定對應的類別，可保證已在通訊頻道中的使用者擁有麥克風優先權。請注意，使用 XBOX 提供的 API (例如 Game Chat 2 或 PlayFab Party) 會自動為您標記擷取串流。

如需如何得知何時建立 GameChat 音訊擷取串流的範例，請參閱 [CreateCaptureAudioStateMonitor](/zh-TW/reference/audio/audiostatemonitor/functions/createcaptureaudiostatemonitor)。

### Game DVR 和廣播

語音聊天應視為使用者產生的內容，其中可能包含個人識別資訊或其他潛在的敏感資料。因此，使用者在遊戲聊天中轉譯的語音絕不應包含在任何錄製的剪輯或遊戲擷取中。若要做到這一點，可以為包含使用者語音的轉譯串流指派適當的音訊類別 `AudioCategory_GameChat`。這會對串流加上對應的標記，讓系統知道在為 Game DVR 剪輯進行擷取時忽略此音訊串流。

### Game Chat

使用 Game Chat 2 可輕鬆為您的遊戲新增語音和文字聊天通訊，同時遵守使用者的隱私權設定，並滿足與語音和文字聊天相關的 XBOX 主機 Microsoft Game Development Kit (GDK) 遊戲需求。

如需詳細資訊，請參閱[使用 Game Chat 2 C++ API](/zh-TW/services/xbox-services/multiplayer/chat/game-chat2/using-game-chat-2)。

***

<a id="ID_ENDPOINT" />

## 端點相容性

使用者的家庭環境各不相同。例如，有些使用者透過耳機聆聽，有些則透過精心配置的喇叭聆聽。因此，請確保您的遊戲支援立體聲、環繞音效和空間音效。

XBOX 平台以 48KHz 取樣率處理所有音訊。為了獲得最佳品質和效能，請確保透過核心音訊 API 處理的所有音訊都使用此取樣率。

XBOX 平台讓達成端點相容性相對容易。您只需撰寫一次程式碼，就能以最少的遊戲端工作，讓音訊在任何使用者設定上都能良好播放。

### 處理不同的聲道數

XBOX 平台回傳給遊戲的資訊高度貼近實際情況。因此，您可以進行更精確的降混，最終產生最具臨場感的體驗。例如，如果使用者的音訊設定是在房間中轉譯 5.1 音訊，XBOX 平台就會向您的遊戲要求 5.1 音訊。2.0 和 7.1 喇叭設定也是如此。如果空間音訊是透過立體聲耳機轉譯，XBOX 平台會向您的遊戲要求 7.1 音訊。

遊戲必須支援在執行期間於這些使用者格式之間切換。使用者可能會插入耳機或開啟聲霸，促使 XBOX 重新計算遊戲必須提供的聲道數。發生這種情況時，遊戲會在 [WASAPI](https://learn.microsoft.com/windows/win32/coreaudio/recovering-from-an-invalid-device-error) 和 [ISACAPI](https://learn.microsoft.com/windows/win32/coreaudio/recovering-from-an-invalid-device-error-spatial-sound) 中收到無效裝置錯誤。如需這些 XBOX 特有錯誤的詳細資訊，請參閱 [XDK 與 GDK 音訊的比較](/zh-TW/build/console-features/audio/overviews/comparison-of-xdk-and-gdk-audio-api)。

雖然建議遊戲提供符合使用者喇叭設定的音訊，但 Windows 音訊工作階段 API (WASAPI) 在內部支援聲道數的升混/降混。若要使用此功能，請在初始化音訊用戶端時提供旗標 `AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM`。使用此旗標時，遊戲應一律提供 7.1 聲道音訊，以確保擁有環繞音效系統的使用者能持續獲得具臨場感的體驗。如需可用串流旗標的詳細資訊，請參閱 [AUDCLNT\_STREAMFLAGS\_XXX 常數](https://learn.microsoft.com/windows/win32/coreaudio/audclnt-streamflags-xxx-constants)。

進行降混時，XBOX 會使用下列以 AC-3 標準為基礎的係數：

**7.1 至立體聲**

| 來源 | 左 | 右 |
| - | - | - |
| 左前 | 0 dB | -∞ dB |
| 右前 | -∞ dB | 0 dB |
| 中央 | -3 dB | -3 dB |
| LFE | -∞ dB | -∞ dB |
| 左環繞 | -3 dB | -∞ dB |
| 右環繞 | -∞ dB | -3 dB |
| 左後 | -3 dB | -∞ dB |
| 右後 | -∞ dB | -3 dB |

**5.1 至立體聲**

| 來源 | 左 | 右 |
| - | - | - |
| 左前 | 0 dB | -∞ dB |
| 右前 | -∞ dB | 0 dB |
| 中央 | -3 dB | -3 dB |
| LFE | -∞ dB | -∞ dB |
| 左環繞 | -3 dB | -∞ dB |
| 右環繞 | -∞ dB | -3 dB |

**7.1 至 5.1**
<Note>與 AC-3 標準不同</Note>

| 來源 | 左 | 右 | 中央 | LFE | 左環繞 | 右環繞 |
| - | - | - | - | - | - | - |
| 左前 | 0 dB | -∞ dB | -∞ dB | -∞ dB | -8.35 dB | -∞ dB |
| 右前 | -∞ dB | 0 dB | -∞ dB | -∞ dB | -∞ dB | -8.35 dB |
| 中央 | -∞ dB | -∞ dB | 0 dB | -∞ dB | -∞ dB | -∞ dB |
| LFE | -∞ dB | -∞ dB | -∞ dB | 0 dB | -∞ dB | -∞ dB |
| 左環繞 | -∞ dB | -∞ dB | -∞ dB | -∞ dB | 0 dB | -∞ dB |
| 右環繞 | -∞ dB | -∞ dB | -∞ dB | -∞ dB | -∞ dB | 0 dB |
| 左後 | -∞ dB | -∞ dB | -∞ dB | -∞ dB | -0.9 dB | -7.25 dB |
| 右後 | -∞ dB | -∞ dB | -∞ dB | -∞ dB | -7.25 dB | -0.9 dB |

### 空間音效的端點

如需空間音效及其使用方式的詳細資訊，請參閱 Microsoft Docs 上的[空間音效](https://learn.microsoft.com/windows/desktop/coreaudio/spatial-sound)。

請在程式碼中選擇下列兩種音訊轉譯路徑之一。

#### Windows 音訊工作階段 API (WASAPI)

WASAPI 是預設呼叫，提供環繞和立體聲體驗。WASAPI 自 XBOX 360 起即已存在。

#### 互動式空間音訊用戶端 API (ISACAPI)

ISACAPI 是我們的空間音效轉譯器。使用 ISACAPI 可在使用者周圍加入以高度為基礎的音訊 (透過頭部相關傳輸函數 (HRTF))，並透過耳機、PC 內建喇叭或外部 HDMI 解碼器 (例如 Dolby Atmos AVR) 轉譯音訊。您可以將音效、音效群組或整個混音傳送至 ISACAPI。

除了分別使用 WASAPI 或 ISACAPI 之外，您也可以根據需求和偏好，在遊戲中混合搭配這兩種轉譯器路徑。

使用者可以從音訊設定功能表中選取空間格式。XBOX 支援下列格式。

* **Windows Sonic：** 耳機 HRTF
* **Dolby Atmos：** 耳機 HRTF、內建喇叭及 HDMI AVR
* **如何採用空間音效：** 請參閱中介軟體一節
* **GoldenEar：** 直達耳朵的結果，以及有關音色渲染的指引

以下是常見的空間化或非空間化內容範例。

* **空間化：** 環境音效、以位置為基礎的音效，以及遊戲世界中的劇情內音樂來源
* **非空間化：** 環繞或立體聲、UI/UX 和抬頭顯示器 (HUD) 覆疊的 2D 音效，以及配樂 (通常是具有靜態聲像定位的立體聲或四聲道)

***

<a id="ID_LIMITS" />

## 建立音訊用戶端的限制

在 XBOX 平台上，作用中的事件型音訊或空間音訊用戶端總數有 30 個的硬性限制。達到此限制後建立的用戶端將在初始化時失敗並傳回 E\_OUTOFMEMORY。此外，所有用戶端使用的緩衝區空間總計有 1 MB 的緩衝區大小限制。如果達到此限制，後續的用戶端初始化將失敗並傳回 E\_OUTOFMEMORY，直到其他用戶端被終結為止。

***

<a id="ID_RFPC" />

## 音訊與「從 PC 執行」

在 XBOX One 平台上，使用「從 PC 執行」功能可能會導致音訊出現大量異常。
因此，不建議遊戲在使用「從 PC 執行」時於 XBOX One 主機上測量音訊效能。在
XBOX Series 主機上，發生異常的可能性較低，但仍有可能。

## 參考 API 文件

* [AudioStateMonitor (API 內容)](/zh-TW/reference/audio/audiostatemonitor/audiostatemonitor_members)
  * 函式
    * [CreateCaptureAudioStateMonitor](/zh-TW/reference/audio/audiostatemonitor/functions/createcaptureaudiostatemonitor)

## 另請參閱

[音訊](/zh-TW/build/console-features/audio/gc-audio-toc)
[聊天](/zh-TW/services/xbox-services/multiplayer/chat/gc-chat-toc)
[空間音效概觀](/zh-TW/build/console-features/audio/overviews/spatial-audio-overview)
[WASAPI](/zh-TW/build/console-features/audio/overviews/wasapi-overview)


## Related topics

- [服務 C API 概觀 - PFLocalization.h](/zh-TW/services/playfab/api-references/c/pflocalization/pflocalization_members.md)
- [服務 C API 概觀 - PFStatistics.h](/zh-TW/services/playfab/api-references/c/pfstatistics/pfstatistics_members.md)
- [服務 C API 概觀 - PFLeaderboards.h](/zh-TW/services/playfab/api-references/c/pfleaderboards/pfleaderboards_members.md)
- [服務 C API 概觀 - PFPlatformSpecific.h](/zh-TW/services/playfab/api-references/c/pfplatformspecific/pfplatformspecific_members.md)
- [服務 C API 概觀 - PFStatisticsTypes.h](/zh-TW/services/playfab/api-references/c/pfstatisticstypes/pfstatisticstypes_members.md)
