共用方式為


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 將立體聲流混合回單聲道以滿足此限制。

問:為什麼使用 AEC 時,我的 44 kHz、16 位音頻聽起來像 16 kHz?

答:因為 AEC 系統濾波器以 16 kHz 執行所有內部處理。

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

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

問:AEC 系統過濾器可以與我的舊 Sound Blaster 16 卡一起使用嗎?

答:是的。 雖然 Sound Blaster16 卡無法同時管理 16 位渲染和捕獲流,但它可以同時管理 8 位渲染流和 16 位捕獲流,這是 AEC 系統過濾器的渲染輸出和捕獲引腳支持的組合。 新的音訊卡應設計為支援至少 16 位元的位深度,以進行渲染和擷取。

AEC 引腳的資料格式摘要

啟用 AEC 系統篩選的 DirectSound 應用程式可以為其 DirectSound 緩衝區選擇 KMixer 支援的任何取樣速率或取樣大小。 KMixer 會在進入 AEC 系統篩選之前,將數據從應用程式的轉譯緩衝區轉換成 16 kHz 單聲道 16 位格式。 同樣地,KMixer 可以在數據離開 AEC 系統篩選之後,將其轉換為 DirectSoundCapture 應用程式擷取緩衝區所需的 16 kHz 單聲道 16 位格式。 不過,若要將圖形中完成的處理量降到最低,並達到最高的音訊品質,應用程式應該針對轉譯和擷取緩衝區使用 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 單聲道 16 位 PCM,則 AEC 擷取輸出針腳可以略過 KMixer 並直接連線到 DSound.DLL (請參閱上圖) 。 否則,AEC 擷取輸出針腳會連線到 KMixer,並將該針腳的 16 kHz 單聲道 16 位 PCM 資料流轉換成應用程式擷取緩衝區使用的任何格式。

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

  • 16 kHz 16 位元 PCM,具有兩個通道 (立體聲)

  • 16 kHz 8 位元 PCM,具有兩個通道

  • 48 kHz 16 位元 PCM,具有兩個通道

  • 48 kHz 8 位元 PCM,具有兩個通道

  • 44.1kHz 16 位元 PCM,具有兩個通道

  • 44.1kHz 8 位元 PCM,具有兩個通道

輸出針腳會藉由將單一通道從 AEC 節點複製到輸出數據流的兩個通道來產生立體聲數據流。

擷取輸入端可以處理下列任何格式:

  • 16 kHz 16 位元 PCM,具有任意數量的通道

  • 48 kHz 16 位元 PCM,具有任意數量的通道

  • 44.1 kHz 16 位元 PCM,具有任意數量的通道

  • 8 kHz 16 位元 PCM,具有任意數量的通道

擷取引腳僅使用第一個通道,忽略並丟棄其他通道。

所有 AEC 系統過濾器的引腳皆使用下表所示的資料格式參數值。

KSDATARANGE 成員 參數值

主要格式

KSDATAFORMAT_TYPE_AUDIO

SubFormat

KSDATAFORMAT_SUBTYPE_PCM

說明符

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

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