Windows 10:音訊驅動程式的新功能
本主題提供 Windows 10 音訊新功能的高階摘要。
功能摘要
以下是 Windows 10 中的新音訊功能。
低延遲音訊改善
音訊延遲是建立聲音的時間和聽到聲音的時間之間的延遲。 對於數個主要案例而言,低音訊延遲非常重要,例如下列情況。
- Pro 音訊
- 音樂創作和混合
- Skype 等通訊
- 虛擬和擴增實境
- 遊戲
裝置的總延遲是下列元件的延遲總和:
- 作業系統
- 音訊處理物件
- 音訊驅動程式
- 音訊硬體
在 Windows 10 中,已完成工作以減少 OS 中的延遲。 若沒有任何驅動程式變更,Windows 10 中的應用程式將會經歷 4.5-16 毫秒的延遲。 此外,如果驅動程式已更新,以利用使用小型緩衝區處理音訊數據的新低延遲 DIS,則延遲將會減少更多。 如果驅動程序支援 3 毫秒的音訊緩衝區,則往返延遲為 ~10 毫秒。
音訊堆疊支援多個封包大小和動態封包大小,以根據使用者的案例優化延遲與電源之間的取捨。 此外,串流會優先處理,以確保高優先順序串流(例如通話)具有專用資源。
為了讓音訊驅動程式支援低延遲,Windows 10 提供下列 3 項新功能:
- [必要]宣告每個模式中支援的最小緩衝區大小。
- [選擇性,但建議]改善驅動程式與 OS 之間數據流的協調。
- [選擇性,但建議]註冊驅動程序資源(中斷、線程),以便在低延遲案例中受到OS的保護。 如需詳細資訊,請參閱 低延遲音訊。
訊號處理模式和音訊類別
訊號處理模式
驅動程式會為每個裝置宣告支援的音訊號處理模式。
音訊類別(由應用程式選取)會對應至音訊模式(由驅動程式定義)。 Windows 定義七種音訊號處理模式。 OEM 和 IHV 可以判斷要實作的模式。 下表摘要說明這些模式。
模式 | 轉譯/擷取 | 描述 |
---|---|---|
Raw | 兩者 | 原始模式指定不應該套用至數據流的任何訊號處理。 應用程式可以要求完全未觸及的原始數據流,並執行自己的訊號處理。 |
預設 | 兩者 | 此模式會定義預設音訊處理。 |
電影* | 轉譯 | 電影音訊播放 |
媒體* | 兩者 | 音樂音訊播放(大部分媒體串流預設) |
演講* | 擷取 | 人類語音擷取(例如 Cortana 的輸入) |
通信* | 兩者 | VOIP 轉譯和擷取 (例如 Skype、Lync) |
通知* | 轉譯 | 鈴聲、警示、警示等。 |
音訊設備驅動器至少需要支援Raw或Default模式。 支援其他模式是選擇性的。
語音、電影、音樂和通訊的專用模式。 音訊驅動程式將能夠根據數據流類型定義不同類型的音訊格式和處理。
音訊類別
下表顯示 Windows 10 中的音訊類別。
為了通知系統音訊數據流的使用方式,應用程式可以選擇以特定音訊串流類別標記數據流。 在 Windows 10 中,有九個音訊串流類別。
類別 | 描述 |
---|---|
電影* | 影片, 影片與對話框 (取代 ForegroundOnlyMedia) |
媒體* | 媒體播放的預設類別 (取代 BackgroundCapableMedia) |
遊戲聊天* | 使用者之間的遊戲內通訊 (Windows 10 中的新類別) |
演講* | 語音輸入 (例如個人助理) 和輸出 (例如瀏覽應用程式) (Windows 10 中的新類別) |
通訊 | VOIP,即時聊天 |
警示 | 警示、響鈴音、通知 |
音效 | 嗶聲、丁等 |
遊戲媒體 | 在遊戲音樂中 |
遊戲效果 | 球彈跳、汽車發動機音效、子彈等。 |
其他 | 未分類數據流 |
* Windows 10 的新功能。
如需詳細資訊,請參閱 音訊號處理模式 和 音訊處理物件架構。
硬體卸除的 APO 效果
Windows 10 支援硬體卸除的 APO 效果。 ADO 可以載入卸除針腳頂端。 這可讓音訊處理在軟體和硬體中完成。 此外,處理也可以動態變更。 當有足夠硬體資源時,部分或所有處理都可以從軟體 APO 移至 DSP,然後在在 DSP 中的負載增加時移回軟體 APO。
如需詳細資訊,請參閱 實作硬體卸除的 APO 效果。
Cortana 語音啟用 - 語音喚醒
Cortana 個人助理技術於 2013 年在 Microsoft BUILD 開發人員會議上首次展示。 語音啟用是一項功能,可讓使用者從各種裝置電源狀態叫用語音辨識引擎,方法是說出特定片語 -“Hey Cortana”。 「Hey Cortana」語音啟用 (VA) 功能可讓使用者使用其語音,在活動內容之外快速參與體驗(例如 Cortana)。 此功能是以螢幕關閉、閑置或完全作用中的案例為目標。 如果硬體支援緩衝處理,則使用者可以將關鍵片語和命令片語鏈結在一起。 這可改善使用者的語音體驗端對端喚醒。 如需詳細資訊,請參閱 語音啟用。
適用於音訊的 Windows 通用驅動程式
Windows 10 支援適用於電腦和 2:1 和適用於手機和小型螢幕平板電腦的 Windows 10 驅動程式模型。 這表示 IHV 可以在一個平台中開發其驅動程式,且該驅動程式可在所有裝置中運作(桌面電腦、膝上型電腦、平板電腦、手機)。 結果是縮短開發時間和成本。
若要開發通用音訊驅動程式,請使用下列工具:
- Visual Studio 2015:新的驅動程式設定可讓「目標平臺」設定為「通用」,以建立多平台驅動程式。
- APIValidator:這是 WDK 工具,可檢查驅動程式是否為通用,並醒目提示需要更新的呼叫。
- GitHub 中的音訊範例:sysvad 和 SwapAPO 已轉換為通用驅動程式。 如需 GitHub 範例程式代碼的詳細資訊和指標,請參閱 適用於音訊的通用 Windows 驅動程式。
音訊驅動程序的資源管理
在低成本行動裝置上建立良好音訊體驗的一個挑戰是,某些裝置具有各種並行限制。 例如,裝置可能只能同時播放最多 6 個音訊串流,而且只支援 2 個卸載數據流。 當行動裝置上有作用中電話時,裝置可能只支援 2 個音訊串流。 當裝置擷取音訊時,裝置最多只能播放 4 個音訊串流。
Windows 10 包含一種機制,可表達並行限制,以確保高優先順序音訊串流和行動電話通話能夠播放。 如果系統沒有足夠的資源,則會終止低優先順序數據流。 此機制僅適用於手機和平板電腦,不適用於桌面電腦或膝上型電腦。
如需詳細資訊,請參閱 音訊硬體資源管理。
音訊驅動程式的 PNP 重新平衡
PNP 重新平衡用於需要重新配置記憶體資源的特定PCI案例中。 在此情況下,會卸除某些驅動程式,然後在不同的記憶體位置重載,以建立免費的連續記憶體空間。 在兩個主要案例中可以觸發重新平衡:
- PCI 熱插機:使用者插入裝置,而PCI總線沒有足夠的資源可載入新裝置的驅動程式。 屬於此類別的一些裝置範例包括雷電、USB-C 和 NVME 儲存體。 在此案例中,記憶體資源必須重新排列和合併(重新平衡),以支援要新增的其他裝置。
- PCI 可重設大小的 BAR:在裝置的驅動程式成功載入記憶體後,它會要求其他資源。 裝置的一些範例包括高端圖形卡和存儲設備。 如需詳細資訊,請參閱 實作 PortCls 音訊驅動程式的 PnP 重新平衡。