1. 程式人生 > 其它 >論文翻譯:2020_A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement

論文翻譯:2020_A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement

文章方向:語音增強

論文地址基於DSP/深度學習的實時全頻帶語音增強方法

部落格地址https://www.cnblogs.com/LXP-Never/p/15144882.html

論文程式碼https://github.com/xiph/rnnoise


摘要

  儘管噪聲抑制已經是訊號處理中一個成熟的領域,但仍然需要對它的估計演算法和引數進行調優。文章演示了一種融合DSP /深度學習來抑制噪聲的方法。該方法在致力於保持儘可能低的計算複雜度的同時,實現了高質量的增強語音。使用具有四個隱藏層的深層遞迴神經網路來估計理想臨界頻帶增益,而用傳統的基頻濾波器抑制諧波之間的噪聲。 與傳統的最小均方誤差譜估計器相比,該方法可顯著提高語音質量,同時將複雜度保持在足夠低的水平。

關鍵詞:噪聲抑制,迴圈神經網路

1 引言

  至少從 70年代開始,噪聲抑制就成為人們關注的話題。儘管質量有了顯著提升,但演算法結構基本保持不變。一些譜估計技術依賴於噪聲譜估計器,而噪聲譜估計器由語音活動檢測器( VAD)或類似的演算法驅動,如圖 1所示。 3個模組中的每個模組都需要準確的估計器,並且很難去調。儘管研究者們改進了這些估計器,但仍然很難設計它們,並且該過程需要大量的人工調優。這就是為什麼最近深度學習技術上的進展對噪聲抑制具有吸引力的原因。

圖1大多數噪聲抑制演算法的高階結構

  深度學習技術已被用於噪聲抑制。許多方法都針對不需要低延遲的自動語音識別(ASR)應用。而且,在許多情況下,如果沒有GPU,神經網路的龐大規模將使得實時實現變得困難。文章專注於低複雜度的實時應用(例如視訊會議),還專注於全頻帶(48 kHz)語音。為了實現這些目標,文章選擇了一種混合的方法,該方法依靠訊號處理技術並使用深度學習來替代傳統上難以調優的估計器。該方法與所謂的端到端系統形成對比,在端到端系統中,大多數或所有訊號處理操作都被機器學習取代。這些端到端系統已經明確地展示了深度學習的能力,但是它們通常以顯著地增加複雜度為代價。

  我們證明了所提出的方法具有可接受的複雜性(第4節),並且它提供了比更傳統的方法更好的質量(第5節)。我們在第6節總結了進一步改進該方法的方向。

2 訊號模型

  我們提出了一種混合的噪聲抑制方法。我們的目標是在需要仔細調整的噪聲抑制方面使用深度學習,而在不需要調整的部分使用傳統的訊號處理模組。

  演算法使用20ms的幀長,10ms的幀移。分析窗(analysis)和合成窗(synthesis)都使用Vorbis窗,它滿足Princen- Bradley準則。該窗定義如下:
$$公式1:w(n)=\sin \left[\frac{\pi}{2} \sin ^{2}\left(\frac{\pi n}{N}\right)\right]$$

其中$N$是窗長。

  系統框圖如圖2所示。大部分的抑制是在低解析度的譜包絡上進行的,使用的增益是從遞迴神經網路(RNN)計算的。這些增益僅僅是理想比率掩模(IRM)的平方根。在此基礎上使用梳狀濾波器(pitchcomb filter)來抑制諧波之間的噪聲以達到更加精細的抑制。

圖2:框圖

A 帶(band)結構

  在[5]的方法中,使用神經網路直接估計頻率Bin的大小,共需要6144個隱藏單元和近1000萬個權重來處理8 kHz的語音。使用20ms幀擴充套件到48kHz語音需要400個輸出(0到20kHz)的網路,這顯然會導致我們無法承受的更高複雜性。

  避免這個問題的一種方法是假設語音和噪聲的頻譜包絡足夠平坦,從而使用比頻率bin更粗糙的解析度。此外,我們不是直接估計譜幅,而是估計理想的臨界頻帶增益,其顯著優點是限制在0和1之間。我們選擇將頻譜劃分為與Opus編解碼器[13]使用的Bark scale[12]相同的近似。也就是說,高頻波段遵循Bark scale,但低頻波段始終至少有4個bins。我們使用三角形band,而不是矩形band,峰值響應位於帶之間的邊界。這總共產生了22個波段。因此,我們的網路只需要[0,1]範圍內的22個輸出值。

  設$w_b(k)$為頻帶$b$在頻率$k$處的振幅,我們有$\sum_bw_b(k)=1$。對於變換後的訊號$X(k)$,頻帶中的能量由下式給出

