AEC 系統篩選

AEC 系統篩選 (Aec.sys) 會在軟體中實作聲場回應取消 (AEC) 和雜訊抑制 (NS) 演算法。 此篩選器是 Windows XP 和更新版本中的標準作業系統元件。 如需 DirectSoundCapture 應用程式如何使用 AEC 系統篩選器的資訊,請參閱Microsoft Windows SDK檔。

AEC 系統篩選準則所加加的條件約束

包含 AEC 系統篩選準則中實作之擷取效果的音訊篩選圖形受限於下列限制:

  • AEC 系統篩選器只能連接到處理 PCM 資料格式的針腳。

  • 擷取資料流程的位深度必須為 16 位,轉譯資料流程必須為 8 或 16 位。

  • AEC 系統篩選器會在 16 kHz 執行所有內部處理。 輸入和輸出資料流程會視需要轉換來源速率。

  • 在 Windows XP SP1、Windows Server 2003 和更新版本中,AEC 系統篩選的擷取和轉譯輸入針腳 (請參閱下圖) 必須具有相同的取樣速率,但擷取和轉譯輸出針腳的取樣速率可以獨立選取其他針腳。 擷取針腳的取樣速率可以依喜好設定) 16 kHz、48 kHz、44.1 kHz 或 8 kHz 的順序來 (。 (喜好設定順序是以處理時間和音訊品質為基礎。) 轉譯輸出針腳的取樣速率可以依喜好設定順序 () 16 kHz、48 kHz 或 44.1 kHz。 請注意,轉譯輸出針腳不支援 8 kHz 的取樣速率。

說明 AEC 系統篩選的針腳和連線的圖表。

  • AEC 和 NS 節點 (請參閱 公開 Hardware-Accelerated 擷取效果 中的圖表,) 只能處理單音串流。 例如,如果擷取資料流程是多重通道 (,) 則第一個以外的所有通道都會被忽略 (並捨棄) 。 只有單音串流可以由轉譯端處理。

  • 在 Windows XP SP1、Windows Server 2003 和更新版本中,此限制不存在。 AEC 系統篩選可正確處理擷取和轉譯資料流程時鐘之間的不符,而個別的裝置可用於擷取和轉譯。

  • 使用 AEC 系統篩選器時, SysAudio 系統驅動程式 會關閉混合的硬體加速、取樣速率轉換、3D 空間化等等。 所有串流混合都是在 KMixer 系統驅動程式的軟體模擬中完成。 這是必要的限制,以確保轉譯裝置播放的所有音訊都可以由 AEC 系統篩選器取消擷取資料流程。

  • 在圖形擷取端的 AEC 或 NS 節點之前,或在轉譯端的 AEC 或 NS 節點之後完成的任何訊號處理都必須是線性時間不變數。 在這些位置執行任何非線性或時間變化的訊號處理,可防止 AEC 取消擷取訊號中的回應。

  • AEC 篩選只會取消來自電腦中 AEC 篩選通道的回應。 透過未通過 AEC 之通道輸出的音訊不會回應取消。 非 AEC 音訊通道中的回應功能相當於在電腦旁辦公室的無線電上播放的音訊中回應。 AEC 無法取消 (,也不會對來自無線電或非 AEC 通道的) 回應有任何影響。

上述需求適用于所有核心串流音訊篩選圖形,其中包含在 Aec.sys 中實作的擷取效果。 這些限制反映 AEC 系統篩選設計與實作的基本假設。 資料流程格式的條件約束可能會在未來的 Windows 版本中變更。

任何使用 AEC 系統篩選的產品名稱都應該將上述條件約束納入考慮。 下列問題和解答顯示這些條件約束如何影響 AEC 篩選行為:

問:我已建立 DirectSound 緩衝區進行身歷聲轉譯,但在我使用 AEC 時,這兩個通道音效都相同。 為什麼?

答:AEC 僅適用于單聲道串流,因此 KMixer 會將身歷聲串流混回 mono,以符合此條件約束。

問:當我使用 AEC 時,為什麼我的 44-kHz、16 位音訊音效類似 16 kHz?

答:因為 AEC 系統篩選器會在 16 kHz 執行所有內部處理。

問:為什麼我無法使用 AEC 取得硬體加速的 DirectSound 緩衝區?

答:因為啟用 AEC 時,SysAudio 會關閉硬體加速混合。

問:AEC 系統篩選器是否可與我的舊音效 Blaster 16 記憶卡搭配運作?

答:是。 雖然 Sound Blaster16 記憶卡無法同時管理 16 位轉譯和擷取串流,但它可以同時管理 8 位轉譯資料流程和 16 位擷取資料流程,這是 AEC 系統篩選轉譯和擷取釘選支援的組合。 新的音訊卡應該設計為支援至少 16 位的位深度,以進行轉譯和擷取。

AEC 針腳的資料格式摘要

啟用 AEC 系統篩選器的 DirectSound 應用程式可以選擇其 DirectSound 緩衝任何取樣率或 KMixer 支援的樣本大小。 KMixer 會將資料從應用程式的轉譯緩衝區轉換成 16-kHz mono 16 位格式,再進入 AEC 系統篩選器。 同樣地,KMixer 可以將目的地為 DirectSoundCapture 應用程式擷取緩衝區的資料,轉換為 16-kHz mono 16 位格式,然後離開 AEC 系統篩選器。 不過,若要將圖形中完成的處理量降至最低,並達到最高的音訊品質,應用程式應該針對轉譯和擷取緩衝區使用 16-kHz 單聲道 16 位格式。

如果您想要音訊硬體使用 AEC 系統篩選器,則硬體轉譯針腳必須至少支援 AEC 轉譯輸出針腳支援的其中一個取樣速率,而硬體擷取針腳必須支援 AEC 擷取釘選所支援的其中一個取樣速率。 為了達到最佳的 AEC 效能,您的硬體除了支援的任何較高速率之外,還應該支援 16-kHz 取樣率。 藉由支援 16-kHz 速率,硬體可減少 AEC 系統篩選器必須執行的處理量,而不需要進行取樣速率轉換。

AEC 系統篩選的轉譯輸入釘選會連接到 KMixer 的輸出針腳。 KMixer 會執行其輸入資料流程所需的格式轉換成轉譯輸入釘選所需的格式。 轉譯輸入釘選僅支援兩種資料格式:

  • 16-kHz 單聲道 PCM 格式,樣本大小為 16 位

  • 16-kHz 單聲道 PCM 格式,樣本大小為 8 位

擷取輸出針腳僅支援一種格式:

  • 16-kHz 單聲道 PCM 格式,樣本大小為 16 位

如果 DirectSoundCapture 應用程式的緩衝區格式為 16-kHz mono 16 位 PCM,AEC 擷取輸出針腳可以略過 KMixer 並直接連線到 DSound.DLL (請參閱上圖) 。 否則,AEC 擷取輸出針腳會連接到 KMixer,這會將 16-kHz mono 16 位 PCM 資料流程從針腳轉換成應用程式擷取緩衝區所使用的任何格式。

AEC 轉譯輸出針腳可以處理下列任何格式:

  • 16-kHz 16 位 PCM 與兩個通道 (身歷聲)

  • 具有兩個通道的 16-kHz 8 位 PCM

  • 具有兩個通道的 48-kHz 16 位 PCM

  • 具有兩個通道的 48-kHz 8 位 PCM

  • 具有兩個通道的 44.1-kHz 16 位 PCM

  • 具有兩個通道的 44.1-kHz 8 位 PCM

轉譯輸出針腳會藉由將單一通道從 AEC 節點複製到輸出資料流程的兩個通道,以產生身歷聲資料流程。

擷取釘選可以處理下列任何格式:

  • 具有任意數目通道的 16-kHz 16 位 PCM

  • 具有任意數目通道的 48-kHz 16 位 PCM

  • 44.1-kHz 16 位 PCM,具有任意數目的通道

  • 具有任意數目通道的 8-kHz 16 位 PCM

擷取釘選只會使用第一個通道,並忽略 (並捨棄) 其他通道。

所有 AEC 系統篩選的針腳都會使用下表所示的資料格式參數值。

KSDATARANGE 成員 參數值

MajorFormat

KSDATAFORMAT_TYPE_AUDIO

SubFormat

KSDATAFORMAT_SUBTYPE_PCM

規範

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

如需 MajorFormatSubFormat規範 成員的詳細資訊,請參閱 KSDATARANGE。 如需使用這三個參數值的 KSDATARANGE_AUDIO 資料範圍描述元範例,請參閱 PCM 資料流程資料範圍