DirectSound 捕获效果

DirectSound 8 添加了一些新功能,用于在音频捕获期间启用和控制第三方效果。 此版本和更高版本的 DirectSound 支持以下两个捕获效果:

  • 回声消除 (AEC)

  • 噪声抑制 (NS)

在电话会议等全双工音频应用程序中,通过扬声器输出的呈现流回声将在生成捕获流的麦克风中拾取。 在对房间或其他物理环境中的声音反射进行特征化后,全双工系统使用 AEC 监视呈现流,以消除它添加到捕获流的回声。 系统可以使用 NS 检测噪音尖峰并将其从流中移除,从而进一步提高捕获流的质量。

全双工 DirectSound 应用程序可以使用 IDirectSoundCaptureFXAecIDirectSoundCaptureFXNoiseSuppress 接口来控制 AEC 和 NS 效果。 IDirectSoundCaptureBuffer::GetObjectInPath 方法会检索指向具有这些接口的对象的指针。 DirectSoundFullDuplexCreate 函数会创建 IDirectSoundCaptureBuffer 对象,调用方传递给此函数的参数包括 DSCEFFECTDESC 结构的数组。 该数组指定要在捕获缓冲区中启用的效果。 数组中每个结构的 guidDSCFXClass 成员包含指定以下效果的 GUID:AEC 或 NS。 下表显示了每个 GUID 的 DirectSound 名称,以及相同 GUID 值的 KS 名称。 有关详细信息,请参阅 DirectX 8.0 SDK 文档。

DirectSound GUID 名称 KS GUID 名称

GUID_DSCFX_CLASS_AEC

KSNODETYPE_ACOUSTIC_ECHO_CANCEL

GUID_DSCFX_CLASS_NS

KSNODETYPE_NOISE_SUPPRESS

在 Microsoft Windows XP 及更高版本中,你可以向 DirectSound 应用程序公开音频设备的硬件加速捕获效果。 此外,AEC 系统筛选器 (Aec.sys) 还提供 AEC 和 NS 效果的软件仿真。

本节的其余部分将讨论这些主题:

公开硬件加速捕获效果

AEC 系统筛选器