在 Chrome 64 版中,我們會嘗試針對已啟用 echoCancellation
限制的 getUserMedia 音訊串流嘗試新行為。新功能在於,這類串流會在串流期間暫時停用硬體雜訊抑制功能。我們預期這樣可改善 echo 取消器的成效。由於這項功能仍處於實驗階段,因此必須明確開啟這項功能;請參閱下方說明。
目前只有特定輸入裝置支援這項行為,且僅適用於 macOS。僅支援在「系統偏好設定」的「音效」面板中可切換「環境降噪」功能的裝置。
背景
回音消除工具會嘗試從麥克風接收的音訊訊號中移除揚聲器上播放的任何聲音。如果沒有這項功能,其他參與者的麥克風會接收你所說的內容,然後傳送給你。你會聽到自己的回音!
如要成功移除回音,WebRTC 的 echo 取消工具 (在 Chrome 中使用) 必須盡可能從麥克風取得乾淨的音訊訊號。在音訊送達 echo 取消程式「之前」所套用的處理作業 (例如硬體雜訊抑制),通常會降低效能。此外,系統已經啟用軟體雜訊抑制功能,但必須在 echo 取消程式處理完畢「之後」才啟用。
新行為的詳細資料
網頁開發人員可以選擇加入來源試用,在自家網站上啟用新行為。使用者可以在 Chrome 啟動時傳送指令列標記,藉此在全球啟用該功能。詳情請參閱下文。
啟用這項功能後,網頁會呼叫 getUserMedia 從輸入裝置取得音訊,會發生以下情況:
如果啟用了
echoCancellation
限制,系統會在新建立的音訊串流期間關閉硬體雜訊抑制功能。由於這項設定屬於整個系統,因此會套用至同一裝置 (即同一個麥克風) 的所有音訊輸入串流。
一旦關閉最後一個需要硬體雜訊抑制的串流關閉,系統就會重新開啟硬體雜訊抑制功能。
如果先前已停用硬體雜訊抑制功能,Chrome 將不會變更其狀態。
如果在未啟用
echoCancellation
的情況下呼叫 getUserMedia,Chrome 就不會接觸硬體雜訊抑制功能。
由於這項設定也可以由使用者控管,因此使用者有一些特定互動:
如果 Chrome 關閉了硬體雜訊抑制功能,且使用者重新開啟了這項功能,Chrome 就不會再嘗試針對該串流再次停用此功能。
如果 Chrome 關閉了硬體雜訊抑制功能,使用者又重新開啟後再次關閉,Chrome 仍會在串流結束後重新啟用。
只要啟用實驗,行為就會生效。無需變更 API。
如何啟用實驗
如要在網站上執行這項新行為,您必須申請「停用硬體雜訊抑制」來源試用。如果您只是想在本機試用,也可以使用指令列啟用此功能:
chrome --enable-blink-features=DisableHardwareNoiseSuppression
在指令列上傳遞此標記,即可為目前的工作階段全面啟用該功能。
我們希望在這個實驗中評估兩個層面:
在領域內,從啟用與關閉硬體雜訊抑制之間的質量差異。
在 Chrome 中變更這項設定,對使用者和其他可能執行的軟體有何影響?
希望你能針對這兩個方面提供寶貴意見。開啟這項功能後,進行通話的品質會提升嗎?實作是否會導致非預期行為出現問題?無論在什麼情況下,如果您正在進行測試,請針對這個錯誤提交意見回饋。請盡可能附上使用的麥克風/耳機等,以及是否支援環境降噪功能。如果進行更大規模的實驗,我們重視音訊通話品質統計資料的比較連結。