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