攝影中最重要的是光,找光、等光、拍光,而在室外錄音錄影中,則是要等聲音。確切點說,是等噪音過去,尤其是瞬時噪聲,飛機呼嘯而過、學校的下課鈴、汽車的鳴笛等等。關注【融雲全球網際網路通訊雲】瞭解更多
這些,就需要通過 AI 演算法進行智慧降噪處理。
AI 降噪可以通過模型訓練的方式,識別出需要過濾掉的瞬時噪聲。
6 月 9 日的融雲 RTC · 進階實戰高手課中,融雲音訊演算法工程師從降噪技術、AI 降噪技術、融雲 AI 降噪探索實踐等方面對 AI 降噪相關技術進行了全面分享。
本文將對課件內容進行梳理展示,歡迎收藏轉發~
微信後臺回覆【AI降噪】獲取完整課件
降噪技術
噪音其實是一個相對概念,不同場景對有用聲音與噪音的定義並不一致。
比如在一個有背景音樂的環境中通話,背景音樂就是噪音,需要用降噪技術去除掉。而在直播中,主播唱歌的背景音樂就成了一個有用訊號,不僅不能去掉,還需要保證無失真地保留。
因此,我們需要根據不同場景有針對性地設計降噪方案。
降噪技術發展多年,每個階段都會有一些典型的演算法和重要的技術突破。比如早期的線性濾波法、譜減法,後來的統計模型演算法、子空間演算法。
近些年,基於深度學習的降噪演算法得到快速發展,也就是本文所分享的 AI 降噪演算法。主要是基於幅度譜的深度學習演算法,還有複數譜的深度學習演算法,以及後來的基於時域訊號的深度學習演算法。
(不同階段的主要降噪技術)
傳統演算法,是由研究者總結噪音規律來建模,繼而實施背景噪音處理,主要包括線性濾波法、譜減法、統計模型演算法以及子空間演算法。
線性濾波法,就是用高通濾波器等對已知頻帶的訊號進行濾除。比如有個 50 赫茲的干擾,我們用高通濾波器,截止頻率在 50 赫茲以上,就可以把 50 赫茲的干擾訊號濾除掉。
譜減法,記錄非語音段的一個噪音能量,然後用含噪語音譜減去噪音譜,就得到純淨語音。
統計模型演算法,基於統計的方法計算出各頻點的語音和噪音分量。
子空間演算法,將含噪語音對映到訊號子空間和噪音子空間,通過消除噪音子空間成分,保留有用的訊號子空間成分,來估計真正有用的語音訊號。
(降噪演算法原理框圖)
上圖(左)展示了傳統降噪方法的典型原理。
訊號 y(t) 經過短時傅立葉變換後得到含噪語音幅度譜與相位譜,傳統方法通常重點關注語音訊號的幅度譜,將幅度譜資訊經 Noise Estimator(噪音估計模組)對噪音進行估計,然後經過 Gain Estimator 進行最終 Gain 值計算,將含噪語音的幅度譜與 Gain 值相乘得到最終的增強語音幅度譜,再將其與含噪語音的相位譜結合,進行 iSTFT,從而得到增強語音。
由於噪音估計模組通常是經過平滑遞迴來計算噪音的估計值,非平穩噪音就很難被準確估計。因此,我們需要引入 AI 降噪進一步提升降噪效能。
上圖(右)是基於 AI 降噪的原理圖,將含噪語音經過特徵提取輸入到訓練好的神經網路,得到去噪後的增強語音。
其本質是利用神經網路模型學習語音與噪音各自的特性與區別,從而去除噪音保留語音。
AI 降噪
AI 降噪主要研究三個方面。
首先是模型 Model,從最早期的 DNN 網路發展到後來的 RNN 網路,再到後來的 CNN 網路、GAN 網路及近期的 Transformer 等,AI 降噪模型的發展是隨深度學習模型的發展而發展的。
這些神經網路模型不只在 AI 降噪中使用,還廣泛應用在語音識別、語音合成、影像處理、自然語言處理等領域。
然後是訓練目標 Training Objective,總的來說分為兩大類:Mask 類和 Mapping 類。
Mask 主要有:理想二值掩蔽 IBM、理想比值掩蔽 IRM、頻譜幅度掩蔽 SMM,這些都只用到了幅度資訊;後來的相位敏感掩蔽 PSM,是第一個利用相位資訊進行相位估計的掩蔽訓練目標;之後的複數比值掩蔽 CRM,同時增強實部和虛部。
Mapping 方法,最先是將輸入語音對映到幅度譜,相當於只針對語音的幅度譜進行恢復,再到後來的複數譜,利用語音訊號的複數譜資訊進行對映,然後就是直接對映語音波形,不做時頻變換。
最後是損失函式 Loss Function。
最早出現的是最小均方誤差 MSE,計算目標和預測值之間平方差的平均值,還有其變形如 LogMSE 等,計算目標和預測值之間在對數域下平方差的平均值。
被廣泛使用的還有 SDR 或 SiSDR 等。
無論 MSE 還是 SDR 等都無法直接反映語音聽覺質量。
語音通常用 PESQ、STOI 等來評估質量,所以利用 PESQ 和 STOI 兩個指標來作為 Loss 計算,更能準確反映語音質量與可懂度等。因為 PESQ 不是連續可導的,實際中會使用 PMSQE 來進行計算。
基於不同訓練目標的思路,AI 降噪主要有以下型別。
Mask 類
把含噪語音訊號變換到時頻域後,通過計算得到含噪語音的 Mask 值來與含噪語音時頻譜相乘,從而在各頻帶上達到分別進行噪音抑制的效果,得到增強語音。
(Mask 類方法)
訓練過程如上圖所示,將含噪語音經過 STFT 得到含噪語音的幅度譜 → 將幅度譜經過深度學習網路後得到一個 Mask 值 → 將此 Mask 值與理想 Mask 值輸入到訓練 Loss Function 模組得到 Loss 值 → 指導網路更新,不斷迭代出訓練好的模型。
推斷流程是將含噪語音同樣進行 STFT 變換,得到幅度譜與相位譜;同樣將幅度譜資訊經過訓練好的網路處理後得到 Mask 值,並將 Mask 值與含噪語音的幅度譜相乘,從而得到去噪語音的幅度譜;再將其與相位資訊結合通過 iSTFT 處理得到去噪語音的時域波形。
Mask 類是出現最早的方法,從其原理上看,與傳統方法中用到的 Gain 值作用相似,只不過這個 Mask 是通過模型推斷出的結果。類比於傳統方法的 Gain 值,Mask 同樣會做範圍限制,以保證在一個合理範圍,進而在有效降噪的同時,確保較小的語音失真度。
Mapping 類
Mapping 類方法,不用得到中間值 Mask 再去計算去噪語音譜,而是直接利用深度學習網路預測語音譜。
但這種方法也有兩面性,雖然模型可以直接輸出去噪語音譜,但其輸出異常的情況會變多,尤其是面對模型未見過的場景。
(Mapping 類方法)
訓練流程如上圖,含噪語音經過 STFT 變換後 → 將其幅度譜經過深度學習網路,得到增強語音 → 將增強語音與乾淨語音輸入到 Loss Function 模組,得到 Loss 來指導模型更新,直至收斂。
推斷過程是將含噪語音經 STFT 變換後得到幅度譜與相位譜;將幅度譜經訓好的模型處理得到去噪語音幅度譜再與含噪語音相位譜結合經 iSTFT 變換得到增強語音。
Mask 與 Mapping 融合
Mask 與 Mapping 融合方法,核心思想同樣類似於前面所說的 Mask 的方法求出 Mask 值,但在求 Loss 的時候並不是對 Mask 求 Loss,而是利用 Mask 求出去噪語音,利用去噪語音與乾淨語音來計算 Loss。
這樣做的原因是,Mask 不能完全反映語音與原始語音的擬合程度,同樣的 Loss 情況下,Mask 有多種可能性,基於不同 Mask 得到的語音也不是唯一的,因此用語音作為 Loss 的計算會更加貼合真實目標。
(Mask 與 Mapping 融合方法)
訓練流程同樣是先對含噪語音進行傅立葉變換,取幅度譜,輸入到網路,得到 Mask 值,從而得到增強語音與乾淨語音一起經過目標計算模組,得到 Loss 值來指導模型更新。
推斷流程與 Mask 類的計算流程一致。
複數 Mapping
由於利用幅度譜只是使用了含噪語音的幅度資訊,而相位資訊未被利用,使得演算法有一定瓶頸,增加相位資訊的使用,則能更有效地利用全部語音資訊,對於噪聲抑制更加有效。因此,引入複數譜來進行設計,這裡以複數 Mapping 方法進行講解。
(複數 Mapping 方法)
訓練過程同樣將含噪語音進行 STFT 處理,將其經過網路後得到增強語音的複數譜,然後將其與純淨語音輸入到 Loss Function 模組,進行 Loss 計算,從而指導模型不斷更新,最終收斂。
推斷階段則是含噪語音進行 STFT 處理後,輸入到模型,從而得到幅度譜之後進行 iSTFT 處理,得到去噪語音。
Waveform 類
這類方法將幾乎所有處理都放入模型,讓模型有很大的靈活度來做學習。
之前的方法都是在時頻域處理,而 Waveform 類方法則通過使用如 CNN 網路等對資料進行分解與合成,使得訊號變化到模型收斂的域中;也正是因為這種靈活度,我們對其控制更少,也更容易碰到一些異常 case。
(Waveform 類方法)
其訓練和推斷的過程如上圖所示。值得一提的是,在實際方法選擇中,還是要根據場景與需求選擇合適的方法來進行演算法設計與調優。
傳統降噪 VS AI 降噪
(傳統降噪與 AI 降噪對比)
噪音抑制量
對於平穩噪聲,傳統降噪演算法和 AI 降噪演算法均能發揮出不錯的效能效果。
但對於非平穩噪音,無論是連續非平穩還是瞬態非平穩噪音,傳統方法的效果都不是很好,尤其在瞬態噪音的處理上,效能表現最差。因為非平穩噪音多種多樣,規律很難總結,傳統方法很難對非平穩噪音建模。
在這方面,AI 降噪的方法可以引入大量非平穩噪音來讓模型學習其特徵,從而達到不錯的效果。
語音失真度
傳統降噪方法很難準確估計噪音量,一旦過多估計就會造成語音失真。
而 AI 降噪演算法,主要通過在訓練集中引入各種各樣的噪音,來使得模型相對準確地估計出語音與噪音,通常情況下其語音失真度相對較小。
演算法魯棒性
傳統方法在新舊環境中效能相對穩定,且其演算法複雜度不是很高,所以經典傳統降噪方法至今都依然被一些場景採用。
AI 降噪演算法在已知環境效能突出,這是傳統方法無比匹敵的,而 AI 降噪在未知環境中會有一定概率發生不理想情況。但相信隨著 AI 降噪技術的發展,其演算法魯棒性會越來越好。
音樂場景
直接使用傳統降噪演算法會對音樂訊號造成嚴重損傷,因為它噪音跟蹤的原理無法很好地區分音樂訊號與背景噪音;而 AI 降噪技術則可以通過訓練資料的擴充套件,讓其在模型中處理過音樂噪音的資料,進而具備對音樂與噪音的區分能力,從而取得不錯的效果。
低訊雜比
傳統降噪演算法很難準確估計噪音等級,更容易造成較高的語音失真度與更多的殘餘噪音,而 AI 降噪可以通過引入包括低訊雜比資料的多種訊雜比資料來提升模型對低訊雜比場景的效果。
(含躁語音)
如上圖所示,這是一個低訊雜比+非平穩噪音的效果對比。
從含噪語音的語譜圖可以看出,低頻的語音譜很難被清晰觀測,訊雜比很低。其音質可以聽到明顯的噪音,語音有些聽不太清楚。
(傳統降噪效果)
傳統降噪演算法處理後的語譜圖,能夠清晰看到殘留噪音,音質效果很明顯還是能聽到一些噪音。
(AI 降噪的效果)
AI 降噪處理後的語譜圖不會明顯看到殘餘噪音,音質效果比傳統降噪演算法效果好。
那在直播音樂場景,傳統降噪和 AI 降噪演算法的效果如何呢?
下面是正常環境下語音+音樂的原始音訊。
(原始音訊)
從語譜圖中可以看出連續存在能量較強的頻譜,也是很難區分音樂與人聲的。從音訊中能感知到音樂與人聲。
(傳統降噪效果)
傳統降噪演算法的效果,頻域有明顯損傷,也能夠聽出音訊被損傷的感覺。
那麼,AI 降噪演算法的效果如何呢?我們看一下融雲在這方面的實踐。
融雲 AI 降噪實踐
主要討論全頻帶音訊直播場景下的 AI 降噪方案。
場景挑戰
首先,全頻帶音訊直播場景需要使用 48kHz 取樣率最大程度保證人耳對音訊的聽感無明顯下降。而這比學術界 AI 降噪經常使用的 16kHz 取樣音訊有效頻帶更寬,對於演算法與模型的要求更高,更加複雜。
其次,音樂訊號需要保留,音樂訊號的特徵比語音訊號更加複雜,語音主要是以人發聲為主,而音樂訊號包含的樂器種類繁多,難度升級。
再次,針對音訊直播場景可參考的開源 AI 降噪演算法非常難找,幾乎沒有。
最後,由於取樣率過高,可用的開源資料集也是相對較少。
(解決方案一)
解決方案一
此方案的核心思想是將傳統降噪方案與 AI 音樂檢測演算法結合,既保持傳統降噪的優勢,又引入了深度學習的優勢,從而使得演算法效能達到穩定效果,又在效能上有一個很大的提升。
圖中藍色框是傳統降噪演算法的原理框圖,具體而言,就是含噪語音 y(t) 經過 STFT 處理得到幅度譜,經分位數噪音估計、特徵更新、語音出現概率模組得到噪音的更新值,計算出 Gain 值,最後經 iSTFT 變換得到增強音訊;
黃色模組對應 AI 音樂檢測模組,其中輸入語音經 STFT 處理輸入到基於 RNN 的音樂檢測模組,然後將其檢測結果輸入到 Noise Factor 模組計算得到指導噪音更新的因子,達到一個能夠有效保留音樂訊號的噪音估計值,從而有效地保護音樂訊號。
在不增加過多計算複雜度的情況下,解決方案一可以有效提高音樂訊號的保真度。其中訓練網路的資料集,選用語音+音樂訊號作為目標訊號的資料集,而利用多場景的噪音訊號作為背景噪音集。
(解決方案二)
解決方案二
核心思想是直接利用全 AI 降噪演算法來完成設計,大致的原理框圖如下:含噪資料經過 STFT 變換後,經過深度學習網路,然後選用 Mask 或語音作為目標完成模型的訓練迭代。
所使用的資料同樣需要語音與音樂訊號作為目標訊號,多種場景的噪音為背景噪音集。
(原始音訊)
(傳統降噪)
(AI 降噪)
結果顯示,AI 降噪演算法的音樂頻譜相比於傳統方法在音樂保真度方面更強。
未來,在傳統降噪演算法與 AI 降噪融合的角度,融雲將進一步探索引入深度學習噪音估計模組等方式,進一步發揮傳統演算法與 AI 演算法的優勢。
在全 AI 場景,核心網路部分繼續針對 RNN、GAN、Transformer 等展開進一步研究,以及不同目標與 Loss 的影響等。
同時,深度學習技術還在持續發展,我們也會不斷探索基於新模型的 AI 降噪技術。