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