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 效果的软件仿真。

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

揭示 Hardware-Accelerated 捕获效应

AEC 系统筛选器