RNNoise算法
RNNoise算法論文閱讀
摘要
??盡管噪聲抑制是信號處理中的一個相對成熟的領域,但它仍然依賴于估計器算法和參數微調。本文中,作者展示了一種噪聲抑制的混合DSP/深度學習方法。作者在保證輸出高質量增強語音的同時,盡可能地降低算法的復雜性。利用四層隱含層的深度循環神經網絡估計理想的臨界頻帶增益,并采用傳統的基音濾波器衰減基音諧波間的噪聲。與傳統的最小均方誤差頻譜估計器相比,該方法實現了更高的增強語音質量,且保持了足夠低的復雜性,以便以48KHz的采樣率實時在低功耗CPU上操作。
關鍵詞:噪聲抑制、循環神經網絡
Ⅰ.介紹
??從上世紀70年代開始,噪聲抑制一直是一個令人感興趣的話題。顧名思義,該想法是獲取噪聲信號并消除盡可能多的噪聲,同時使目標語音失真最小。傳統形式的頻譜估計技術依賴于噪聲頻譜估計器(Noise Spectral Estimation,NSE),如圖2.1所示:
圖2.1 傳統噪聲抑制算法結構圖語音活性檢測器(Voice Activity Detection,VAD)及其相關算法是噪聲頻譜估計器的驅動。圖中的語音活性檢測器(Voice Activity Detection,VAD)、噪聲頻譜估計器(Noise Spectral Estimation,NSE)、譜減器(Spectral Subtraction,SS)這三個都需要準確的估計算法且難以調整。例如,原始的初始噪聲估計器和基于譜減法的譜估計器[1]已被更準確的譜估計器[2,3]和譜幅度估計器[4]所取代。盡管有所改進,但這些估計器仍然難以設計,并且需要大量的手動調整工作。這就是為什么深度學習的最新進展對噪聲抑制很有吸引力。
??深度學習技術已經被用于噪聲抑制[5,6,7,8,9]。許多提議的方法針對無需低延遲的自動語音識別(Automatic speech recognition,ASR)應用程序。此外,在許多情況下,神經網絡的大尺寸使得沒有GPU的設備實時實現變得困難。在本文所提及的方法中,作者專注于具有低復雜性的實時應用程序(如視頻會議)。作者同樣專注于全頻段(48KHz)語音。為了實現這些目標,作者選擇了一種混合方法(第Ⅱ節),依靠經過驗證的信號處理技術并使用深度學習(第Ⅲ節)來替代傳統方法難以調整的估計器。這種方法與所謂的端到端系統形成鮮明對比,后期大部分或全部信號處理操作都被機器學習所替代。這些端到端系統已經清晰地展現了深度學習的能力,但它們通常以顯著增加復雜性為代價。
??作者在第Ⅳ節中表明了所提及的方法具有可接受的復雜性,并比傳統的方法具有更高的增強語音質量(見第Ⅴ節)。在第Ⅵ節總結并展望了進一步改進該方法的方向。
Ⅱ.信號模型
??作者提出了一種混合噪聲抑制方法:始終保留所有必需的基本信號處理(沒有神經網絡嘗試對其進行仿真),但是讓神經網絡學習所有需要在信號處理旁邊進行無休止調整的棘手部分。
??主處理循環基于具有50%混疊(10ms幀移)的20ms窗口。分析和綜合都使用相同的Vorbis傳函數[10],滿足PrincenBradley準則[11]。窗函數定義為:
w(n)=sin?[π2sin?2(πnN)](2.1)w(n)=\sin[\frac{\pi}{2}\sin^{2}(\frac{\pi n}{N})] \tag{2.1} w(n)=sin[2π?sin2(Nπn?)](2.1)
其中,NNN表示窗口長度。
??該系統的信號級框圖如圖2所示。大部分抑制是使用從循環神經網絡(RNN)計算得出的增益在低分辨率頻譜包絡上執行的。這些增益只是理想比值掩膜(Ideal Ratio Mask,IRM)的平方根,為了進一步進行噪聲抑制,使用FIR濾波器進行基音濾波,去除基音諧波間的噪聲。
A.頻帶結構
??在[5]采取的方法中,神經網絡用于直接估計頻率區間的大小,總共需要6144個隱藏單元和接近1000萬個權重來處理8KHz語音。擴展到48KHz語音(使用20ms的幀長)需要400個輸出(0到20KHz)的網絡,這顯然會導致算法達到無法承受的復雜度。
??避免該問題的一種方法是假設語音和噪聲的頻譜包絡足夠平坦,以使用比頻率區間(frequency bin)更粗糙的分辨率。此外,該方法不直接估計頻譜幅度,而是估算關鍵頻帶的最優增益,該增益具有限制在0到1之間的顯著優勢。該方法使用與Opus編碼器[13]中使用的巴克刻度(Bark Scale)[12]近似版本相同的劃分方法將頻帶進行劃分。也就是說,這些頻帶在高頻段遵循巴克刻度,但在低頻段始終至少為4個頻率區間。作者使用三角窗函數而不是矩形窗,峰值響應位于頻帶間的邊界。共使用了22個頻帶,因此,網絡僅需輸出22個范圍在[0,1]之間的值。
??設wb(k)w_{b}(k)wb?(k)為頻帶bbb在頻率kkk上的振幅,且∑bwb(k)=1\sum_{b}w_{b}(k)=1∑b?wb?(k)=1。對于變換后的信號X(k)X(k)X(k),頻帶中的能量由下式給出:
E(b)=∑bwb(k)∣X(k)∣2(2.2)E(b)=\sum_{b}w_{b}(k)\lvert X(k) \rvert^2 \tag{2.2} E(b)=b∑?wb?(k)∣X(k)∣2(2.2)
每個頻帶增益定義為gbg_{b}gb?:
gb=Es(b)Ex(b)(2.3)g_{b}=\sqrt \frac{E_{s}(b)}{E_{x}(b)} \tag{2.3} gb?=Ex?(b)Es?(b)??(2.3)
其中,Es(b)E_{s}(b)Es?(b)為純凈語音(標注數據、基準數據)的能量,而EX(b)E_{X}(b)EX?(b)為輸入語音(含噪聲)的能量。考慮到最優頻帶增益g^b\hat g_{b}g^?b?,以下內插增益用于各個頻帶kkk:
r(k)=∑bwb(k)g^b(2.4)r(k)=\sum_{b}w_{b}(k)\hat g_{b} \tag{2.4} r(k)=b∑?wb?(k)g^?b?(2.4)
B.基音濾波
??使用巴克刻度衍生頻帶來計算增益的主要缺點是我們無法在頻譜中對更精細的細節進行建模。實際上,這不利于抑制基音諧波間的噪聲。作為替代方案,我們可以在基音周期使用梳狀濾波器來消除諧波間噪聲,這與語音編碼器后置濾波器的工作方式[14]相似。因為語音信號的周期性嚴重依賴于頻率(尤其是采樣率為48KHz的語音信號),因此基音濾波器基于每個頻帶濾波系數αb\alpha_{b}αb?應用在頻域。設P(k)P(k)P(k)為加時延的基音信號x(n?T)x(n-T)x(n?T)的加窗截取后的DFT,通過計算X(k)+αbP(k)X(k)+\alpha_{b}P(k)X(k)+αb?P(k)來執行濾波,然后將結果重新歸一化,使得每個頻帶的信號具有和原始信號X(k)X(k)X(k)相同的能量。
??頻帶bbb的基音相關性定義為:
p(b)=∑kwb(k)R[X(k)P?(k)]∑kwb(k)∣X(k)∣2?∑kwb(k)∣P(k)∣2(2.5)p(b)=\frac{\sum_{k}w_{b}(k)\mathcal{R}[X(k)P^{*}(k)]}{\sqrt{\sum_{k}w_{b}(k)\lvert X(k) \rvert^2 \cdot \sum_{k}w_{b}(k)\lvert P(k) \rvert^2}} \tag{2.5} p(b)=∑k?wb?(k)∣X(k)∣2?∑k?wb?(k)∣P(k)∣2?∑k?wb?(k)R[X(k)P?(k)]?(2.5)
其中,R[?]\mathcal{R}[\cdot]R[?]表示復數值的實部,??\cdot^{*}??表示復共軛。注意,對于單個頻帶,(2.5)等效于時域上的基音相關性。
??推導濾波系數αb\alpha_{b}αb?的最佳值是困難的,并且最小化均方誤差(Minimize Mean Squared Error,MMSE)在感知上并不是最佳的。相反,我們使用基于以下約束和觀察的啟發式方法。由于噪聲會導致基音相關性降低,正常來說,pbp_{b}pb?會小于gbg_{b}gb?,因此,對于任何pb≥gbp_{b} \geq g_{b}pb?≥gb?的頻帶,αb=1\alpha_{b}=1αb?=1。在沒有噪聲的情況下,由于不想讓信號失真,所以當gb=1g_{b}=1gb?=1時,αb=0\alpha_{b}=0αb?=0。類似地,當pb=0p_{b}=0pb?=0時,由于不需要增強基音,因此αb=0\alpha_{b}=0αb?=0。考慮所有上述約束及它們間的平滑行為,使用下述表達式來計算濾波器系數:
αb=min?(pb2(1?gb2)(1?pb2)gb2,1)(2.6)\alpha_{b}=\min(\sqrt{\frac{p_{b}^2(1-g_{b}^2)}{(1-p_{b}^2)g_{b}^2}},1) \tag{2.6} αb?=min((1?pb2?)gb2?pb2?(1?gb2?)??,1)(2.6)
??即使我們在這里使用了FIR基音濾波器,也可以基于形式為H(z)=1/(1?βz?T)H(z)=1/(1-\beta z^{-T})H(z)=1/(1?βz?T)的IIR基音濾波器來計算PkP_{k}Pk?,這會更好地抑制基音諧波間的噪聲,代價是失真會稍微增加。
C.特征提取
??神經網絡的輸入和輸出的頻帶數目應該相等,且應包含噪聲信號的對數譜。為了改善訓練數據的條件,我們將對數頻譜進行離散余弦變換(Discrete Cosine Transform,DCT),得到22個巴克頻率倒譜系數(Bark-Frequency Cepstral Coefficients,BFCC )。除此之外,還包括前6個BFCC的時域上的一階二階導數。由于我們已經需要在(2.5)中計算基音,因此,我們計算整個頻帶上基音相關性的DCT,并將其前6個系數包括到特征集中。最后, 加上基音周期以及有助于語音檢測的頻譜非平穩性度量。總共使用42個輸入特征(22+6x2+6+1+1)。與語音識別中通常使用的特征不同, 這里不使用倒譜均值歸一化, 并且包含第一倒譜系數。這是有意的選擇, 因為我們需要跟蹤噪聲的絕對水平, 這確實會使特征對信號的絕對幅度和信道頻率響應敏感。這將在章節III-A中討論。
Ⅲ.深度學習架構
??神經網絡緊密遵循噪聲抑制算法的傳統結構,如圖3所示。該設計基于以下假設:三個循環層分別構成圖1中的基本組成部分之一。在實踐中,神經網絡可以完全不是如我們所規劃這樣的承擔這些功能 (并且可能在某種程度上確實如此)。它總共包括215個單元,4個隱藏層,最大的一層有96個單元。我們發現增加單元數量并不能顯著提高噪聲抑制的質量。但是,損失函數和我們構造訓練數據的方式對最終質量有很大影響。我們發現門控循環單元(GRU)[15]在此任務上略勝于LSTM,同時也更簡單。
圖2.3 神經網絡架構圖 圖2.3中,包括前饋網絡, 全連接(稠密)層, 和循環層, 包括激活函數和每層的單元數。 ??盡管不是那么必要,但該網絡仍包含VAD輸出。額外的復雜性成本很小(額外增加了24個權重),并且這通過確保相關GRU確實學會了區分語音和噪聲,改善了訓練效果。 ##### A.訓練數據 ??因為標記數據既需要嘈雜的語音, 也需要純凈的語音,因此必須通過在純凈的語音數據中添加噪聲來人工構建訓練數據。對于語音數據,我們使用McGill TSP語音數據庫(http://www-mmsp.ece.mcgill.ca/Documents/Data/, 法語和英語) 和用于語音測量的NTT多語言語音數據庫(NTT Multi-Lingual Speech Database, 21種語言, 使用44.1 kHz音頻CD軌道而不是16 kHz數據文件)。使用各種噪聲源,包括計算機風扇,辦公室,人群,飛機,汽車,火車,建筑。噪聲以不同的級別混音以產生范圍很寬的信噪比,包括干凈的語音和純噪聲段。 ??由于我們不使用倒譜均值歸一化,因此我們使用數據增強來使網絡對頻率響應的變化具有魯棒性。這是通過使用以下形式的二階濾波器針對每個訓練數據獨立過濾噪聲和語音信號來實現的:H(z)=1+r1z?1+r2z?21+r3z?1+r4z?4(2.7)H(z)=\frac{1+r_{1}z^{-1}+r_{2}z^{-2}}{1+r_{3}z^{-1}+r_{4}z^{-4}} \tag{2.7} H(z)=1+r3?z?1+r4?z?41+r1?z?1+r2?z?2?(2.7)
其中,r1、...、r4r_{1}、... 、r_{4}r1?、...、r4?中的都是均勻分布在[?3/8,3/8][-3/8, 3/8][?3/8,3/8] 之間的隨機值。對信號幅度的魯棒性是通過改變混合信號的最終幅度來實現的。
??我們總共有6個小時的語音和4個小時的噪聲數據,通過使用各種增益和濾波器組合并將數據重新采樣到40 kHz至54 kHz之間的頻率,可以產生140個小時的嘈雜語音。
B.優化過程
??在訓練過程中, 因為無法精確確定正確的增益, 損失函數被用于判斷衰減是過多了還是少了。盡管二值交叉熵函數在優化[0,1] 中的值用的很普遍, 但因為它與感知效果不匹配, 在獲取合適增益值時結果并不好。我們使用以下損失函數進行訓練:
L(gb,g^b)=(gbγ?g^bγ)2(2.8)L(g_{b},\hat g_{b})=(g_{b}^{\gamma}-\hat g_{b}^{\gamma})^2 \tag{2.8} L(gb?,g^?b?)=(gbγ??g^?bγ?)2(2.8)
其中,g^b\hat g_{b}g^?b?為增益估計,gbg_{b}gb?為對應的實際的增益。指數γ\gammaγ為一個感知參數,控制抑制噪聲的程度,由于lim?γ→0xγ?1γ=log?(x)\lim_{\gamma \rightarrow 0}\frac{x^{\gamma}-1}{\gamma}=\log (x)limγ→0?γxγ?1?=log(x),因此lim?γ→0L(gb,g^b)\lim_{\gamma \rightarrow 0}L(g_{b},\hat g_{b})limγ→0?L(gb?,g^?b?)最小化對數能量的均方誤差,如果增益太小會導致抑制得太狠。實際中發現,γ=1/2\gamma =1/2γ=1/2是個比較合適的值,此時相當于在能量是原有能量的1/4的情況下的最小化均方誤差。有時, 在特定頻段中可能沒有噪音且沒有語音, 比如當輸入為無聲時或在高頻段上的信號被低通濾掉時。如果發生這種情況,則將標記數據的增益明確標記為undefined,并且忽略該增益的損失函數,以避免破壞訓練過程。
??對于神經網絡的VAD輸出,我們使用標準的交叉熵損失函數。訓練在Tensorflow后臺和Keras庫上進行。
C.增益平滑
??當使用估計增益g^b\hat g_{b}g^?b?抑制噪聲時,有時輸出噪聲聽起來很干,缺少預期的混響成分。通過限制跨幀的g^b\hat g_{b}g^?b?衰減,可以很輕易解決該問題。平滑增益g~b\tilde{g}_{b}g~?b?通過下式獲得:
g~b=max?(λg~b(prev),g^b)(2.9)\tilde g_{b} = \max(\lambda \tilde{g}_{b}^{(prev)},\hat g_{b}) \tag{2.9} g~?b?=max(λg~?b(prev)?,g^?b?)(2.9)
其中,g~b(prev)\tilde{g}_{b}^{(prev)}g~?b(prev)?為前一幀濾波增益,衰減因子λ=0.6\lambda=0.6λ=0.6等效于135ms的混響時間。
Ⅳ.復雜度分析
??為了使噪聲抑制算法易于部署,希望保持大小和復雜度都較低。可執行文件的大小由代表神經網絡中215個單位所需的87503個權重決定。為了使尺寸盡可能小,可以將權重量化為8位而不會降低性能。這樣就可以將所有權重放入CPU的L2緩存中。
??由于每個權重在每幀的乘加運算中恰好使用一次,因此神經網絡每幀需要175,000個浮點運算(我們將乘加算作兩個運算),因此實時使用需要17.5 M flops。每幀的IFFT和兩個FFT大約需要7.5 M flops,基音搜索(以12 kHz的頻率運行)大約需要10 M flops。該算法的總復雜度約為40 M flops,與全頻帶語音編碼器相當。
??該算法的非矢量C實現方式需要大約1.3%的單個x86內核(Haswell i7-4800MQ)來執行單個通道的48 kHz噪聲抑制。在1.2 GHz ARM Cortex-A53內核(Raspberry Pi 3)上,相同浮點代碼的實時復雜度為14%。作為比較,[9]中的16 kHz語音增強方法使用3個隱藏層,每個隱藏層具有2048個單位。這需要1250萬的重量,導致1600 M flops的復雜度。即使量化為8位,其權重也不適合大多數CPU的緩存,其實時操作需要大約800 MB/s的內存帶寬。
Ⅴ.結果
??作者使用訓練集中未使用的語音和噪聲數據測試噪聲抑制的質量。我們將其與SpeexDSP庫(https://www.speex.org/downloads/)中基于MMSE的噪聲抑制器進行了比較。盡管噪聲抑制工作在48 kHz,但由于寬帶PESQ的局限性,必須將輸出重新采樣至16 kHz [16]。圖2.5中的客觀結果表明,通過使用深度學習(特別是對于非平穩噪聲類型),質量得到了顯著改善。通過隨意聆聽樣品可以確認這種改進。圖2.4展示了示例中的噪聲抑制的效果。
圖2.4 噪聲抑制結果圖圖中為在SNR為15 dB, 對嘈雜噪聲 (babble Noise) 的噪聲抑制示例語音的語譜圖, (上:noisy,中:RNNoise,下:clean speech), 為了清楚起見,僅顯示0-12 kHz頻帶。
圖2.5 PESQ MOS-LQO質量評估 圖中的三個場景分別為:嘈雜(babble), 汽車(car)和街道(street)噪音場景。Ⅵ.結論
??本文演示了一種噪聲抑制方法,該方法將基于DSP的技術與深度學習相結合。通過僅將深度學習用于難以調節的噪聲抑制方面,將問題簡化為僅計算22個最優的關鍵頻帶增益,而且只需幾個單元就可以有效地完成。然后,通過使用簡單的基音濾波器解決頻段的粗分辨率。所產生的低復雜度使該方法適用于移動或嵌入式設備,并且時延足夠低,可用于視頻會議系統。我們還證明,其質量明顯高于基于純信號處理的方法。該技術可以輕松擴展到殘留回聲抑制,例如,通過將遠端信號或濾波后的遠端信號的倒頻譜添加到輸入特征中。同樣,它應適用于麥克風陣列后過濾,方法是像[17]那樣通過泄漏(leakage)估計來增強輸入特征。
參考文獻
[1].S. Boll, “Suppression of acoustic noise in speech using spectral subtraction,” IEEE Transactions on acoustics, speech, and signal processing, vol. 27, no. 2, pp. 113–120, 1979. [2].H.-G. Hirsch and C. Ehrlicher, “Noise estimation techniques for robust speech recognition,” in Proc. ICASSP, 1995, vol. 1, pp. 153–156. [3].T. Gerkmann and R.C. Hendriks, “Unbiased MMSE-based noise power estimation with low complexity and low tracking delay,” IEEE Transactions on Audio, Speech, and Language Processing, vol. 20, no.4, pp. 1383–1393, 2012. [4].Y. Ephraim and D. Malah, “Speech enhancement using a minimum mean-square error log-spectral amplitude estimator,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 33, no. 2, pp. 443–445, 1985. [5].A. Maas, Q.V. Le, T.M. O’Neil, O. Vinyals, P. Nguyen, and A.Y. Ng,“Recurrent neural networks for noise reduction in robust ASR,” in Proc.INTERSPEECH, 2012. [6].D. Liu, P. Smaragdis, and M. Kim, “Experiments on deep learning for speech denoising,” in Proc. Fifteenth Annual Conference of the International Speech Communication Association, 2014. [7].Y. Xu, J. Du, L.-R. Dai, and C.-H. Lee, “A regression approach to speech enhancement based on deep neural networks,” IEEE Transactions on Audio, Speech and Language Processing, vol. 23, no. 1, pp. 7–19, 2015. [8].A. Narayanan and D. Wang, “Ideal ratio mask estimation using deep neural networks for robust speech recognition,” in Proc. ICASSP, 2013, pp. 7092–7096. [9].S. Mirsamadi and I. Tashev, “Causal speech enhancement combining data-driven learning and suppression rule estimation.,” in Proc. INTERSPEECH,2016, pp. 2870–2874. [10].C. Montgomery, “Vorbis I specification,” 2004. [11].J. Princen and A. Bradley, “Analysis/synthesis filter bank design based on time domain aliasing cancellation,” IEEE Tran. on Acoustics, Speech, and Signal Processing, vol. 34, no. 5, pp. 1153–1161, 1986. [12].B.C.J. Moore, An introduction to the psychology of hearing, Brill, 2012. [13].J.-M. Valin, G. Maxwell, T. B. Terriberry, and K. Vos, “High-quality, low-delay music coding in the Opus codec,” in Proc. 135th AES Convention, 2013. [14].Juin-Hwey Chen and Allen Gersho, “Adaptive postfiltering for quality enhancement of coded speech,” IEEE Transactions on Speech and Audio Processing, vol. 3, no. 1, pp. 59–71, 1995. [15].K. Cho, B. Van Merri?nboer, D. Bahdanau, and Y. Bengio, “On the properties of neural machine translation: Encoder-decoder approaches,” in Proc. Eighth Workshop on Syntax, Semantics and Structure in Statistical Translation (SSST-8), 2014. [16].ITU-T, Perceptual evaluation of speech quality (PESQ): An objective method for end-to-end speech quality assessment of narrow-band telephone networks and speech codecs, 2001. [17].J.-M. Valin, J. Rouat, and F. Michaud, “Microphone array post-filter for separation of simultaneous non-stationary sources,” in Proc. ICASSP, 2004.總結
- 上一篇: mysql adodb_MySql Ad
- 下一篇: WinRunner和QTP对比