語(yǔ)音簽到系統中的信號處理技術(shù)
基金項目:2022年河南省大學(xué)生創(chuàng )新創(chuàng )業(yè)訓練計劃項目,項目編號s202213507009
本文引用地址:http://dyxdggzs.com/article/202308/449347.htm在信息技術(shù)高速發(fā)展的今天,信號處理技術(shù)正迎著(zhù)發(fā)展的浪潮逐步優(yōu)化,數字信號處理(Digital Signal Processing),是以數字運算方法實(shí)現信號變換、濾波、檢測、估值、調制解調以及快速算法的處理方式,將數字信號處理的研究應用到“語(yǔ)音簽到”系統,來(lái)對簽到者的語(yǔ)音信號進(jìn)行濾波、檢測、處理以提取特征值,并建立數據集進(jìn)行機器學(xué)習,通過(guò)MATLAB 軟件的分類(lèi)學(xué)習器模塊利用不同的模型進(jìn)行分類(lèi),從而達到分辨不同簽到者的目的,在建立系統的過(guò)程中將展示信號的濾波、檢測、處理、分類(lèi)的過(guò)程,本文通過(guò)利用MATLAB仿真對信號處理的各個(gè)方面進(jìn)行研究,利用MATLAB仿真的優(yōu)勢來(lái)闡述信號處理的整體過(guò)程,通過(guò)對語(yǔ)音信號特征的提取來(lái)體現數字信號處理的各個(gè)方面。
本文主要通過(guò)研究信號處理的4 個(gè)階段,通過(guò)建立“語(yǔ)音簽到”系統來(lái)展示信號處理的過(guò)程,針對簽到問(wèn)題,通過(guò)聲音采集,濾波處理,特征提取,端點(diǎn)檢測研究等信息處理,利用MATLAB 軟件、Python 軟件編程處理使得整個(gè)代碼準確、簡(jiǎn)潔,并達到良好的“語(yǔ)音簽到”效果。
1 信號濾波
1.1 降噪總體流程規劃
噪聲在聲音的傳輸過(guò)程中是客觀(guān)存在的,噪聲的存在既降低了語(yǔ)音傳播信息的準確性,又增加了語(yǔ)音系統不能正常工作運轉的風(fēng)險,為了降低噪音干擾,信號濾波過(guò)程運用數字信號處理的理論知識與MATLAB仿真軟件相結合,通過(guò)設計低通濾波器的方式對加入高斯白噪聲(模擬生活中混入的噪聲信號)后的帶噪語(yǔ)音信號,先運用IIR(無(wú)限單位沖激響應)數字濾波器進(jìn)行降噪處理,后通過(guò)小波閾值降噪進(jìn)行二次降噪處理,最終調用MATLAB中的繪圖命令,展示出其在時(shí)域、頻域的對比圖,并通過(guò)audiowrite()函數把降噪后的音頻保存進(jìn)文件夾中,方便后續實(shí)驗的進(jìn)行。具體操作流程如圖1 所示。
圖1 降噪操作總體流程圖
1.2 音頻信號的采集、加噪及分析
采集聲音簽到信號,調用MATLAB 中的audioread函數對準備好的音頻信號進(jìn)行采樣并繪制出其時(shí)域波形,調用FFT 傅里葉函數對音頻信號處理并進(jìn)行歸一化處理最后繪制得出其頻譜圖。調用MATLAB 仿真中的audioread() 函數對音頻信號進(jìn)行處理并繪制出其時(shí)域波形,并調用傅里葉函數處理音頻信號并進(jìn)行歸一化處理,通過(guò)randn() 函數加入高斯白噪聲,進(jìn)一步繪制出加噪后的語(yǔ)音信號頻譜圖。通過(guò)調用MATLAB 仿真中的sound() 函數可以實(shí)現對音頻的播放,從而對sound.wav文件進(jìn)行判別加入噪聲前后的差異。
1.3 對加噪語(yǔ)音進(jìn)行降噪處理
本文是基于數字信號的處理,通過(guò)巴特沃斯低通濾波器對音頻信號進(jìn)行降噪處理,并輸出其原始信號、加噪信號、降噪后信號的時(shí)域波形和頻譜圖如圖 2 所示。
圖2 原始、加噪、降噪后信號的時(shí)域波形和頻譜圖
分析仿真結果,對比降噪前后音頻信號的時(shí)域波形和頻譜,可以看出音頻信號的大部分高頻部分被濾除,此時(shí)調用sound 函數進(jìn)行試聽(tīng),發(fā)現濾波前的“滋啦”聲已經(jīng)基本消失,說(shuō)明濾波處理的效果不錯,在其頻域上降噪后高頻部分已經(jīng)消失,但不可否認的是,由于高斯白噪聲的寬帶特性,致使其在各個(gè)頻率都有分布,所以傳統濾波器無(wú)法完全抹除噪聲的干擾,降噪后的音頻信號與原信號相比依然存在一些噪聲未能有效去除,這是由于傳統濾波器對于短時(shí)瞬態(tài)信號、非平穩信號、含有寬帶噪聲的信號時(shí)會(huì )有明顯的局限性。
為防止上述噪聲會(huì )對后續的研究造成不利影響,可以利用audiowrite() 函數讓其先保存到相應文件夾中,再次進(jìn)行另外一種濾波操作(小波閾值降噪)來(lái)進(jìn)行二次濾波處理,進(jìn)一步加深濾波效果,確保信號的準確性。
1.4 小波閾值降噪處理
小波降噪總體流程如圖3所示。
圖3 小波閾值降噪流程圖
MATLAB仿真中提供來(lái)各種小波基,針對不同的信號有著(zhù)不同的效果和優(yōu)勢,本文主要處理對象是人聲音頻,故選擇對于人聲效果更好的db4-db10,sym5-sym7小波基。根據小波閾值降噪的基本原理,當分解層數越大時(shí),噪聲和原始信號的表現差別越大,更有利于語(yǔ)音和噪聲的分離,但不可避免的是,分解層數越多意味著(zhù)重構層數越多,經(jīng)重構得到的音頻信號與原始信號差距較大,所以通過(guò)多次實(shí)驗選取效果理想的分解層數,能夠在實(shí)現良好的降噪效果的基礎上最大限度的保留原始音頻的特征,經(jīng)過(guò)多次測試確定最終確定的分解層數為5。閾值函數的設計通常是使用小波閾值降噪方法的核心關(guān)鍵所在,在小波域中原始信號對應的小波系數很大,噪聲對應的小波系數很小。本文中選擇適用范圍較為廣泛的通用閾值(VisuShrink)作為實(shí)驗閾值,確定合適的閾值函數后對小波系數進(jìn)行處理,通過(guò)選取硬閾值法將小波系數絕對值小于閾值的值都置0,絕對值大于閾值的值予以保留,將處理后獲得的小波系數利用逆小波變換法對信號進(jìn)行重構,從而恢復出原始信號。
1.5 濾波結果及總結
通過(guò)調用MATLAB 仿真的繪圖指令,將原始信號、加入高斯白噪聲的音頻信號、通過(guò)巴特沃斯低通濾波器后的音頻信號以及再次通過(guò)小波閾值降噪后信號的時(shí)域波形圖和頻譜圖運行出來(lái),如圖4、圖5 所示。
圖4 原始、加噪、初步降噪和小波降噪后信號的時(shí)域波形圖
圖5 原始、加噪、初步降噪和小波降噪后信號的頻譜圖
通過(guò)利用MATLAB 仿真對音頻信號進(jìn)行加噪處理,模擬現實(shí)生活中簽到時(shí)不可避免的噪聲加入,再對音頻信號進(jìn)行降噪處理,先經(jīng)過(guò)傳統的巴特沃斯低通濾波器去除部分噪聲,后經(jīng)過(guò)小波閾值的降噪處理去除低通濾波器無(wú)法去除的噪音信號,得到聲音簽到的音頻已經(jīng)相對清晰且滿(mǎn)足后續階段的需求。
2 信號檢測
2.1 端點(diǎn)檢測的方法與原理
在對信號進(jìn)行處理前,需對原始信號進(jìn)行預處理以滿(mǎn)足信號處理的需求,預處理過(guò)程包括信號濾波和信號檢測,濾波的目的在于去除噪音的干擾,檢測到語(yǔ)音信號中的靜音片段并去除,避免由于空白信息帶來(lái)的資源浪費。
圖6 端點(diǎn)檢測流程圖
2.2 端點(diǎn)檢測
端點(diǎn)是靜音和有效語(yǔ)音信號的變化臨界點(diǎn),確定端點(diǎn)位置是確保信號檢測精準度的關(guān)鍵,對語(yǔ)音信號進(jìn)行有效的預加重和選擇窗函數處理就可以進(jìn)行端點(diǎn)檢測,通過(guò)采用的雙門(mén)限比較法利用分步判決的思想來(lái)進(jìn)行端點(diǎn)檢測。將由濾波處理后的信號(采集的音頻)進(jìn)行端點(diǎn)檢測,為了可以重復使用該模塊,首先要設置1 個(gè)循環(huán)結構,以便循環(huán)讀取語(yǔ)音和存儲語(yǔ)音信號。將端點(diǎn)檢測各部分處理分別模塊化(便于對各個(gè)階段進(jìn)行優(yōu)化)并加入循環(huán)結構內,其中包括預加重、分幀加窗、計算過(guò)零率、計算短時(shí)能量、設置并調整門(mén)限閾值、初始化各參量、端點(diǎn)檢測算法、獲取起止點(diǎn)位置并截取出語(yǔ)音片段(去除靜音片段)從而達到去除語(yǔ)音信號首尾靜音片段的目的。利用MATLAB 仿真進(jìn)行運行結果如圖7所示。
通過(guò)觀(guān)察圖7 可以發(fā)現檢測的起始點(diǎn)選擇在了語(yǔ)音信號的首尾處,從而實(shí)現去除語(yǔ)音信號首尾大面積靜音片段的目的。但由于此次端點(diǎn)檢測所設置的閾值比較低,就使得系統對靜音片段的判斷標準比較寬松,因而在檢測靜音片段時(shí)只檢測到了音頻首尾處的較直白的靜音片段。
圖7 簡(jiǎn)單去除靜音片段
注:左側豎直實(shí)線(xiàn)表示語(yǔ)音起點(diǎn),左側豎直虛線(xiàn)表示語(yǔ)音結束點(diǎn),橫坐標表示幀數。
3 信號處理
3.1 信號處理的總體流程
對于語(yǔ)音簽到系統來(lái)說(shuō),如何確認語(yǔ)音信號特征的不同以達到識別不同簽到者的目的是整個(gè)信號處理過(guò)程的關(guān)鍵,對已經(jīng)進(jìn)行信號濾波和檢測的語(yǔ)音信號進(jìn)行特征提取便是實(shí)現簽到目的的必要條件,合理有效的特征提取方式可以提高識別的準確性和真實(shí)性。
通過(guò)信號濾波和檢測的信號已經(jīng)基本滿(mǎn)足信號處理的要求,但依然需要進(jìn)行數據預處理,確認特征提取的順利進(jìn)行,利用語(yǔ)音信號時(shí)頻域的特征以及梅爾特征對信號進(jìn)行特征提取,進(jìn)一步進(jìn)行歸一化處理滿(mǎn)足MATLAB仿真矩陣的基本要求,通過(guò)PCA 降維對復雜的特征量進(jìn)行簡(jiǎn)化獲得數據集,并對數據集進(jìn)行重新構建和劃分,滿(mǎn)足分類(lèi)識別的要求,以達到識別簽到者的目的,具體操作流程如圖8所示。
圖8 信號處理流程圖
3.2 數據預處理
3.2.1 加窗分幀
對語(yǔ)音信號進(jìn)行分幀處理,在同一幀中語(yǔ)音信號的特征是穩定的,但由于分幀后每一幀的開(kāi)始和結束都會(huì )出現間斷,因此分割的幀越多,與原始信號的誤差就越大,使用加窗分幀的方法使成幀后的信號變得連續,并且每一幀都會(huì )表現出周期函數的特性。語(yǔ)音信號的表征參數都是短時(shí)平穩的,一般為10~30 ms 因而可以視為一個(gè)準穩態(tài)過(guò)程。由于語(yǔ)音信號具有短時(shí)平穩性,對語(yǔ)音信號進(jìn)行分幀加窗處理,截斷短時(shí)音頻片段,通常幀移大小為10~15 ms,要求保證窗長(cháng)大小為幀移的2~3 倍。加窗分幀的目的是為了使語(yǔ)音信號更連續,避免出現吉布斯效應(又叫吉布斯效應將具有不連續點(diǎn)的周期函數進(jìn)行傅立葉級數展開(kāi)后,選取有限項進(jìn)行合成,當選取的項數越多,在所合成的波形中出現的峰起越靠近原信號的不連續點(diǎn))。
3.2.2 數據清洗
為了保證提取到的所有幀都是有效的語(yǔ)音片段,在之前降噪、端點(diǎn)檢測的基礎上,對數據進(jìn)行清洗,檢查所有幀是否具有有效數據,對每幀的矩陣進(jìn)行識別,若出現數值全為0 的幀則將其剔除。剔除無(wú)效幀,不僅可以提高模型的運行效率,還可以提高后期提取出的特征值的有效性。
3.2.3 有效幀的抽取與保留
由于對信號進(jìn)行端點(diǎn)檢測去除靜音片段后音頻的時(shí)長(cháng)并不統一,進(jìn)行分幀時(shí),會(huì )導致不同音頻分得的幀數并不相同。因此,首先對所有音頻進(jìn)行加窗分幀處理,并且記錄從各個(gè)音頻所得到的幀數,計算出所有音頻中最少的幀數,并以最少幀數為標準,對于所有大于該幀數的音頻,進(jìn)行部分幀抽取。抽取的準則是根據各幀音頻的能量大小,將所有幀按照低能量、中能量、高能量三個(gè)層次進(jìn)行劃分,并且分別對低能量、中能量以及高能量區域中的幀進(jìn)行等幀數的隨機抽取,最后再以原音頻各幀位置為基準,對抽取到的幀進(jìn)行排序。
3.3 特征提取
完成預處理過(guò)程后,對信號進(jìn)行特征提取,利用時(shí)域中的短時(shí)過(guò)零率、短時(shí)能量以及頻域中頻譜質(zhì)心、頻域能量作為特征提取的依據進(jìn)行特征提取,共提取特征數為4 個(gè),時(shí)域特征提取如表1。
表1 時(shí)頻域提取特征
注:y(n)為音頻信號一幀的幅值,p為幀長(cháng)。Y(n)為一幀內音頻信號的離散傅里葉變換。
對音頻信號進(jìn)行預加重處理主要作用是為了平衡頻譜、避免在傅里葉變換操作過(guò)程中出現數值問(wèn)題、改善信噪比、補償語(yǔ)音信號受到發(fā)生系統所抑制的高頻部分,突出高頻共振峰。預加重處理實(shí)際意義是讓音頻信號通過(guò)一個(gè)高通濾濾波器。通過(guò)MATLAB 仿真調取音頻信號預加重前后時(shí)頻域頻譜圖并觀(guān)察,與原始音頻對比發(fā)現經(jīng)過(guò)預加重的信號頻譜更加平衡,高頻部分更加突出,頻譜圖如圖9 所示。
圖9 預加重前后時(shí)頻域頻譜圖
3.4 數據集的構建和劃分
為了更好的利用提取到的特征值,需要對特征值的數據集進(jìn)行構建。本文共采集了30 個(gè)人員的樣本,每個(gè)人進(jìn)行了10 次重復的語(yǔ)音簽到音頻錄制,共有300個(gè)待處理音頻。依次對300 個(gè)音頻按照信號處理流程進(jìn)行處理,最后將單個(gè)音頻所計算出來(lái)的特征值按行向量保存,最終構建了一個(gè)300 行、561 列的特征值矩陣。為了消除各特征量之間的量綱影響、提高后期梯度下降法求解最優(yōu)解的速度,對特征值矩陣中的數據進(jìn)行歸一化處理。由于在信號分類(lèi)中會(huì )運用到機器學(xué)習算法,通過(guò)模型進(jìn)行分類(lèi),數據維度過(guò)高往往會(huì )降低模型的性能和效率,高維數據不僅使模型更復雜,還容易引起維數災難。為了避免上述問(wèn)題并提高后期模型的訓練速度,使用Visual Studio Code 軟件,在A(yíng)naconda環(huán)境下調用sklearn庫對數據集進(jìn)行PCA 降維。最后在保留95%特征信息量的前提下,將特征值矩陣降維至139 列。首先依照不同的樣本音頻,對特征值矩陣進(jìn)行標注,將從第一個(gè)樣本音頻求得的特征值(即特征值矩陣的第1 至10 行)標注為1,從第二個(gè)樣本音頻求得的特征值(即特征值矩陣的第11~20 行)標注為2,以此類(lèi)推。為了避免出現過(guò)擬合的現象,將數據重新打亂并重新分割數據。對數據洗牌過(guò)后的數據,使用留出法依照7:3 的比例對數據集進(jìn)行劃分,即最終得到210 行、140 列的訓練集,90 行、140 列的測試集。
4 信號分類(lèi)
對信號處理得到的數據集利用MATLAB 仿真自帶的分類(lèi)學(xué)習器模塊進(jìn)行信號分類(lèi)處理,分類(lèi)學(xué)習器是通過(guò)訓練模型結構,用于以對數據進(jìn)行分類(lèi),是機器學(xué)習比較常見(jiàn)的應用,通常包括五個(gè)部分,分別是數據導入、數據的探索和特征選擇、訓練模型、比較模型和輸出模型。分類(lèi)算法使用戶(hù)可以將一個(gè)分類(lèi)應變量建模為一個(gè)或多個(gè)預測的函數,其中的模型主要包括有:決策樹(shù)、邏輯回歸(Logic)、神經(jīng)網(wǎng)絡(luò )和支持向量機(SVM)、最近鄰分類(lèi)(KNN)、集成分類(lèi)器等分類(lèi)模型。將模型訓練完畢后,通過(guò)觀(guān)察訓練數據的散點(diǎn)圖、混淆矩陣、ROC曲線(xiàn)等圖像進(jìn)行數據分析,對測試數據進(jìn)行預測和實(shí)際操作。除此之外,訓練好的模型也可以直接導入Matlab的工作空間,便于對新數據進(jìn)行預測,同時(shí)能夠直接生成代碼方便集成使用。
5 結束語(yǔ)
本文通過(guò)對MATLAB 仿真在信號處理多個(gè)方面的研究實(shí)現了語(yǔ)音簽到系統,重點(diǎn)研究了信號濾波、信號檢測、信號處理、信號分類(lèi)四部分。首先收集聲音樣本信息,使用低通濾波器進(jìn)行信號濾波,之后利用端點(diǎn)檢測去除靜音片段,對處理后的音頻信號利用時(shí)頻域和梅爾倒譜系數提取特征值并進(jìn)行分類(lèi)以達到語(yǔ)音簽到的目的。為了降低噪音干擾,信號濾波過(guò)程運用數字信號處理的理論知識與MATLAB 仿真軟件相結合通過(guò)設計低通濾波器的方式對加入高斯白噪聲后的帶噪語(yǔ)音信號,先運用IIR(無(wú)限單位沖激響應)數字濾波器進(jìn)行降噪處理,后通過(guò)小波閾值降噪進(jìn)行二次降噪處理。對去噪音頻信號利用短時(shí)分析法依據短時(shí)能量、短時(shí)平均幅值、短時(shí)過(guò)零率等特征對有語(yǔ)音和無(wú)語(yǔ)音語(yǔ)段進(jìn)行判別分析,設置合理的閾值進(jìn)行區分,并利用端點(diǎn)檢測準確的定位出語(yǔ)音的開(kāi)始點(diǎn)和結束點(diǎn),去掉靜音的部分,從而獲得真正有實(shí)際意義的語(yǔ)音信號,保證了簽到的快速、準確。
參考文獻:
[1] 陳建勇,王道闊,鄧文鋒,等.重構小波閾值函數在信號去噪中的應用與研究[J].CT理論與應用研究,2017,26(1):63-68.
[2] 裴萍.閾值函數的改進(jìn)在信號去噪中的應用[J].科技視界,2012(28):164-165.
[3] 阿布力米提·肉孜,吐?tīng)柡榻ぐ⒉级伎肆δ?改進(jìn)小波閾值函數信號去噪研究[J].計算機與現代化,2012(3):11-14.
[4] 王玲玲,黃垂桂,趙建楊.基于MATLAB的音頻降噪濾波器設計[J].中國新技術(shù)新產(chǎn)品,2022(16):15-17.
[5] 朱俊敏,張瀟,王旌陽(yáng),等.小波域音頻信號降噪研究[J].計算機工程與應用,2009,45(6):149-154.
[6] 楊天晴,楊靜宗,付蕊,等.基于MATLAB的小波閾值法在信號降噪中的應用研究[J].保山學(xué)院學(xué)報,2021,40(2):93-101.
[7] 彭仕玉,李宏民,張國云.DFT頻譜分析中時(shí)域加窗的研究[J].湖南理工學(xué)院學(xué)報(自然科學(xué)版),2010,23(2):26-29.
[8] 呂衛強,黃荔.基于短時(shí)能量加過(guò)零率的實(shí)時(shí)語(yǔ)音端點(diǎn)檢測方法[J].兵工自動(dòng)化,2009,28(9):69-70+73.
[9] 孫慧芳,龍華,邵玉斌,等.基于過(guò)零率及頻譜的語(yǔ)音音樂(lè )分類(lèi)算法[J].云南大學(xué)學(xué)報(自然科學(xué)版),2019,41(5):925-931.
[10] 胡耀文.音頻信號特征提取及其分類(lèi)研究[D].昆明:昆明理工大學(xué),2018.
[11] 宋知用.MATLAB語(yǔ)音信號分析與合成(第2版)[M].北京:北京航空航天大學(xué)出版社,2017.
[12] 劉婷,柳鈺,薛小慶.MATLAB在語(yǔ)音信號處理中的應用[J].電子測試,2018(23):74-75.
[13] 武同寶,趙旭彤.基于MATLAB的語(yǔ)音信號識別及矢量模式匹配[J].工業(yè)控制計算機,2012,25(9):90-92.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2023年7月期)
評論