提升 RTC 音頻體驗 – 從搞懂硬體開始
前言
RTC(實時音影片通訊)技術的快速發展,助力了直播、短影片等互動娛樂形式的普及;在全球疫情持續蔓延的態勢下,雲會議需求呈現爆髮式增長,進一步推動了 RTC 行業的快速發展。為了給客戶提供穩定可靠的服務,網路系統方面需要不斷提升頻道連通率,降低會議過程中的斷流率,增強抗弱網能力;影片方面需要提升影片清晰度,降低影片卡頓率等,音頻方面在追求端到端 MOS 的同時,也要重點關注音頻 3A 演算法的效果,這些都是各廠家必須修鍊的 「內功」,也是最終沉澱下來的核心競爭力。本文將重點闡述硬體設備採集的音頻品質對 RTC 端到端音頻體驗的重要性。
採集品質不佳,會有什麼影響?
在 RTC 架構中,端到端的音頻訊號處理流程大致如下圖,上行分別經過了音頻訊號的採集,音頻 3A(AEC: 回聲消除、ANS: 自適應降噪和 AGC: 自動增益控制)和編碼;下行分別經過丟包恢復,解碼,混音和播放。
端到端的音頻訊號處理流程
不難看出,音頻訊號經過模數轉換,再經過設備集成的音頻訊號處理晶片,最後才傳遞給 RTC SDK。由於硬體廠商的不同,音頻採集解決方案參差不齊,因此採集到的音頻品質的好壞直接影響著 3A 演算法拿到的生產資料的可用性,同時也決定這最終用戶接收到音頻訊號品質的上限。根據實際工作中遇到的音頻問題,因為設備採集引起的問題基本可以歸納為如下幾類:
舉幾個例子:
(1)採集異常
採集異常主要體現在頻譜 「模糊」,嚴重的會導致無法聽懂語義,影響正常交流。如下語譜圖。
另外,採集異常後,播放的訊號被麥克風采集後也會表現出異常,從而引起嚴重的非線性失真,影響回聲消除效果,如下圖。
(2) 採集抖動
常見的就是採集丟數據,聽感上會聽到有很多高頻噪點(下圖為上圖中噪點放大後的局部圖),嚴重的會影響 AEC 演算法中對延時估計準確性和遠近端非因果問題,嚴重的會導致漏回聲。
(3)爆音和音量小問題
採集爆音問題主要發生在 PC,也是 PC 端設備最應該避免的問題,影響較大,除了截頂導致的頻譜失真之外,嚴重的非線性失真會影響回聲消除效果。爆音問題需要 AGC 演算法通過自適應調節 PC 端模擬增益以及麥克風加強解決。
(4)頻譜缺失
頻譜缺失主要是硬體回調的音頻取樣率與實際的頻譜分布不一致,即使編碼器給到很高的編碼碼率,聽感上也沒有高音質的效果,如下圖,採集訊號取樣率為 48kHz,但是頻譜上限卻只有 8k。
改善採集音質,硬體層面我們能做什麼?
具備 RTC 能力的硬體設備早已滲透我們生活的方方面面,常見的如移動端手機和 PC,現在甚至連兒童電話手錶,天貓精靈以及各種高端的指紋密碼鎖等設備都支援了 RTC。然而,設備的多樣性直接決定這採集能力的差異性,拋開聲學元器件設計差異這一因素,就 Android 端而言,晶片和軟體系統的差異使得同一品牌的手機,也沒辦法用同一種配置適配所有型號的手機。
另外,現在絕大多數的移動端設備都自帶硬體音頻訊號處理(後稱硬體 3A)能力,不同晶片效果方面也是千差萬別的同時,更嚴重的是經過硬體處理的音頻訊號頻譜往往會有缺失,如開啟硬體 3A 後回調到 RTC SDK 的音頻訊號頻譜上限僅支援到 8k,相當於 16kHz 取樣的音頻訊號,尤其在娛樂方面根本無法滿足我們對高音質的追求。因此,做好硬體層的適配工作,是保障 RTC 高品質音頻體驗的基礎。
Android 端
(1)需要搞清楚 javaaudioclass 和 opensles 這兩種模式的差異,以及各自需要適配的參數,掌握關閉硬體 3A 的配置。
(2)採集抖動或音頻音量異常,可以試試更改請求的取樣率,通常設置的 48k 取樣不會適用於所有的 android 設備。
Windows 端
(1)當前很多 Windows 設備會在螢幕頂端內置麥克風陣列,提供音頻增強功能,開啟方式如下圖。這個功能默認螢幕正前方夾角區域為拾音區域,通過麥克風陣列技術可以有效的增強拾音區域內發言人語音,「隔離」 拾音區域以外的 「雜訊」,其主要的弊端就在於開啟此功能後僅支援 8k 頻譜,且各廠家增強演算法存在差異,效果也參差不齊。因此,軟體需要具備能夠 bypass 硬體自帶音頻增強功能的能力,為高音質做保障。
Windows 設備自帶的雙麥陣列(圖片來源於網路)
音頻設置中的增強功能開關
開啟音頻增強後,帶來的頻譜缺失
(2)音量方面,PC 端設備都支援模擬增益調節,大多數帶有陣列的 Windows 設備都有額外的麥克風加強(如下圖)。軟體演算法層面(3A 中的 AGC)需要具備自適應調節他們的能力,保障音頻採集音量的平穩以控制採集底噪水平。初值設置或自適應調節不當都會導致音量小和爆音等問題,嚴重的會影響回聲消除和降噪的效果,帶來影響可用性的風險。
模擬增益與麥克風加強
蘋果設備
(1)ios 端適配工作較少,需要熟悉關閉硬體 3A 的配置,因為 ios 設備自帶的硬體 3A 頻譜也只能支援到 10k-12k。
(2)Mac 筆記型電腦設備比較簡單,僅提供了模擬增益調節。但是有一點需要注意,RTC 在支援雙聲道播放時,由於麥克風會與某個揚聲器在同一側,導致播放音頻時附近的麥克風采集爆音問題,一般只能優化軟體 AEC 演算法解決。
總結
當 48k 高音質成了剛需,為了保障採集環節的高品質,一方面需要投入時間去掌握 Android 參數適配的規律,同時市面上出現的越來越多的訂製化的 android 設備(手錶,智慧音箱等),也必不可少的需要先確定好配置參數;另一方面關閉硬體設備自帶的音頻處理功能,啟用 RTC 自帶的純軟 3A 演算法也是一種趨勢,前提是要優化好軟體 3A 演算法整體效果以及控制好功耗,這也是客戶評測各廠家之間音頻體驗的必測項,也是各廠家的核心競爭力之一。
「影片雲技術」你最值得關注的音影片技術公眾號,每周推送來自阿里雲一線的實踐技術文章,在這裡與音影片領域一流工程師交流切磋。公眾號後台回復【技術】可加入阿里雲影片雲產品技術交流群,和業內大咖一起探討音影片技術,獲取更多行業最新資訊。