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