我们将继续进行之前的实验,在 Chrome M68 中,我们添加了实验性 MediaStreamTrack
约束条件来控制使用哪个回声取消器,添加了对 Windows 原生回声取消器的支持,并改进了 macOS 原生回声取消器的功能。与之前一样,所有这些功能都需要通过源试用才能使用,因此如果您想试用,则必须注册,或者使用命令行标志启动 Chrome。如需了解详情,请参阅下文。
最新资讯
首先,现在可以通过在 getUserMedia
调用中添加新的约束条件来控制使用哪个回声消除器,例如:
echoCancellationType: type
其中 type
可以是以下任一项:
browser
以使用浏览器提供的软件实现;或者system
来使用底层系统提供的实现。目前,这是 macOS 和 Windows 上的一个实现。
如果您不添加该约束条件,Chrome 将像往常一样选择回声消除器:如果有硬件回声消除功能,则会使用该功能;否则,Chrome 的软件回声消除器将被使用。如果未指定此约束条件,Chrome 将永远不会选择此试验中包含的两个实验性回声消除器之一。
由于 echoCancellationType
的运作方式与任何其他约束条件一样,因此您可以将 system
指定为理想值,并让 Chrome 在可用时使用该值,否则回退到 browser
值。browser
echoCancellationType 始终可在 Chrome 中使用。如需了解系统选择了哪个回声消除器,您可以对 getUserMedia 音轨调用 getSettings()
,并检查 echoCancellationType
字段的值。
最后,您可以通过对 MediaStreamTrack
调用 getCapabilities()
来检查 MediaStreamTrack
支持哪些回声消除器。不过,InputDeviceInfo
尚未实现 echoCancellationType
。
支持 Windows 回声消除
我们扩大了原生回声消除器支持,以涵盖使用 Voice Capture DSP 组件的 Windows。与 macOS 回声消除器一样,我们希望评估其性能,看看在某些情况下,它是否比我们的软件解决方案表现更好,即使只是因为它更靠近音频硬件。与 macOS 的情况相反,我们在 Windows 上的初步测试结果不太理想。我们会继续调整实现方式,看看能否让其性能更好。目前,最好避免在更大规模上实验 Windows 回声消除器。在受控设置(例如在本地机器上)中试用它,但不要期望它能完美无缺!
改进了 macOS 回音消除支持
在之前的实验中,macOS 实现无法正确跟踪正在使用的输出设备。这意味着,无法通过任何非计算机的默认设备取消回音。在许多情况下,这可能不是问题,因为 macOS 会在插入或拔出耳机等设备时自动切换默认设备。不过,这并不适用于所有情况。
此功能已添加到 Chrome M68 中,并针对 macOS 和 Windows 回声消除器实现。Chrome 的软件回声消除器并未受到此功能缺失的影响,因为它使用内部环回来取消播放音频。
如何启用实验
如需在您的网站上实现此新行为,您需要注册“对原生 AEC 的实验性支持”来源试用。如果您只想在本地试用,可以在命令行中启用该实验:
chrome --enable-blink-features=ExperimentalHardwareEchoCancellation
在命令行中传递此标志可使新的 echoCancellationType
约束条件在 Chrome 中全局提供给当前会话。然后,您可以使用此约束条件在应用中测试原生回声消除器,如上所述。这与上次试用时使用的命令行标志相同;在 Chrome M68 中,它将启用新功能。启用新源测试仅会激活新功能,而不会在旧版 Chrome 中触发之前的测试。
提交反馈
与上一个实验一样,我们关注的是 macOS 和 Windows 回音消除器的定性性能,尤其是前者。我们还希望您就新 echoCancellationType
约束条件在实际中的运作情况、易用性等方面提供反馈,包括在 getSettings
和 getCapabilities
中包含该约束条件。
我们还希望了解 Chrome 在使用这些原生回声消除器时如何与其他应用交互,以及实现过程中是否存在任何稳定性问题或其他问题。
如果您要试用此功能,请在此 bug 中提交反馈。如果可能,请附上所用硬件(操作系统版本、硬件型号、麦克风/耳机等)。如果您要开展更多大规模实验,请提供音频通话质量的比较统计信息链接,无论是客观还是主观的。