梁小龍,劉九龍,歐陽歆,盧 仕,宋 敏,徐 磊
(湖北大學(xué) 物理與電子科學(xué)學(xué)院,湖北 武漢 430061)
生活垃圾分類不合理等問題加重了環(huán)境污染[1],國(guó)家發(fā)改委及住建部于2017年3月發(fā)布了《生活垃圾分類制度實(shí)施方案》,隨著《生活垃圾分類制度實(shí)施方案》的不斷貫徹落實(shí),越來越多的城市采取了生活垃圾強(qiáng)制分類措施。但垃圾分類給市民帶來的煩惱也隨之產(chǎn)生:生活垃圾如何分類困擾了大部分人。
為解決生活垃圾分類難的問題,文中設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA的智能語音垃圾箱。
智能垃圾箱的控制系統(tǒng)主要由FPGA芯片(Artix-7 XC7A75T)、WM8978語音采集電路、SD卡、4路舵機(jī)組成。
FPGA芯片作為主控,接收WM8978芯片通過麥克風(fēng)采集的語音信號(hào),即使用者說出的垃圾名稱,然后進(jìn)行語音識(shí)別,識(shí)別結(jié)果分為4種,即干垃圾、濕垃圾、可回收垃圾與有害垃圾,識(shí)別完成后讀取存儲(chǔ)于SD卡中的4種識(shí)別結(jié)果的音頻文件,語音播報(bào)匹配結(jié)果,之后控制4路舵機(jī)實(shí)現(xiàn)相應(yīng)垃圾箱蓋的開合。
所有子電路和模塊均連接到FPGA芯片的GPIO口,在FPGA中設(shè)計(jì)各子電路的控制模塊以及其余功能模塊,包含WM8978控制模塊、FFT模塊、識(shí)別結(jié)果播報(bào)模塊、舵機(jī)控制模塊、SD卡讀取模塊、特征提取與模板匹配模塊,分別完成語音信號(hào)采集、語音信號(hào)預(yù)處理、識(shí)別結(jié)果播報(bào)、垃圾箱蓋開合控制、SD卡語音播報(bào)文件的讀取、待處理語音信號(hào)的特征提取與模板匹配工作。
系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
語音識(shí)別引擎大致分為2種類型:模板識(shí)別和聲學(xué)語音系統(tǒng)。前者使用已知或經(jīng)過訓(xùn)練的模板來確定是否匹配,后者使用人體屬性比較語音特征(如元音等)[2]。對(duì)于垃圾名稱的識(shí)別,詞匯量較小,且為孤立詞識(shí)別,所以本系統(tǒng)采用模板識(shí)別方案,具體語音識(shí)別流程如圖2所示。
圖2 語音識(shí)別流程
在本項(xiàng)目中,使用FFT變換對(duì)語音信號(hào)進(jìn)行預(yù)處理,借助MATLAB制作識(shí)別模板,模板數(shù)據(jù)庫包含“菜葉”“紙巾”“藥瓶”“易拉罐”4個(gè)詞匯的特征參量,存儲(chǔ)于FPGA的片上ROM中。
語音信號(hào)經(jīng)麥克風(fēng)采集后被存儲(chǔ)為時(shí)域信號(hào),時(shí)域信號(hào)中包含的信息隨時(shí)間的變化而變化,通過對(duì)頻域信號(hào)進(jìn)行分析,能獲取在時(shí)域信號(hào)中很難觀察的信號(hào)特征[3]。由于本文提出的系統(tǒng)僅為語音識(shí)別與智能家居產(chǎn)品相結(jié)合的嘗試,所以采用標(biāo)準(zhǔn)傅里葉變換對(duì)信號(hào)進(jìn)行頻域分析。
語音信號(hào)預(yù)處理模塊負(fù)責(zé)完成快速傅里葉變換以及結(jié)果取模的語音信號(hào)預(yù)處理工作,快速傅里葉變換使用Xilinx提供的XFFT IP核進(jìn)行,取模過程中的開平方運(yùn)算利用CORDIC IP核的square root完成。
結(jié)合XFFT IP核特點(diǎn),本系統(tǒng)選擇8 kHz采樣頻率,采取16 384個(gè)樣本點(diǎn)后進(jìn)行FFT變換。完成FFT變換后,進(jìn)入CORDIC IP核進(jìn)行取模運(yùn)算,輸出語音信號(hào)的頻譜圖。
FFT作為DFT的一種快速算法,具有DFT的圓周共軛對(duì)稱性質(zhì),模|F(k)|滿足圓周偶對(duì)稱關(guān)系,即在k=N處補(bǔ)上與k=0處相同的序列值后,關(guān)于k=N/2成鏡像對(duì)稱[4-5]。
為減少后面特征提取及模板匹配模塊的工作量,根據(jù)對(duì)稱性完成預(yù)處理后,僅將前一半的數(shù)據(jù)傳輸至特征提取與模板匹配模塊。
圖3展示了語音信號(hào)預(yù)處理模塊仿真圖中存儲(chǔ)的語音信號(hào)時(shí)域圖。對(duì)語音信號(hào)預(yù)處理模塊進(jìn)行功能仿真前,先使用MATLAB錄制一段語音信號(hào),在仿真頂層模塊中讀取該語音文件,通過adc_data接口傳輸至語音信號(hào)預(yù)處理模塊,觀察該模塊中保存的語音信號(hào)時(shí)域圖,縮小后可以看到,與MATLAB獲得的時(shí)域圖保持一致,說明該模塊已正確存儲(chǔ)語音信號(hào)。
圖3 FFT模塊仿真圖1
圖4展示了該模塊對(duì)輸入信號(hào)進(jìn)行FFT變換、取模后的輸出信號(hào)仿真圖,將語音信號(hào)的頻譜圖與MATLAB處理結(jié)果進(jìn)行比較,兩幅圖的形狀保持高度一致,說明該模塊功能正常。
圖4 FFT模塊仿真圖2
語音識(shí)別過程的關(guān)鍵在于特征提取與模板匹配[6]。
本系統(tǒng)中,模板匹配即為頻譜圖匹配,將輸入的語音信號(hào)頻譜圖與各模板比較,與其最相似的頻譜圖即為識(shí)別結(jié)果。在特征提取過程中,需提取出頻譜圖的特征參數(shù),本系統(tǒng)中選用“極大值點(diǎn)位置”作為頻譜圖的特征參數(shù),算法步驟如下。
(1)存儲(chǔ)數(shù)據(jù),計(jì)算均值。接收待處理語音信號(hào)的頻譜圖,接收完成后計(jì)算頻譜圖中所有點(diǎn)的均值。
(2)尋找極大值點(diǎn)。依次遍歷頻譜圖中的數(shù)據(jù)點(diǎn),若某個(gè)數(shù)據(jù)點(diǎn)大于設(shè)定的閾值,便認(rèn)為該點(diǎn)為一個(gè)極大值點(diǎn),將所有極大值點(diǎn)位置依次保存到特征數(shù)組中,該數(shù)組即為該頻譜圖的特征參數(shù)。
(3)計(jì)算相似程度。依次比較特征數(shù)組與模板數(shù)組各點(diǎn)數(shù)據(jù)值,設(shè)定閾值,進(jìn)行比較,若兩數(shù)組某點(diǎn)數(shù)據(jù)絕對(duì)值的差小于該閾值,則相似度加1。
(4)尋找最大相似度模板。與特征數(shù)組相似度最高的模板數(shù)組即為識(shí)別結(jié)果。
模塊為二段式有限狀態(tài)機(jī),各狀態(tài)跳轉(zhuǎn)示意圖如圖5所示。
圖5 特征提取及模板匹配狀態(tài)跳轉(zhuǎn)圖
舵機(jī)控制模塊接收語音識(shí)別模塊輸出的識(shí)別結(jié)果,控制相應(yīng)舵機(jī)運(yùn)動(dòng):當(dāng)接收到識(shí)別完成的信號(hào)后,根據(jù)識(shí)別結(jié)果打開相應(yīng)舵機(jī),經(jīng)過一定時(shí)間后關(guān)閉此舵機(jī)。舵機(jī)控制模塊工作流程如圖6所示。
圖6 舵機(jī)控制模塊流程
識(shí)別結(jié)果播報(bào)模塊配合SD卡讀取模塊的工作,當(dāng)語音識(shí)別完成后,讀取識(shí)別結(jié)果,根據(jù)結(jié)果選擇存儲(chǔ)于SD卡中相應(yīng)音頻文件,進(jìn)行語音播報(bào)。
語音模板制作借助MATLAB、特征提取及模板匹配模塊完成。FPGA控制模塊將得到的特征數(shù)組通過串口發(fā)送至計(jì)算機(jī),對(duì)同一詞條進(jìn)行4次相同的操作,即得到4個(gè)樣本頻譜圖,在MATLAB中對(duì)4個(gè)樣本頻譜圖取均值后按照VIVADO片上ROM IP核固化文件格式保存模板。
圖7展示了模板制作過程,即對(duì)4個(gè)樣本頻譜圖取均值后,輸出最終模板并保存。
圖7 模板制作過程
垃圾箱機(jī)械結(jié)構(gòu)如圖8所示。4個(gè)垃圾箱蓋依靠4個(gè)獨(dú)立的舵機(jī)開合,內(nèi)部使用十字隔板將空腔分為4部分,分別用于收集干垃圾、濕垃圾、可回收垃圾和有害垃圾。FPGA開發(fā)板、WM8978模塊電路、電源電路等均置于垃圾箱底部隔板內(nèi)。
圖8 垃圾箱機(jī)械結(jié)構(gòu)示意
測(cè)試前,使用手機(jī)錄制4個(gè)特定詞匯“菜葉”“紙巾”“藥瓶”“易拉罐”的音頻,測(cè)試時(shí)作為語音指令進(jìn)行隨機(jī)播放。進(jìn)行100次整體性能測(cè)試,記錄測(cè)試數(shù)據(jù),并計(jì)算正確率。測(cè)試結(jié)果見表1所列。
表1 測(cè)試數(shù)據(jù)
由測(cè)試結(jié)果可知,該系統(tǒng)具有較高的識(shí)別正確率,但仍有改進(jìn)的空間,使得系統(tǒng)實(shí)用性更強(qiáng),改進(jìn)方向分為如下2個(gè)方面:
(1)使用MFCC法提取特征參數(shù)[7-8];
(2)采用隱馬爾可夫模型作為語音識(shí)別的算法[9-10]。
本設(shè)計(jì)采用含Artix-7 XC7A75T芯片的FPGA開發(fā)板,應(yīng)用WM8978模塊、SD卡、4路舵機(jī)實(shí)現(xiàn)具備語音指令采集、語音指令識(shí)別、識(shí)別結(jié)果播報(bào)、垃圾箱蓋自動(dòng)開合等功能的智能語音垃圾箱。
在國(guó)家大力推行生活垃圾分類的背景下,智能語音垃圾箱的出現(xiàn)使生活垃圾的分類更加便捷、高效,由于無需連接互聯(lián)網(wǎng),因此可充分保證用戶隱私,雖然目前人們對(duì)智能垃圾箱的認(rèn)可度不高,但隨著生活垃圾分類政策的不斷推行,智能垃圾箱會(huì)不斷融入我們的生活。