在 Windows Vista/7 中支持回声消除的 API

Posted

技术标签:

【中文标题】在 Windows Vista/7 中支持回声消除的 API【英文标题】:API for supporting Echo Cancellation in Windows Vista/7 【发布时间】:2011-04-27 19:38:16 【问题描述】:

在 2007 年,在 Windows Vista 中包含 DRM 的热潮期间,创建了一个 Windows Vista Team blog 来回应很多问题。其中一个问题是针对 VoIP 软件在 Windows Vista 上运行时执行回声消除的能力。

这是尼克·怀特在常见问题解答中所说的:

回声消除对优质内容的效果会降低吗?

我们相信 Windows Vista 为应用程序提供了对成功构建高质量回声消除功能的足够信息的访问权限。

Windows Vista 提供哪些信息以允许应用程序构建高质量的回声消除功能?

注意:阅读该声明后,我的印象是 Windows Vista 提供了足够的信息以允许应用程序成功构建高质量的回声消除功能。据推测,Windows 提供此信息的方式是通过 API。

回声消除的工作原理是对播放输出进行采样,然后从录制的麦克风输入中“减去”。

很遗憾,as MSDN notes,不能总是对播放输出进行采样:

Windows Vista 提供数字版权 管理(DRM)。内容提供者 依靠 DRM 保护他们的 专有音乐或其他内容 从未经授权的复制和其他 非法使用。 WASAPI 不允许 数字流的环回记录 包含受 DRM 保护的内容。 同样,受信任的音频驱动程序确实 不允许环回设备 捕获包含的数字流 受保护的内容。视窗 只允许受信任的驱动程序玩 受保护的内容。更多 有关受信任的驱动程序的信息和 DRM,请参阅 Windows DDK 文档。

大概这意味着使用 WASAPI 中的Loopback Mode 不是提供回声消除服务的预期方法。

什么是用于实现高质量回声消除的 API?

注意:这与我提出的另一个问题相关但独立:How to sample output audio mix?。这个问题是专门寻找 Window Vista 团队响应的扩展,即回声消除在 Windows 中是可能的。这个问题正在寻找 for API;它可以是一个单独的问题,即如何使用它。

谷歌搜索答案,我得到的印象是(在执行回声消除时)应用程序允许对受 DRM 保护的内容进行采样,但内容会降级 (即“足够的信息”)。这会使任何回声消除变得更糟,但仍有可能。

或者 Windows 团队是否暗示“在大多数情况下已经足够了,但在用户听歌或播放电影时却不是” - 实际上不可能成功构建高质量回声消除功能?


更新: 应该注意的是,我不是在寻找回声消除 API,而是在寻找对播放输出进行采样的 API——这是实现回声消除所需要的。当然,除非 Windows Vista 提供回声消除 API(这是他们继续保护高级内容的方式)。但我也没有看到回声消除 API。

【问题讨论】:

【参考方案1】:

http://msdn.microsoft.com/en-us/library/ff819492(v=VS.85).aspx

如果您正在寻找一个 API 来进行回声消除,看起来语音捕获 dsp 已经内置了对声学回声消除的支持。

示例: http://msdn.microsoft.com/en-us/library/dd443455(VS.85).aspx

【讨论】:

以上是关于在 Windows Vista/7 中支持回声消除的 API的主要内容,如果未能解决你的问题,请参考以下文章

回声消除技术

GB28181PJSIP库回声消除热拔插声音去抖

我如何在 Windows(xp、vista、7)欢迎屏幕或锁定屏幕(如 VNC 或 Dame Ware)中进行交互

技术分享| anyRTC回声消除算法进化

回声消除-理论篇

技术分享| anyRTC回声消除算法进化