音頻 AI 算法在 RTC 中的實踐

導讀: 2021年10月21日,「QCon 全球軟件開發大會」在上海舉辦,網易智企技術 VP 陳功作爲出品人發起了「AI 時代下的融合通信技術」專場,邀請到網易雲信、網易音視頻實驗室、網易雲音樂的技術專家與大家一起分享融合通信技術趨勢和演進方向、視頻通信關鍵技術探索及實踐、音頻 AI 算法在 RTC 中的實踐、網易雲音樂網絡庫跨平臺化實踐等話題。

我們會針對四個演講專題逐一進行介紹與分享,本期是我們的第三期,音頻 AI 算法在 RTC 中的實踐。

 

嘉賓介紹:郝一亞,網易雲信音頻算法專家,IEEE 審稿人。發表學術期刊/論文 15 篇,申請專利 7 項。曾參與美國衛生局 NIH 助聽器音頻算法項目、Apple AirPods 音頻算法研發 、Facebook Reality Labs AR/VR 音頻項目、以及 Zoom Video Communications 實時音頻算法研發工作。目前在網易雲信主要負責音頻實驗室搭建、3A 算法研發、AI 音頻算法研發以及 RTC 音頻標準制定。

 

前言

 

隨着人工智能技術、計算機技術、神經網絡等領域的不斷髮展,AI 音頻算法也在學術界和其他行業不斷湧現,包括了線上實時通信 Real-Time Communication(RTC)領域。

從2013年開始,無論什麼行業都可以聽到,這個東西拿 AI 做效果非常好,這個技術我要用智能化去做,感覺萬物皆可 AI,萬物皆可智能,所有東西都可以用 AI 去做,並且做出來的效果都非常好。

但實際上很多技術還是在用傳統的方法,比如在音頻領域,更多的還是用基於信號處理這些積累了數百年的方法。AI 的方法還停留在實驗室階段,停留在仿真階段。

本次分享將從“RTC 應用 AI 音頻算法的難點”、“AI 音頻算法落地的解決方案”、“網易雲信 AI 音頻算法落地案例”三個維度,和大家分享 AI 音頻算法和 RTC 的實戰經驗。希望大家通過這一場分享,能對這些問題有新的認識和看法,也能從中得到一些靈感,無論是在音頻 AI 或 RTC,甚至於其他行業中。

 

AI 音頻算法落地的難點

 

 AI 音頻算法的趨勢 

下圖是 Tsahi 提出的,在 RTC 領域,AI 音頻算法的趨勢。圖中的橫座標代表時間的發展,縱座標是算法的質量。

 

如果是降噪算法可以理解爲這個降噪算法的降噪力度/降噪量,以及降噪同時對語音的保護。

 

橙色這條線代表基於數字信號處理的傳統方法這類算法發展了數百年,但是隨着趨勢的發展,目前這些算法在優化過程中遇到了很多瓶頸。比如傳統算法需要一些預設條件,要在這種條件下才能達到目標效果。但是現在的應用中,實際的業務場景非常複雜,比如線上的娛樂場景、會議場景。在這些場景中,有用信號和噪聲信號非常複雜的混疊在一起,很多情況下都無法滿足算法的預設條件。因此,在優化過程中單單利用傳統算法是非常難突破的。

 

基於 AI,或者說 data-driven 的算法,發展相對較爲緩慢,我認爲原因之一是受困於我們的計算機硬件的算力。但隨着算力不斷提升,其發展速度會越來越快,在未來會在某種程度上取代傳統算法。而 Tsahi 認爲,我們當前剛好處在這兩者旗鼓相當的位置,我個人覺得我們的時間節點偏左一點,因爲目前很多 AI 算法還不能替代傳統算法,傳統算法依然是目前 RTC 領域的基石。而 AI 算法,我們更多的是去利用它的特性去解決特殊問題。

 

爲什麼說最後的趨勢是 AI 算法的發展會越來越快?最重要的原因之一還是算力的提升,右邊這張圖從一個維度展示了算力的提升。從圖中可以看出,自2000年開始,supercomputer 的算力以每五年十倍的增長趨勢發展。

 

 AI 音頻算法應用到 RTC 中的困難 

 

我們現在的 AI 音頻算法在 RTC 中遇到的困難是哪些呢?主要是這三個方面。

 

計算複雜度:當 AI 模型比較大時,算力需求也會比較大。在 RTC 服務中,很多算法是需要落地在終端設備上的,而這些設備包括了一些中低端設備。在這些設備上,AI 算法能不能有效的運行起來,是我們衡量這個 AI 算法能不能被應用的重要標準之一。除此之外, RTC 的整個處理 pipeline 中有很多算法,而一個終端設備的計算資源又是有限的,怎樣合理地分配算力資源也是對 AI 算法的一個挑戰。

 