$$公式2:E(b)=\sum_{k} w_{b}(k)|X(k)|^{2}$$

每個頻帶的增益定義為$g_b$

$$公式3:g_{b}=\sqrt{\frac{E_{s}(b)}{E_{x}(b)}}$$

  式中,$E_s(b)$是純淨語音(ground truth)的能量,$E_x(b)$是輸入(帶噪)語音的能量。考慮到理想頻帶增益$\hat{g}_b$,以下插值增益應用於每個頻點$k$:

$$公式4:r(k)=\sum_{b} w_{b}(k) \hat{g}_{b}$$

BPitch濾波器

  使用Bark-derived bands計算增益的主要缺點是,我們無法模擬頻譜中更精細的細節。實際上,這可以防止pitch harmonics之間的噪聲抑制。作為替代方案,我們可以在pitch period使用comb filter,以類似於語音編解碼器後濾波器的方式消除inter-harmonic噪聲[14]。由於語音訊號的週期性在很大程度上取決於頻率(特別是對於48khz取樣率),因此pitch(基音)濾波器基於每頻帶濾波係數$\alpha_b$在頻域中工作。假設$P(k)$是基音延遲訊號$x(n-T)$的加窗DFT,通過計算$X(k)+\alpha_bP(k)$然後重新歸一化得到的訊號,使其在每個頻帶中具有與原始訊號$X(k)$相同的能量來執行濾波。

  band$b$的基音相關定義為:

$$公式5:p_{b}=\frac{\sum_{k} w_{b}(k) \Re\left[X(k) P^{*}(k)\right]}{\sqrt{\sum_{k} w_{b}(k)|X(k)|^{2} \cdot \sum_{k} w_{b}(k)|P(k)|^{2}}}$$

其中$\Re$表示複數值的實部,.* 表示複共軛。 請注意,對於單個band,公式(5) 將等效於時域基音相關性。

  推導濾波器係數$\alpha_b$的最優值是困難的,使均方誤差最小的值在感知上不一定是最優的。相反,我們使用基於以下約束和觀察的啟發式方法。由於噪聲會導致音高相關性降低,因此我們不希望$p_b$平均大於$g_b$,因此對於$p_b \geq g_b$的任何頻段,我們使用$\alpha_b=1$。 在沒有噪聲的情況下,我們不想使訊號失真,所以當$g_b = 1$時,我們用$\alpha_b = 0$。同樣,當$p_b = 0$時,我們沒有pitch要增強,所以$\alpha_b = 0$。對濾波器係數使用以下表達式會尊重所有這些約束,並且它們之間的行為是平滑的:

$$公式6:\alpha_{b}=\min \left(\sqrt{\frac{p_{b}^{2}\left(1-g_{b}^{2}\right)}{\left(1-p_{b}^{2}\right) g_{b}^{2}}}, 1\right)$$

  即使我們在這裡使用 FIR pitch濾波器,也可以基於$H(z)=1 /\left(1-\beta z^{-T}\right)$形式的 IIR 音調濾波器計算$P(k)$,從而以略微增加失真為代價導致諧波之間的更多衰減。

