停用硬體雜訊抑制

在 Chrome 64 中,我們正在為已啟用 echoCancellation 限制的 getUserMedia 音訊串流嘗試新的行為。新功能是,這類串流會在串流期間暫時停用硬體雜訊抑制功能。我們預期這項功能可改善回音消除器的效能。由於這項功能屬於實驗性質,因此需要明確開啟;請參閱下文

目前這項行為僅支援特定輸入裝置,且僅適用於 macOS。只有在「系統偏好設定」的「聲音」面板中,可切換「環境噪音消除」功能的裝置,才能支援這項功能。

背景

回音消除器會嘗試從麥克風接收的音訊訊號中,移除任何在喇叭上播放的聲音。否則,通話另一方會透過麥克風收聽你的聲音,然後傳回給你。你會聽到自己的回音!

如要成功移除回音,WebRTC 的回音消除工具 (在 Chrome 中使用) 需要從麥克風取得盡可能乾淨的音訊訊號。在音訊傳送至回音消除器之前套用的處理程序 (例如硬體雜訊抑制),通常會影響其效能。此外,系統已採用軟體降噪功能,但只有在回音消除器處理完畢後才會啟用。

新行為的詳細資訊

網站開發人員可以選擇加入原點試用版,在網站上啟用新行為。使用者可以在啟動 Chrome 時傳遞指令列旗標,即可在全球啟用此功能。詳情請參閱下文

啟用這項功能後,如果網頁呼叫 getUserMedia 來從輸入裝置取得音訊,就會發生以下情況:

  • 如果啟用 echoCancellation 限制,系統會在建立新音訊串流的期間關閉硬體雜訊抑制功能。

  • 由於這項設定是全系統性的,因此會套用至來自同一部裝置 (即同一個麥克風) 的所有音訊輸入串流。

  • 當需要關閉硬體雜訊抑制的最後一個串流關閉後,硬體雜訊抑制功能就會重新開啟。

  • 如果硬體雜訊抑制功能先前已停用,Chrome 就不會變更其狀態。

  • 如果在未啟用 echoCancellation 的情況下呼叫 getUserMedia,Chrome 就不會觸發硬體雜訊抑制功能。

由於這項設定也是使用者可控,因此與使用者的互動方式有所不同:

  • 如果 Chrome 已關閉硬體雜訊抑制功能,使用者重新開啟後,Chrome 就不會再嘗試為該串流再次停用這項功能。

  • 如果 Chrome 已關閉硬體雜訊抑制功能,使用者重新開啟後又關閉,Chrome 仍會在串流結束後重新啟用該功能。

只要啟用實驗,行為就會生效。不需要變更 API。

如何啟用實驗

如要在網站上啟用這項新功能,請註冊「停用硬體噪音抑制」Origin Trial。如果您只想在本機上試用,也可以在指令列中啟用:

chrome --enable-blink-features=DisableHardwareNoiseSuppression

在指令列上傳遞這個標記,即可為目前的工作階段在全球啟用這項功能。

我們希望透過這個實驗評估幾個面向:

  • 在實地測試中,開啟硬體雜訊抑制功能與關閉的品質差異。

  • 在 Chrome 中變更這項設定會對使用者和他們可能執行的其他軟體產生什麼影響?

我們很想瞭解這兩方面的意見回饋。開啟這項功能後,通話品質是否變好或變差?實作是否有問題,導致非預期的行為?無論如何,如果您嘗試這個功能,請針對這個錯誤提交意見回饋。請盡可能提供所使用的麥克風 / 耳機 / 等資訊,以及是否支援環境噪音降低功能。如果進行更多大規模實驗,請提供音訊通話品質比較統計資料的連結。