泛化能力、魯棒性:泛化能力是指一個 AI 模型在學習了 Training Data 所涉及的場景之後,在其他未見過的場景中的拓展能力。魯棒性是指 AI 模型在各個場景下,它的效果能不能維持在一個比較好的水平。這兩個點都是 AI 音頻算法落地 RTC 的困難點,因爲 RTC 中設備和場景都很多樣。早期的 RTC 更多理解爲會議,這個場景相對比較單一,因爲整個聲學場景相對比較封閉,是室內的,而且採集信號相對來說失真都比較小。這在 RTC 算是一個比較好的場景。但是我們現在面對的 RTC 場景非常豐富,比如現在網易雲信主攻的三個行業之首-娛樂行業。娛樂行業的場景相比會議場景複雜很多。其一是我們的 Desired Signal 可能不僅僅是語音了,還有可能音樂信號。而現在的 WebRTC 的很多音頻算法都對音樂信號不友好。除此之外,複雜場景會帶來複雜的背景噪聲。比如馬路上汽車的噪聲,不僅僅是對於降噪算法很有挑戰的瞬態噪聲,而且 SNR 也相當低。而要應用一個 AI 算法,需要在有限的數據集裏面去考慮到多種可能出現的場景。

 

AI 音頻算法落地的解決方案

 

我們剛剛講的是 AI 音頻算法的整體趨勢和挑戰。下一個章節我們分兩個部分來講,第一塊以 AI 降噪爲例,我們討論一下落地 AI 算法過程中,具體落地的時候會存在哪些挑戰。第二部分,我們以 VAD 算法爲例,通過對傳統算法Machine-Learning 算法深度學習算法這三者之間進行比較,來分析一下 AI 算法,特別是基於深度學習算法的優勢。

 

 AI 音頻算法落地 RTC 過程中的困難實例 

 

以 AI 降噪爲例,看一下具體落地當中的一些困難。

 

第一個還是計算複雜度。首先,在 RTC 中,音頻是需要進行實時處理的,所以輸入信號都是音頻流,是連續的幀。我們假設每一幀都是一組十毫秒的音頻採樣數據,實時處理就是要保證在 i+1 幀來之前,處理完第 i 幀的數據。而這十毫秒就是最大的 process time。如果出現了在 process time 無法處理完的情況,就會出現丟失採樣點,這對音質有非常嚴重影響。AI 算法要達到實時處理,對於稍微大一點模型是比較有難度的,所以在很多 AI 音頻比賽裏面會專門有一個能 real-time 的 track。但是實時運行對於 RTC 來說只是非常基礎的第一步,只是保證我們能實時處理了,但是沒有觸及實時率的問題。縱觀整個音頻 APM 處理,AI 降噪只是其中的一個模塊,其他還包括了 AEC、AGC、VAD 等模塊


除此之外,在音頻處理之外,還有其他的模塊處理,比如視頻處理、網絡擁塞控制等等。我們的工作是,需要讓這麼多算法同時滿足 real-time 的要求,並且要同時儘量去降低處理 CPU 的佔用率,去降低我們的 SDK 在用戶設備上的 CPU 開銷和耗電量。

 

第二個難點就是 Data。可以說 AI 算法最重要的就是 Data。實現一個 AI 算法,只要有 Data,就已經成功了一大半了。但音頻算法的 Data 相比其他的一些領域相對較少。我們在開發 AI 算法時候,主要通過一些開源數據集和實驗室真實設備錄製來建立數據集。同時,我們也運用了一些數據增強的方法去擴充數據集。在音頻算法中,AI 降噪的數據集是相對比較好做的,因爲開源數據相對較多,數據 label 也比較好操作。但是對於另一些音頻算法來說,收集、label 數據集是一個相當艱難的任務,比如我們的 AI 嘯叫檢測算法,目前在互聯網上是基本沒有關於嘯叫的數據集的,而且嘯叫信號的採集和 label 也是比較有挑戰的。

 

雖然有這麼多挑戰,我們雲信音頻實驗室也一直在不斷積累數據,不斷的去擴充語料庫。我們也遍歷不同的終端設備,用它們的麥克風去採集,這樣可以把更真實的麥克風和房間響應加入數據集中。這對於要應用在不同終端設備上的 AI 算法來說非常重要,因爲我們需要 AI 模型在訓練中去學習不同的麥克風和房間的響應。

 

有了數據後,我們在調參過程中也遇到了困難。

 