C 特徵提取

  只有在網路的輸入中包含與輸出相同頻帶的噪聲訊號的對數譜才有意義。為了改善訓練資料的條件,我們在對數譜上應用DCT,得到22個Bark-frequency倒頻譜系數(BFCC)。除此之外,我們還包括前6個bfcc的時間導數和二階時間導數。因為我們已經需要計算(5)中的基音,所以我們計算跨頻帶基音相關的DCT,並將前6個係數包含在我們的特徵集中。最後,我們加入了基音週期以及一個有助於語音檢測的頻譜非平穩性度量。我們總共使用了42個輸入特性。

  與語音識別中通常使用的特徵不同,這些特徵不使用倒譜均值歸一化,並且包含第一倒譜系數。這個選擇是經過深思熟慮的,因為我們必須跟蹤噪聲的絕對振幅,但它確實使特徵對訊號的絕對振幅和通道頻率響應敏感。這在第III-A節中有說明。

3深度學習模型

  神經網路與傳統的噪聲抑制演算法結構密切相關,如圖3所示。該設計基於以下假設:三個迴圈層分別負責圖1中的一個基本元件。當然,在實踐中,神經網路可以自由地偏離這個假設(而且在某種程度上很可能是這樣的)。它總共包含215個單位,4個隱藏層,最大的層有96個單位。我們發現,增加單元數量並不能顯著改善噪聲抑制的質量。然而,損失函式和我們構造訓練資料的方式對最終質量有很大的影響。我們發現門控迴圈單元(GRU)[15]在這個任務上略優於LSTM,同時也更簡單。

  儘管事實上它不是嚴格必需的,網路包括一個VAD輸出。額外的複雜性代價非常小(24個額外權重),它通過確保相應的GRU確實學會了從噪聲中區分語音來改進訓練。

圖3神經網路的架構,顯示前饋、全連線(密集)層和迴圈層,以及每層的啟用函式和單元數

A 訓練資料

  由於增益的ground truth既需要有噪聲的語音,也需要有乾淨的語音,因此必須通過在乾淨的語音資料中加入噪聲來人工構造訓練資料。對於語音資料,我們使用McGill TSP語音資料庫(法語和英語)和 NTT多語言電話語音資料庫(21種語言)(使用44.1kHz音訊CD軌道被使用而不是16kHz資料檔案)。人們使用各種各樣的噪聲源,包括電腦風扇、辦公室、人群、飛機、汽車、火車和建築。噪聲在不同的水平上混合,以產生廣泛的信噪比,包括乾淨的語音和純噪聲段。

  由於我們沒有使用倒譜平均歸一化,我們使用資料增強使網路對頻率響應的變化具有魯棒性。這是通過使用以下形式的二階濾波器為每個訓練示例獨立過濾噪聲和語音訊號來實現的

$$公式7:H(z)=\frac{1+r_{1} z^{-1}+r_{2} z^{-2}}{1+r_{3} z^{-1}+r_{4} z^{-2}}$$

其中$r_1 ... r_4$中的每一個都是在$[-\frac{3}{8},\frac{3}{8}]$範圍內均勻分佈的隨機值。 通過改變混合訊號的最終幅值來實現訊號幅度的穩健性。

  我們總共有6小時的語音和4小時的噪聲資料,我們使用這些資料產生140小時的噪聲語音,通過使用各種增益和濾波器的組合,並將資料重新取樣到40 kHz和54 kHz之間的頻率。

B優化過程

  用於訓練的損失函式決定了當網路不能準確地確定正確增益時,網路如何權衡過度衰減和不足衰減。雖然在優化[0,1]範圍的值時,通常使用二元交叉熵函式,但這並不會產生良好的結果,因為它與它們的感知效果不匹配。對於增益估計$\hat{g}_b$和相應的ground truth $g_b$,我們用損失函式訓練

$$公式8:L\left(g_{b}, \hat{g}_{b}\right)=\left(g_{b}^{\gamma}-\hat{g}_{b}^{\gamma}\right)^{2}$$

  其中$\gamma$指數是一個感知引數,用於控制抑制噪聲的積極程度。 由於$lim_{\gamma\rightarrow 0}\frac{x^\gamma-1}{\gamma}=log(x)$,$lim_{\gamma\rightarrow 0}L(g_b,\hat{g}_b)$最小化了對數能量的均方誤差,鑑於增益沒有下限,這會使抑制過於激進。 實際上,值$\gamma=\frac{1}{2}$提供了一個很好的權衡,等效於最小化能量的$\frac{1}{4}$次冪的均方誤差。 有時,特定頻段中可能沒有噪音和語音。 這在輸入無聲時或在訊號被低通濾波時的高頻時很常見。 當發生這種情況時,ground truth 增益被明確標記為未定義,並且該增益的損失函式被忽略以避免損害訓練過程。

  對於網路的VAD輸出,我們使用標準的交叉熵損失函式。訓練使用Keras庫和Tensorflow後端進行。

