










摘" 要 :語音增強是語音信號處理的重要分支,在語音識別、語音通信等領域具有重要應用。傳統數字信號處理(DSP)方法下的單通道語音增強計算量小,但效果不佳。近年來,深度學習算法大幅提升了單通道語音增強的效果,但往往計算量大,對硬件要求高,難以應用于移動設備或可穿戴設備。針對性能和計算量難以平衡的現狀,文章實現了一種低復雜度的基于深度學習的語音增強算法,并在樹莓派上進行了實現。該算法采用具有四個隱藏層的循環神經網絡(RNN),用于估計理想的臨界頻帶增益,而音高諧波之間的噪聲則采用傳統音高濾波器處理。實驗結果顯示,該系統能夠有效實現降噪功能,并且性能優于傳統的維納濾波算法。
關鍵詞:語音增強;RNNoise;實時;單通道;樹莓派
中圖分類號:TN912 文獻標識碼:A 文章編號:2096-4706(2025)03-0183-06
Research and Implementation of Smart Speech Noise Reduction Algorithm Based on Raspberry Pi
TAO Ran, ZHU Runqian, QIN Yitong, LING Haidong
(School of Communication and Artificial Intelligence, School of Integrated Circuits, Nanjing Institute of Technology, Nanjing" 211167, China)
Abstract: Speech enhancement is an important branch of speech signal processing and has significant applications in fields such as speech recognition and speech communication. The single-channel speech enhancement under traditional Digital Signal Processing (DSP) method has a small amount of computation, but the effect is not satisfactory. In recent years, Deep Learning algorithms have significantly improved the effect of single-channel speech enhancement. However, they usually have a large amount of computation and high hardware requirements, making it difficult to apply them to mobile or wearable devices. In view of the current situation where it is difficult to balance performance and computation, this paper implements a low-complexity Deep Learning-based speech enhancement algorithm and realizes it on a Raspberry Pi. This algorithm adopts a Recurrent Neural Network (RNN) with four hidden layers to estimate the ideal critical band gain, while the noise between pitch harmonics is processed using traditional pitch filters. Experimental results show that this system can effectively achieve the noise reduction function and outperforms the traditional Wiener filtering algorithm.
Keywords: speech enhancement; RNNoise; real-time; single-channel; Raspberry Pi
0" 引" 言
語音增強是語音信號處理的重要分支,目的是從含噪語音信號中分離出帶有信息的語音信號。隨著科技發展,出現了越來越多的語音場景,如移動通信、語音控制系統、聽力輔助等場景,往往會受到環境噪聲的干擾,顯著降低語音的可懂程度,從而降低人與人之間的交流效率,或是影響系統的識別和控制。并且,數量龐大的聽障人群更容易受到信號中噪聲的干擾,此時就需要語音增強來提升信號中語音的質量與可懂度。同時,隨著語音技術的進步,自動語音識別(Automatic Speech Recognition, ASR)的使用也越來越廣,無論是百度等搜索引擎,還是智能家居等交互設備,在復雜環境下的識別率都會大打折扣。因此,有效的語音增強技術對語音技術的發展而言極為重要。
語音增強技術相關的研究已經有了50多年的歷史,早期的語音增強算法主要是對帶噪語音估計其噪聲譜。對于單通道語音增強算法,如譜減法[1]、維納濾波法[2],對數最小均方誤差法[3]等。這些早期的算法具有計算簡單、實時性高的優勢。然而,考慮到背景噪聲的復雜統計特性,噪聲譜的估計往往會遇到很多問題。噪聲的復雜特性促使人們去借鑒人類的神經推導能力,因而早期有學者提出利用淺層神經網絡的非線性模型來學習帶噪語音信號在時域以及變換域上到目標語音信號的映射。然而早期的淺層神經網絡算法的規模較為有限,其對于具有復雜統計特性的語音信號的擬合能力有限,無法準確表示帶噪語音到干凈語音之間的映射。并且由于早期缺少合理的訓練優化方案,這種有監督學習很容易陷入局部最優解。而當參數繼續增加的時候,這一問題會更加嚴重。
隨著深度學習的不斷發展與進步,如今流行將深度神經網絡應用于整個問題,即端到端的方法[4-7],已經應用于語音識別等方面。雖然許多端到端的系統已經證明了深度神經網絡應用于語音信號處理的成功,但這些系統可能不是最優的,存在對系統資源的浪費,在一些降噪算法中,往往要用到幾千個神經元和幾千萬個權值,僅僅為了構成一層神經網絡,降噪效果的代價是計算成本和模型本身大小的龐大,硬件的實現必然需要高性能的GPU,難以用于小型設備。小型移動設備如助聽器等無法搭載GPU,采用深度學習的降噪算法即使質量高也無法使用,將深度神經網絡應用于整個問題,需要非常多的神經元和權值進行模擬,在這里我們需要減少神經網絡模擬的部分,從而降低所需的神經元數量,降低算法對硬件算力的要求,因此我們選擇RNNoise作為系統的核心算法,在此基礎上設計實時單通道語音增強系統。在48 kHz采樣率下,不需要GPU,在CPU低功耗狀態下也能實現語音增強效果。實驗中,該系統對硬件要求低于端到端的語音增強方法,效果明顯優于傳統維納濾波法,在樹莓派上也可以輕松實現高質量語音增強。
1" 基于RNN的單通道語音增強算法
1.1" RNNoise算法原理
循環神經網絡(Recurrent Neural Network, RNN)是一種仿照人類記憶體系創造出的具有短期記憶能力的神經網絡,由Elman[8]提出。在RNN中,神經元可以接受其他神經元的信息,也可以接受自身信息,形成環路。同時RNN的記憶特性使其同時被當前時刻的輸入與歷史輸入影響,這使得RNN適合學習數據在時間上的依賴關系,天然適合在時序數據上建模。語音信號數據往往在時間上相關性高,且屬于變長序列,因此選擇RNN來處理。但是,由于通過隨時間反向傳播算法來學習,當輸入序列較長時,會帶來梯度爆炸和消失的問題,LSTM[9-10]通過引入門機制來解決這些問題,像GRU等LSTM變體,可以基本解決RNN的長程依賴問題。
RNNoise算法由Valin[11]提出,按照傳統的噪聲抑制結果設計,如圖1所示。傳統結構分為三個部分:語音活動檢測(VAD)、噪聲頻譜估計、譜減。因此RNNoise中涉及三個循環層,分別負責這三個模塊。除此之外,該網絡還包含一個VAD輸出模塊,用來保證相應的GRU能夠區分噪聲和語音,提升訓練精度。
Valin假設信號中噪聲和語音的頻譜包絡足夠平坦,從而在較低分辨率的頻帶結構上進行降噪處理。RNNoise可通過較低的復雜度來實現高質量的語音增強。
大多數方法直接用神經網絡估計frequency bins,而大量的輸出需要設計大量的神經元,從而增加系統的復雜程度,因此需要調整方法。人耳對聲音的感知是非線性的,對低頻段更加敏感,基于Opus頻帶,使用Bark頻率標度進行劃分,在48 kHz采樣率下劃分出22個子帶。由此提取出22維的BFCCs和前六個BFCCs的一階和二階時間導數,基音周期和頻譜非平穩性度量參數,以及基音相關系數的DCT的前六個系數,一共包括了42個維度特征。
同時,計算理想臨界頻帶增益作為網絡的學習目標??蓪⑵淇闯梢环N頻帶上IRM的形式:
(1)
其中,Es(a)為a內干凈語音的能量,Ev(a)為噪聲的能量。
根據頻帶劃分,可將原先復雜的降噪任務看作一個長度為22的頻率均衡器,通過改變子帶上的值使噪聲衰減,實現語音增強。
1.2" 語音增強系統工作流程
語音增強系統流程示意圖如圖2所示。主要處理循環基于10毫秒的窗口,重疊50%(偏移5毫秒)。分析和綜合都使用相同的Vorbis窗口,滿足PrincenBradley準則[12]。窗口定義為:
(2)
其中,N = 480為窗長。
在低分辨率的音頻包絡上使用RNN計算增益,完成大部分噪聲抑制,同時使用音高梳濾波器衰減音高諧波之間的噪聲來完成更精細的調整。
2" 基于樹莓派的語音增強系統實現
2.1" 硬件整體構成
服務器端硬件的主要目的是為了實時采集語音,將語音增強后的音頻提供給用戶。軟件中設計了調用硬件的可視化交互界面。我們選擇用樹莓派搭載USB麥克風和3.5 mm耳機當作服務器,完成對聲音的收集,再通過樹莓派處理,進行語音增強,最后播放給用戶。硬件組成框圖如圖3所示。
其中樹莓派作為處理核心,我們選擇的是Raspberry Pi 4B版本,操作系統為官方提供的Raspberry Pi鏡像系統,SD卡大小為16 GB。
2.2" 軟件實現
我們通過USB麥克風采集音頻數據,在樹莓派中完成語音增強任務,在屏幕上顯示可視化界面,如圖4所示是樹莓派軟件界面圖,程序使用Python 3編寫,調用訓練后的RNNoise算法處理音頻。因此軟件分為底層運行程序與可視化界面程序兩個部分。
如圖5所示,可視化界面我們選擇Python中tkinter庫,交互界面分為四個部分:上部為菜單欄,根據用戶不同的需求有不同的按鍵;在命令設置部分,通過用戶點擊產生不同的指令,樹莓派后臺得到指令并進行對應的處理;開始錄音后彈窗顯示實時波形圖;并且開始實時語音增強處理,停止錄音后在輸入波形標簽右側顯示輸入音頻波形和語音增強后對應輸出波形; 通過打開文件夾方式可以直接顯示出保存的輸入和輸出音頻文件。
如圖6所示,通過觸摸屏可以獨立顯示并操作樹莓派界面采用USB麥克風實現對聲音的輸入,通過3.5 mm耳機實現音頻輸出。原理圖如下:
3" 實驗與討論
3.1" 實驗設置
3.1.1" 測試數據構成
本實驗使用到的干凈語音數據集數據來自LibriSpeech,是一個閱讀語音語料庫,基于 LibriVox 的公共領域有聲讀物其中包含11 350名志愿者用多種語言閱讀的10 000余條公共有聲讀物,并且從中篩選了65 000余條語音,得到的干凈語音集總時長為560 h。
噪聲數據我們選擇使用NoiseX-92 噪聲庫,該噪聲庫包15種噪聲,如汽車、人聲、街道等常見的生活場景。
我們使用代碼將每條干凈語音與每種噪聲,在-5 dB、0 dB、5 dB、10 dB、15 dB范圍中的每一個SNR結合,生成在15種噪聲下,各5種SNR的含噪語音庫,使用Keras深度學習庫在Python中完成。
3.1.2" 性能評價指標
為了更好展示語音增強后的效果,我們選擇以下幾種客觀指標評價樹莓派的語音增強性能:
1)客觀語音質量評估 (Perceptual Evaluation of Speech Quality, PESQ)[13-14]。范圍為1.0~4.5,在語言質量極差的情況下指標數值會小于1.0。
2)短時客觀可懂度(Short-Time Objective Intelligibility, STOI)[15]。指標范圍在0~1之間。
3)尺度不變信噪比(Scale-Invariant Signal-to-Noise Ratio, SISNR)[16]。其定義如下:
(3)
其中和s分別為增強語音和干凈語音在時域的信號,為保證尺度不變性,和s均被標準化為零均值。
3.2" 實驗結果及分析
本實驗將NOISEX-92噪聲庫中的Speech babble噪聲作為噪音,使用信噪比設置為15 dB的含噪語音文件實驗語音增強效果,如圖7所示,從上至下分別為純凈語音、含噪語音和樹莓派處理后的語譜圖和時域頻譜圖,可看出,即便在強人聲背景噪音下,本語音增強系統仍然可以有效濾除背景噪音,因為是實時以480個樣本處理,所以在文件開頭以及結尾處無語音部分,無法完全去除強烈的人聲背景噪音,而在包含信息的語音部分,以及中間無語音段,均能實現良好的語音增強效果。
本實驗選擇使用維納濾波法與搭載本系統的樹莓派處理含噪語音文件進行對比,實驗選擇NOISEX-92噪聲庫中的Speech babble噪聲作為背景,信噪比設置為15 dB的含噪語音文件進行實驗。結果如圖8所示,可以看出,面對以人聲為背景的語音信號中,傳統方法的降噪效果非常差,尤其在噪聲的能量大于語音的能量時,幾乎無法有效恢復語音,并且由于傳統算法存在許多假設,在實時處理過程中難以解決瞬態噪聲,因此留下大量底噪,語音增強效果并不好,經計算本實驗中維納濾波處理音頻后PESQ為1.941,STOI為0.869。而本語音增強系統在噪聲抑制方面得益于RNN的模擬,能夠更好地消除人聲噪聲,有效的恢復語音,并且瞬態噪聲的影響更小,處理后的音頻PESQ為2.415,STOI為0.876。相比之下本系統能夠更出色地完成語音增強任務。
我們使用訓練集中未使用的語音和噪聲數據來測試維納濾波與本文方法處理的性能,并計算平均指標如表1所示,其中因為PESQ對音頻的限制,我們將音頻從48 kHz重采樣至16 kHz后進行檢驗,本文方法處理后的音頻與維納濾波法相比,平均PESQ高0.203,平均STOI高0.011,平均SISNR高1.981,各項指標均高于維納濾波法。
3.3" 算法復雜度分析
為了降低系統對硬件的要求,需要保持算法大小和復雜度低。我們假設語音和噪聲的頻譜包絡足夠平坦,不直接估計頻譜幅度,而是估計理想的臨界波段增益,這具有在0到1之間有界地顯著優勢,并且基于Opus頻帶,使用Bark頻率標度進行劃分,總共有22個子帶。因此,我們的網絡只需要[0,1]范圍內的22個輸出值,本算法包括總共215個單元、4個隱藏層,最大層96個單元。
可執行文件的大小主要由神經網絡中215個單元所需的87 503個權重決定。為了盡可能小,選擇將權重量化為8位。這使得在CPU的L2緩存中擬合所有權重成為可能。IFFT和每幀兩個FFT需要大約7.5MFLOPs,音高搜索(以12 kHz運行)需要大約10 MFLOPs。同時由于在乘法加法操作中每幀僅使用每個權重一次,因此神經網絡每幀需要175 000次浮點運算(我們將乘加視作兩次運算),因此實時使用17.5 MFLOPs。該算法的總復雜度約為40 MFLOPs,與全頻帶語音編碼器相當。
實際運行中,該系統在1.5 GHz ARMv7 Processor rev 3(v7l)(Raspberry Pi 4)單個核心上執行實時單通道48 kHz語音增強的占用率為14.8%,內存使用率為3.1%。可見本系統可以在樹莓派CPU上低功耗運行。
4" 結" 論
本文設計的語音增強系統,整體設計仍采用傳統信號處理框架設計,但在難以調諧的噪聲抑制方面引入RNNoise實現實時單通道語音增強算法,將問題簡化為僅計算22個理想的臨界頻帶增益,再通過使用簡單的音高濾波器處理頻帶的粗分辨率,由此實現低復雜性的智能語音增強系統,在消耗更低硬件性能的條件下仍能取得高質量的語音增強效果,在樹莓派上也能輕松運行,具有較低的延遲性,并且質量明顯高于純信號處理的方法,有更廣闊的應用場景以及更好的實際性能。
參考文獻:
[1] BOLL S. Suppression of Acoustic Noise in Speech Using Spectral Subtraction [J].IEEE Transactions on Acoustics, Speech, and Signal Processing,1979,27(2):113-120.
[2] GRIFFIN D,LIM J. Signal Estimation from Modified Short-Time Fourier Transform [C]//ICASSP '83. IEEE International Conference on Acoustics, Speech, and Signal Processing.Boston:IEEE,1983:804-807.
[3] SELTZER M L,TASHEV I. A LOG-MMSE Adaptive Beamformer Using a Nonlinear Spatial Filter [C]//Proceedings of the 11th International Workshop on Acoustic Echo and Noise Control.Seattle:IWANEC,2008:1-4.
[4] MAAS A L,LE Q V,O'NEIL T M,et al. Recurrent Neural Networks for Noise Reduction in Robust ASR [C]//INTERSPEECH 2012 ISCA's 13th Annual Conference.Portland:ISCA,2012:22-25.
[5] LIU D,SMARAGDIS P,KIM M. Experiments on Deep Learning for Speech Denoising [C]//INTERSPEECH 2014 Fifteenth Annual Conference of the International Speech Communication Association.Singapore:ISCA,2014:2685-2689.
[6] XU Y,DU J,DAI L R,et al. A Regression Approach to Speech Enhancement based on Deep Neural Networks [J].IEEE Transactions on Acoustics, Speech, and Signal Processing,2015,23(1):7–19.
[7] NARAYANAN A,WANG D L. Ideal Ratio Mask Estimation Using Deep Neural Networks for Robust Speech Recognition [C]//2013 IEEE International Conference on Acoustics,Speech and Signal Processing.Vancouver:IEEE,2013:7092–7096.
[8] ELMAN J L. Finding Structure in Time [J].Cognitive Science,1990,14(2):179-211.
[9] HOCHREITER S,SCHMIDHUBER J. Long Short-Term Memory [J].Neural Computation,1997,9(8):1735-1780.
[10] GERS F,SCHMIDHUBER J,CUMMINS F. Learning to Forget: Continual Prediction with LSTM [J].Neural Computation,2000,12(10):2451–2471.
[11] VALIN J M. A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement [C]//2018 IEEE 20th International Workshop on Multimedia Signal Processing (MMSP).Vancouver:IEEE,2018:1-5.
[12] MONTGOMERY C. Vorbis I Specification [EB/OL].(2020-07-04).https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html.
[13] ITU-T. Perceptual Evaluation of Speech Quality (PESQ): An Objective Method Forend-to-End Speech Quality Assessment of Narrow-Band Telephone Networks and Speech Codecs [S/OL].(2001-02-23).https://www.itu.int/rec/T-REC-P.862/.
[14] RIX A W,BEERENDS J G,HOLLIER M P,et al. Perceptual Evaluation of Speech Quality(PESQ)-A New Method for Speech Quality Assessment of Telephone Networks and Codecs [C]//2001 IEEE International Conference on Acoustics, Speech,and Signal Processing.Salt Lake City:IEEE,2001:749-752.
[15] TAAL C H,HENDRIKS R C,HEUSDENS R,et al. An Algorithm for Intelligibility Prediction of Time-Frequency Weighted Noisy Speech [J].IEEE Transactions on Acoustics, Speech, and Signal Processing,2011,19(7):2125–2136.
[16] ISIK Y,ROUX J L,CHEN Z,et al. Single-Channel Multi-Speaker Separation Using Deep Clustering [C]//Interspeech 2016. San Francisco:ISCA,2016:545-549.
[17] PRINCEN J,BRADLEY A. Analysis/Synthesis Filter Bank Design Based on Time Domain Aliasing Cancellation [J].IEEE Transactions on Acoustics, Speech, and Signal Processing,1986,34(5):1153-1161.
[18] 孔凡留.基于深度學習的語音增強算法研究 [D].南京:東南大學,2021.
作者簡介:陶然(2004—),男,漢族,江蘇南京人,本科在讀,研究方向:語音信號處理;朱潤乾(2004—),男,漢族,江蘇泰州人,本科在讀,研究方向:語音信號處理;秦怡童(2004—),女,漢族,河南洛陽人,本科在讀,研究方向:深度學習;凌海東(2004—),男,漢族,安徽合肥人,本科在讀,研究方向:語音信號處理。