對比一下傳統算法,這是一個基於 MMSE 的傳統降噪算法:左上角信號進來了,通過 FFT 我們可以拿到信號的幅度和相位,然後我們可以算出先驗/後驗信噪比,算出 Gain,然後把 Gain 作用在信號幅度上,之後和相位疊加做 iFFT 得到輸出的時域信號。我們在調試這個算法時,如果發現誤把語音當做噪聲給壓掉的情況,我們可以把那幾幀信號拿出來,分段的對算法中每個模塊的輸出值來分析,找出問題。爲什麼我們可以這樣做?原因是這裏的每個參數都有具體的物理意義。但是針對深度學習的方法,整個算法其實是一個黑盒,例如一個卷積神經網絡,入參被一層一層捲起來,每一層的中間參數無法對應一個具有物理意義的值,那我們在優化過程中也無法去定位問題。雖然我們在算法優化中遇到了這些問題,但是我們也通過不斷的經驗總結,積累了非常多的調參方法。雖然調參依然是一個挑戰,但是通過積累我們已經有方法可以快速找的合適的模型和對應參數,去解決不同的音頻問題。

 

以上就是實際落地 AI 降噪的時候遇到的這三個最困難的點。講那麼多 AI 算法的不好和困難,AI 算法能帶給我們什麼收益呢?

 

 傳統音頻算法、Machine-Learning、AI 之間的選擇 

 

我們結合 VAD(Voice Activity Detection)來講一講各個算法之間的選擇。

 

下圖中右圖展示了一個 VAD 對比結果,上面部分是乾淨的語音信號,VAD 要做的事情是把語音信號檢測出來,在時間維度上標爲1,其他就是0,代表噪聲。

 

我們來看一下傳統的 VAD 一般是怎麼做的,這篇文章裏面比較有代表性,大家看左邊的流程圖,左邊分爲兩塊,右邊是一個基於能量的 VAD,這是最通俗易懂的。比如現在在這個會場我在說話,大家聽到我的聲音,聲音肯定是比環境的底噪要高的,SNR 是大於0的,那我們就設一個能量門限值,高於這個能量的就是語音,低於這個能量的就是噪聲。當然這裏基於能量的 VAD 還做了很多其他的工作,包括能量怎麼更準確的估計,門限值不斷的適應新的環境和噪聲。左邊的這個方法是基於語音的其他 feature 的,比如頻譜 Peak 等諧波信息。最後的這種方法是既結合了能量 VAD,又結合了頻譜 Feature VAD 的一個方法,這也是這篇文章 propose 的方法,檢測效果在這段音頻中也是最好的。

 

再拿能量 VAD 舉例,高於門限的是我們的語音,低於門限的是噪聲,那麼這個就可以看作一個單 Feature的 Classifier。如果用兩個 feature,就可以像下面左上角的那張圖那樣表示。我們可以認爲紅色的點就是噪聲,藍色的點就是語音。傳統算法大多都是線性的區分,就可能這樣去切一刀,這樣分了過後有很多藍色的點會落在噪聲的那邊,也有很多紅色的點會落在語音這邊,這些就是錯判和漏判。

 

有沒有方法能把這個東西更高維度地把這兩者區分開呢?我們可以引入 machine learning,可以更高維度的把這些點給摳出來,就像後面幾張圖展示的方法。我們這裏只提到用兩個 feature,在解決實際問題中,我們也常常用到更多的 feature,並結合不同的模型,從不同維度去做處理。

 

在雲信的音頻處理中,我們有很多不同的 VAD,這些 VAD 的職責不一樣,效果也不一樣。下面我來介紹一下其中的一個 VAD。我們先來看到中間的這兩張圖,這是兩個時域的連續語音圖,上面的語音和下面對比,可以看到被框出的這一段語音更密集,中間的噪聲縫隙更小。我們把這框出的五秒左右的音頻切成一千份很小的時段,然後去統計每一小段的能量,統計完的能量放在右邊這個直方圖裏。

 

可以看到上面這個直方圖中,靠右邊 -10dB 這個地方有一個峯,-35dB 也有一個峯。那麼這裏的 -10dB 的代表語音的平均能量是 -10dB,-35dB 代表中間的這些噪聲間隙能量是 -35dB。如果是統計下面這段語音,可以清楚的看到下面直方圖中 -10dB 也有一個峯,但是比上面直方圖裏 -10dB 位置的峯要小,說明 -10dB 出現的次數少,而 -35dB 的峯相對變得明顯了,因爲它的噪聲間隙次數增多了。在這個基礎上,我們增加了一步,基於數據用機器學習的模型去學習這兩個峯,把這兩個峯估計出來。所以即便是 SNR 比較低,兩個峯重疊的很厲害的情況,機器學習的方法也能把兩者區分開。

 

