吳元江,李 晟
(江西理工大學(xué)理學(xué)院,江西贛州 341000)
隨著城市化建設(shè)步伐的推進(jìn)和網(wǎng)絡(luò)的普及,網(wǎng)購和外賣成為年輕人快節(jié)奏生活中不可或缺的一部分[1]。然而,網(wǎng)購和外賣不可避免會帶來生活垃圾,若是無組織處理會極大地破壞人類賴以生存的生態(tài)家園,而進(jìn)行有效的垃圾分類,垃圾也能變廢為寶。
但是當(dāng)前垃圾桶提示不全,許多人在投放垃圾時深切感受到“知易行難”[2]。因此,本文設(shè)計并實(shí)現(xiàn)了一種基于語音識別的垃圾分類裝置,其功能為:當(dāng)人們在投放垃圾時,點(diǎn)擊投放按鍵并說出垃圾的名稱,語音識別系統(tǒng)根據(jù)該語音信號對垃圾進(jìn)行歸類,顯示屏上就能顯示出垃圾的名稱、種類以及亮對應(yīng)種類的LED指示燈來引導(dǎo)使用者正確投放。
該裝置的核心是語音識別算法,現(xiàn)階段國內(nèi)外通常采用隱馬爾科夫模型(Hidden Markov Model,HMM),該模型對過程的狀態(tài)預(yù)測效果良好,適宜系統(tǒng)的短期狀態(tài)預(yù)測[3]。為提高識別率,本文利用混合高斯模型(Gaussian Mixture Model,GMM)擬合HMM中的輸出矩陣。最后通過實(shí)驗(yàn)驗(yàn)證,該裝置具有較高識別率。
隨著垃圾分類方案的推進(jìn),垃圾的種類已經(jīng)有了嚴(yán)格的歸屬,即廚余垃圾(橙色)、可回收垃圾(綠色)、其他垃圾(灰色)、有害垃圾(紅色),因此,可以通過自建語音庫作為訓(xùn)練樣本,把訓(xùn)練樣本的特征向量提取出來用于模型訓(xùn)練和進(jìn)行識別。語音識別系統(tǒng)流程如圖1所示。
圖1 語音識別系統(tǒng)流程
1.1.1 歸一化與預(yù)加窗
錄音過程中說話者與麥克風(fēng)距離不同會帶來差異,歸一化是使語音信號轉(zhuǎn)化到同一區(qū)間[-1,1],用來削弱該差異,其計算公式如下:
式中:x[n]為語音信號向量;max為取其最大值。
語音信號的能量與頻率成反比,所以說話時大部分能量集中在低音部分,預(yù)加窗是使語音信號通過一個高通濾波器來強(qiáng)化高頻信號,從而達(dá)到輸出信號整體變得平滑。經(jīng)過濾波后此高通濾波器的傳輸函數(shù)為:
式中:a為常數(shù),通過查閱資料[4],a的取值范圍為0.93 <a<0.98,本文選擇為0.937 5。并且濾波后的語音信號記為xd(n)。
1.1.2 分幀
為了簡化模型,本文假設(shè)信號是短時平穩(wěn)的,同時引入幀移,用來保證語音信號不會因?yàn)榉謳幚矶兊貌贿B續(xù)。圖2所示為將一段語音信號切分為4幀,同時保留一定的幀移。
圖2 分幀與幀移示意圖
1.1.3 加窗
數(shù)學(xué)上,分幀得到的xw(n)由語音信號xd(n)與移動的窗函數(shù)w(n)相乘:
窗函數(shù)用于減輕截斷效應(yīng)且需要較小的旁瓣寬度。常用的3 種窗函數(shù)分別是矩形窗、漢寧窗、海明窗[5]。這3 種窗函數(shù)的參數(shù)如表1所示。
表1 3種窗函數(shù)的性能對比表
與矩形窗相比,漢寧窗的帶寬更寬,阻帶衰減更大,而海明窗為漢寧窗的改進(jìn)版,能夠獲得更大的阻帶衰減,因此選擇海明窗,窗函數(shù)w(n)表達(dá)式為:
1.2.1 梅爾濾波器
根據(jù)人耳聽力對頻率的敏感度是非線性的[6],定義一種符合人耳聽覺敏感度的梅爾頻率Fmel:
人耳的耳蝸結(jié)構(gòu)相當(dāng)于一組MEL濾波器組,其傳遞函數(shù)Hm(k)為:
式中:f(m)為第m個三角濾波器的中心頻率。
1.2.2 特征參數(shù)提取流程
特征參數(shù)的提取可分為4步,其流程圖如圖3所示。
圖3 MFCC特征參數(shù)提取流程圖
(1)由于梅爾濾波器是在頻域上處理語音信號,所以需要先通過(FFT)快速傅里葉變換將每一幀語音數(shù)據(jù)由時域信號轉(zhuǎn)換為頻域信號,其公式如下:
(2)通過傳遞函數(shù)為Hm(k)的MEL 濾波器,得到語音特征向量Y(m)。
(3)此時的特征向量維數(shù)過高,用于訓(xùn)練或識別會大大提高運(yùn)算量,降低系統(tǒng)的實(shí)時性??刹捎秒x散余弦變換(DCT)壓縮特征向量信息:
(5)為保持表達(dá)式有意義,式(9)中i取值范圍為2≤i≤N-2,式(10)中i取值范圍為4≤i≤N-4。
1.3.1 隱馬爾可夫模型
隱馬爾可夫模型(HMM)的提出是為了解決統(tǒng)計過程中狀態(tài)和行為之間的“聯(lián)動性”,即某個行為的發(fā)生與不同狀態(tài)之間存在特定的概率關(guān)聯(lián)[7]。將HMM應(yīng)用于語音信號處理,某一段時間下語音信號的特征參數(shù)(行為)代表了一條Markov鏈(可觀測的),而信號變化與時間的關(guān)系(狀態(tài)轉(zhuǎn)移)代表了另一條Markov鏈(不可觀測的)。圖4所示為隱馬爾可夫模型的原理。
圖4 HMM原理示意圖
HMM模型λ有5個參數(shù),可以用1個向量組描述:
這5個參數(shù)的含義如表2所示。
表2 隱馬爾可夫模型參數(shù)及其含義
1.3.2 混合高斯模型
GMM 模型是統(tǒng)計學(xué)模型的一種,可用以擬合HMM 的連續(xù)概率密度輸出,數(shù)學(xué)表達(dá)式為:
1.3.3 前向后向算法
常規(guī)計算P(O|λ) 由于每次都會循環(huán)所有狀態(tài),計算量極大,采用前向-后向算法可以大大減輕計算量[8],計算式如下:式中:前向概率αt()j為在t時刻,狀態(tài)為j且觀測序列為{o1,o2,…,ot-1,ot} 的概率;后向概率βt(i)為在t時刻,狀態(tài)為j的且從t+1 時刻到T時刻的觀測序列為{ot+1,ot+2,…,oT}的概率;其中aij為狀態(tài)轉(zhuǎn)移概率矩陣A 的元素;bj(t)為觀測概率矩陣B的元素。
1.3.4 維特比解碼
在給予一段觀測序列O={o1,o2,…,oN}時,需要找到一條最佳路徑使得輸出概率最大[9]。求解過程為利用前面路徑的最優(yōu)解φt(i)疊加上當(dāng)前路徑的最優(yōu)解,具體流程如下:
本文采取自建語音庫的方式,總共訓(xùn)練并識別12個孤立詞,一共4類垃圾,每種垃圾收集4個詞,具體詞組如表3所示。
表3 垃圾分類詞組
(1)讀入學(xué)習(xí)樣本
通過MATLAB中的audioread函數(shù)進(jìn)行讀?。?/p>
式中:x為數(shù)字音頻信號向量;fs為抽樣頻率;fname 為語音信號文件位置。
(2)特征提取
讀入語音文件后,需要對語音信號進(jìn)行特征提取,使用自建函數(shù)MFCC:
(3)初始化HMM參數(shù)
HMM 模型λ=(N,M,A,B,π)需要設(shè)置5 個初始化參數(shù):設(shè)定總狀態(tài)數(shù)為3,即N=3;每個狀態(tài)的起始概率分布π 均設(shè)為0;每個狀態(tài)下可觀測的數(shù)目為4,即M=4;觀察概率矩陣B為連續(xù)型混合高斯分布;HMM模型為自左向右模型,且設(shè)定這兩個轉(zhuǎn)移概率是相等的,即:
(4)模型訓(xùn)練
使用從樣本中提取的特征向量訓(xùn)練HMM模型,不斷調(diào)整參數(shù)(A,B)直到訓(xùn)練結(jié)束。訓(xùn)練結(jié)果如圖5所示。
圖5 訓(xùn)練結(jié)果圖
訓(xùn)練完成之后,便可對新語音文件進(jìn)行識別,使用自定義函數(shù)viterbi:
式中:m為新語音文件的MFCC;HMM為訓(xùn)練好的模型;P為概率最大的孤立詞。
測試組由5 個男生和5 個女生組成,每人把12 個孤立詞都測試一次,實(shí)驗(yàn)結(jié)果統(tǒng)計如表4所示。從表中可以發(fā)現(xiàn),本文編寫的算法在MATLAB 平臺可以達(dá)到綜合94%的正確率,故本文的語音識別系統(tǒng)可用于垃圾分類。
表4 語音識別結(jié)果統(tǒng)計表
圖6 硬件系統(tǒng)構(gòu)成圖
本語音識別系統(tǒng)采用的是ALIENTEK 開拓者FPGA 開發(fā)板,其芯片型號為EP4CE10。硬件系統(tǒng)整體可劃分為兩個部分,一部分是語音識別系統(tǒng)所需求的外圍電路,另一部分是利用片上資源配置成的NIOS II 處理器。其硬件系統(tǒng)構(gòu)成如圖6所示。
硬件系統(tǒng)中使用的語音模塊結(jié)構(gòu)如圖7所示。其是FPGA開發(fā)板上集成的語音模塊,包含用于錄音的MIC、3.5 mm 標(biāo)準(zhǔn)耳機(jī)輸出接口PHONE、8Ω2W 小喇叭外放模塊和立體聲多媒體數(shù)字信號編解碼器芯片WM8978。
圖7 語音模塊
Qsys嵌入式系統(tǒng)的核心部件是NiosII軟核處理器,其內(nèi)部包含了算術(shù)邏輯單元,可以進(jìn)行語音識別算法的實(shí)現(xiàn)。
NiosII SBT for Eclipse是NiosII 的開發(fā)環(huán)境,可編寫、編譯和調(diào)試程序。核心程序如下:
首先需要定義一個HMM 模型,用于導(dǎo)入經(jīng)過MATLAB 學(xué)習(xí)過后的模型數(shù)據(jù),代碼如圖8所示。圖中N代表了狀態(tài)數(shù),M代表了每個狀態(tài)下可觀測數(shù)目,init代表了觀察概率矩陣B,trans代表了轉(zhuǎn)移矩陣A,mix為混合高斯分布。
圖8 Eclipse中模型定義代碼圖
接著是提取語音信號特征參數(shù),使用到的是MFCC 函數(shù),代碼如圖9所示。圖中x[n]為經(jīng)過WM8978芯片編碼的語音信號,fs為采樣頻率,framesize 為幀長,inc 為幀移,nx為采樣點(diǎn)數(shù),fn為幀數(shù)。
圖9 Eclipse中MFCC函數(shù)代碼圖
最后是語音的識別過程,使用到的是Viterbi 解碼函數(shù),代碼如圖10 所示。圖中HMM hmm 為在MATLAB 訓(xùn)練后的HMM模型,o為觀測狀態(tài),即經(jīng)過提取出來的特征矩陣,T為矩陣的列長度。
圖10 Eclipse中viterbi函數(shù)代碼圖
調(diào)試好的程序生成可執(zhí)行文件(后綴名為.elf 的文件),然后將其下載到Qsys搭建好的語音識別硬件系統(tǒng)中運(yùn)行。
測試環(huán)境要求:(1)測試周圍環(huán)境安靜,沒有較大的背景噪音;(2)說話人發(fā)音清晰,音量在50~60 db。
硬件測試與軟件測試時保持一致,實(shí)驗(yàn)結(jié)果統(tǒng)計如表5所示。由表中的數(shù)據(jù)可得,該語音識別裝置能夠達(dá)到較高的正確率,對推廣垃圾分類具有積極意義。
表5 語音識別硬件設(shè)備試結(jié)果表
本文首先介紹了我國垃圾分類的現(xiàn)狀,指出知難行易的實(shí)際困難,從而引出基于語音識別的垃圾分類裝置。
該裝置的核心是語音識別算法。詳細(xì)介紹了語音信號的處理過程,包括歸一化、濾波、分幀和提取MFCC 特征參數(shù),算法的模型是隱馬爾可夫模型和高斯混合模型,算法的識別是通過Viterbi解碼。該裝置的實(shí)現(xiàn)使用FPGA開發(fā)板。闡述了FPGA 開發(fā)板上所使調(diào)用的模塊,利用板上資源配置NIOS II系統(tǒng)實(shí)現(xiàn)硬件控制、算法運(yùn)行和輸出顯示。
最后通過實(shí)驗(yàn)驗(yàn)證,該裝置能夠達(dá)到較高的正確率。當(dāng)人們在投放垃圾時,點(diǎn)擊投放按鍵并說出垃圾的名稱,語音信號通過語音識別系統(tǒng),對該垃圾進(jìn)行歸類,顯示屏上顯示出垃圾的名稱、種類以及亮對應(yīng)種類的指示燈來輔助使用者正確垃圾分類。該裝置可以直接嵌入現(xiàn)行四色分類垃圾桶,改裝成本低,對垃圾分類的推廣具有積極意義。