停用硬件噪音抑制

在 Chrome 64 中,我们正在尝试为启用了 echoCancellation 约束条件的 getUserMedia 音频流实现一种新行为。新变化是,此类音频流将在音频流期间暂时停用硬件噪声抑制功能。我们预计这会使回声消除器的性能得到提升。由于此功能处于实验阶段,因此需要明确启用;请参阅下文

目前,只有某些输入设备和 macOS 支持此行为。支持仅限于在系统偏好设置声音面板中具有可切换的“环境降噪”功能的设备。

背景

回声消除器会尝试从麦克风接收的音频信号中移除音响系统播放的声音。否则,您所说的通话中的一方的内容将由另一方的麦克风接收,然后发回给您。你会听到自己的回声!

为了成功消除回声,WebRTC 的回声消除器(在 Chrome 中使用)需要从麦克风获取尽可能干净的音频信号。在音频到达回声消除器之前应用的处理(例如硬件噪声抑制)通常会妨碍其性能。此外,已经有软件噪音抑制功能,但仅在回声消除器完成处理之后。

新行为的详情

Web 开发者可以通过选择加入源试用计划来在其网站上启用新行为。最终用户可以在启动 Chrome 时通过传递命令行标志来全局启用它。如需了解详情,请参阅下文

启用此功能后,当网页调用 getUserMedia 以从输入设备获取音频时,会发生以下情况:

  • 如果启用了 echoCancellation 约束条件,系统会在新创建的音频流期间关闭硬件噪声抑制功能。

  • 由于此设置是系统范围内的,因此将应用于来自同一设备(即同一麦克风)的所有音频输入流。

  • 最后一个需要关闭硬件噪声抑制的视频流关闭后,硬件噪声抑制便会重新开启。

  • 如果事先已停用硬件噪声抑制功能,Chrome 将不会更改其状态。

  • 如果在未启用 echoCancellation 的情况下调用 getUserMedia,Chrome 将不会触摸硬件噪声抑制功能。

由于此设置也由用户控制,因此系统会与用户进行一些特定的互动:

  • 如果 Chrome 已关闭硬件降噪功能,而用户又重新开启了该功能,Chrome 将不会尝试再次为该音频串流停用该功能。

  • 如果 Chrome 已关闭硬件噪声抑制功能,并且用户重新开启它后又将其关闭,那么当音频流结束后,Chrome 仍会重新启用它。

只需启用实验,此行为就会生效。无需更改 API。

如何启用实验

若要让您的网站能够实现这种新行为,您需要注册“停用硬件噪声抑制”源试用。如果您只想在本地试用,也可以在命令行中启用该功能:

chrome --enable-blink-features=DisableHardwareNoiseSuppression

在命令行中传递此标志会为当前会话全局启用该功能。

我们希望通过这个实验评估以下几个方面:

  • 就实际情况而言,开启和关闭硬件噪声抑制之间的定性差异。

  • 在 Chrome 中更改此设置对最终用户以及他们可能运行的其他软件有何影响?

我们非常期待针对这两个方面提供反馈。启用此功能后,通话质量是好还是差?实现是否存在会导致意外行为的问题?在任何情况下,如果您正在试用此版本,欢迎随时提交有关此 bug 的反馈。如果可能,请说明所使用的麦克风/耳机等,以及是否支持环境降噪。如果要进行更大规模的实验,请使用指向语音通话质量比较统计信息的链接。