C 增益平滑

  當使用增益$\hat{g}_b$來抑制噪聲時,輸出訊號有時聽起來過於乾燥,缺乏最低期望的混響水平。這個問題很容易通過限制$\hat{g}_b$的跨幀衰減來解決。平滑增益$\tilde{g}_b$為

$$\tilde{g}_{b}=\max \left(\lambda \tilde{g}_{b}^{(p r e v)}, \hat{g}_{b}\right)$$

其中$\tilde{g}_b^{prev}$是前一幀的濾波增益,衰減因子$\lambda=0.6$相當於 135 ms 的混響時間。

4複雜度分析

  為了便於部署噪聲抑制演算法,需要保持較低的大小和複雜性。 可執行檔案的大小由代表神經網路中 215 個單元所需的 87,503 個權重決定。 為了保持儘可能小的尺寸,可以將權重量化為 8 位而不損失效能。 這使得在 CPU 的 L2 快取中適合所有權重成為可能。

  由於每個權重在乘加運算中每幀只使用一次,因此神經網路每幀需要 175,000 次浮點運算(我們將乘加算作兩次運算),因此需要 17.5 Mflops 以供實時使用。 IFFT 和每幀兩個 FFT 需要大約 7.5 Mflops,pitch搜尋(以 12 kHz 執行)需要大約 10 Mflops。 該演算法的總複雜度約為 40 Mflops,可與全頻帶語音編碼器相媲美。

  該演算法的非向量化 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 Mflops 的複雜性。 即使量化為 8 位,權重也不適合大多數 CPU 的快取,實時操作需要大約 800 MB/s 的記憶體頻寬。

5 結果

  我們使用訓練集中未使用的語音和噪聲資料來測試噪聲抑制的質量。 我們將其與 SpeexDSP 庫中基於 MMSE 的噪聲抑制器進行比較。 儘管噪聲抑制在 48 kHz 下執行,但由於寬頻 PESQ [16] 的限制,必須將輸出重新取樣到 16 kHz。 圖 5 中的客觀結果表明,使用深度學習顯著提高了質量,尤其是對於非平穩噪聲型別。 通過隨意聆聽樣本證實了改進。 圖4顯示了噪聲抑制對示例的影響。

圖4 在15db信噪比下抑制胡言亂語噪聲的例子。噪聲(上)、去噪(中)和乾淨(下)語音的聲譜圖。為了清晰起見,只顯示0-12千赫波段

圖5PESQ MOS-LQO對噪音、汽車噪音和街道噪音的質量評估

  我們提出來系統的互動式演示可在 https://people.xiph.org/~jm/demo/rnnoise/ 獲得,包括實時 Javascript 實現。 實現提出系統的軟體可以在 https://github.com/xiph/rnnoise/ 的 BSD 許可下獲得,結果是使用提交雜湊 91ef401 生成的。

6 總結

  本文介紹了一種將基於DSP技術和深度學習相結合的噪聲抑制方法。通過僅對難以調諧的噪聲抑制方面使用深度學習,問題被簡化為僅計算22個理想的臨界頻帶增益,這可以使用很少的單元有效地完成。然後,通過使用簡單的pitch濾波器處理頻帶的粗略解析度。由此產生的低複雜性使得該方法適合在移動或嵌入式裝置中使用,並且延遲足夠低,可用於視訊會議系統。我們還證明,質量明顯高於基於純訊號處理的方法。

  我們認為該技術可以很容易地擴充套件到殘餘回聲抑制,例如通過在輸入特徵中加入遠端訊號或濾波後的遠端訊號的倒頻譜。類似地,它應該適用於麥克風陣列後置濾波,通過使用 [17] 中的洩漏估計來增強輸入特徵。

參考文獻

[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.