既然我們用到了機器學習的思想,那我們能否用更復雜的模型去學習更多數據呢?那麼下面我們講講怎麼神經網絡的方法去實現 VAD。這裏介紹一個基於 CNN 的 VAD 算法,這個模型用到了三個卷積層和一個全鏈接層,使用了 Log-Mel Energy 作爲輸入特徵,沒有其他複雜的設計,算是一個很直接的解決方法了。我們可以看一下右邊的結果,選擇這個結果是因爲它是一個比較難的 case,第一是因爲 SNR 是 0dB,第二是因爲它的噪聲都是生活中的非平穩噪聲。對比的方法中,G729 和我們剛纔介紹的基於信號處理的 VAD 類似,Sohn 和 Random Forest 是基於統計學的方法,CNN 就是這個基於神經網絡的方法。分析結果我們可以看到,基於統計學的方法在大部分噪聲中不夠好,反而還比 G729 低,而 CNN 的 VAD 在各個噪聲中都是表現最好的。

 

我想總結一下,基於深度學習的 AI VAD 的優勢在於可以更深度的去區分語音和噪聲,算法能力上限會更高。比如瞬態噪聲,傳統算法基本上不去 cover 這種情況,但是 AI VAD 是可以解決的。但是它的弱點依然是我們之前分析的複雜度、泛化能力等問題。

 

網易雲信 AI 音頻算法落地案例

 

剛纔講了具體落地的時候遇到的具體困難和爲什麼在這些困難下,我們還是要選擇 AI 算法。我們現在來講一講雲信是怎麼解決這些問題的。

 

具體實現過程 

 

剛纔有講到 AI 降噪的問題,我們的解決辦法主要是左邊這三點。


第一採用更適合的輸入特徵,一方面儘量減小輸入特徵量,以此來減小整個 model 的複雜度;另一方面是採用更適合當下問題的 feature 來作爲模型的輸入特徵,選擇更能代表信號特性的 feature。這是我們的第一個手段。

 

第二我們採用輕量級、更合適的網絡,比如我們在降噪問題中,選擇了 GRU 模型,因爲它具有前後時序的記憶,並且相比 LSTM 更輕量級。在調參過程中,我們也儘量去壓縮網絡層數,保證運算速度。

 

第三個手段是定向優化,定向優化東西包含比較多,比如數據集優化,它包括了數據增強、數據清洗等工作。還有對模型壓縮,來減小模型大小。在將算法集成進 SDK 的過程中,我們雲信所有的基於 AI 的算法,都用的是我們自研的 NENN 推理框架,進一步加速了我們的 AI 模型的運算速度,降低了開銷。最終,在不同終端設備上,包括了很多中低端的移動設備,我們的 AI 降噪在每10毫秒的幀上的運算時間差不多是 100-200 微秒之間,實時率接近 0.01。

 

還有一點值得一提,我們的 AI 算法很多時候需要配合傳統算法進行處理。比如在回聲消除中,我們可以把近遠端信號和遠端信號全部扔給 model 讓它去訓練,然後讓這個 model 直接去處理整個 AEC 鏈路;我們也可以把時延估計和線性處理用傳統方法去做,把非線性處理單獨拿出來用一個 AI 模型去訓練。後者做到了幾個任務之間的解耦,所以最後能夠達到算法效果得到了提升,且運算開銷相對前者也小很多。

 

 雲信落地AI算法實例 

 

我們現在落地的 AI 算法包括了 AI 降噪、AI 音頻場景檢測,還有一個 AI 嘯叫檢測,和 3D 音效沒有放到 PPT 裏面。AI 回聲消除這一個模塊正在落地。下面是 AI 降噪的 demo 視頻。

點擊原文觀看視頻

從這個 demo 可以看到,裏面有很多難處理的突發噪聲,但是我們的算法都抑制的非常好。不過在降噪的同時,我們的人聲也有發悶的感覺,針對這個問題,我們現在 AI 降噪2.0 也正在落地中,計劃年底上線。新的這一版 AI 降噪在保護語音質量上做得更好,對於乾淨語音能做到基本無損。

 

最後還有一點想跟大家分享一下,藉着現在很火的元宇宙,聊聊雲信的 3D 音效。網易雲信現在是唯一一家實現了 6DoF 空間音效的 RTC 廠商。

 

Facebook 最近發佈一個完整的空間音效技術(MSA),這張圖展示了 MSA 能達到的所有能力,而云信的 3D 音效也達到了圖中的所有能力,比如房間反射、遠場衰減等。這裏介紹兩個雲信 3D 音效的落地案例,左下這個是 FPS 遊戲“荒野行動”,在這類遊戲中,特效聲比如槍聲的方向感大家都很熟悉,而云信的 3D 音效是在特效聲之上,讓開黑的隊友語音也具有實時的方向感。

 

第二應用案例是網易雷火開發的沉浸式活動系統-瑤臺,這個系統可以承接比如像 Qcon 這樣的大型會議,把它變成一個全線上、全虛擬的場景。參會者可以以一個虛擬角色,以第一人稱視角,沉浸式地去參加會議。雲信 3D 音效在這個系統中提供了實時的空間音效,讓參會者可以聽到虛擬角色周圍的實時語音,提供了更深入、真實的沉浸式的體驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章