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