徐飛洋 李玉曉



摘? 要:隨著語音識別算法的成熟和集成電路工藝的發展,設計了一種基于現場可編程門陣列實現對垃圾智能分類的裝置。裝置采用FPGA芯片作為控制芯片,利用片內資源搭建邏輯電路,處理語音芯片采集的語音信號。系統調用IP核構建軟核處理器對語音數據進行識別,識別結果用LCD和LED進行信息反饋。測試結果表明,該裝置在語音識別功能上表現出良好的性能,語音識別正確率在90.0%以上,且實現了將識別出來的垃圾進行分類處理。
關鍵詞:語音識別;FPGA;垃圾分類;嵌入式系統
中圖分類號:TP391.4? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)09-0022-04
Intelligent Garbage Sorting Device Based on FPGA
XU Feiyang,LI Yuxiao
(School of Science,Jiangxi University of Science and Technology,Ganzhou? 341000,China)
Abstract:With the maturity of speech recognition algorithm and the development of integrated circuit technology,a device based on field programmable gate array(FPGA) is designed to realize garbage intelligent classification. The device uses FPGA chip as the control chip,uses the on-chip resources to build the logic circuit,and processes the voice signals collected by the voice chip. The system calls IP core to build soft core processor to recognize voice data,and LCD and LED are used for information feedback. The test results show that the device has good performance in speech recognition function,the correct rate of speech recognition is more than 90.0%,and it realizes the classified disposal of the identified garbage.
Keywords:speech recognition;FPGA;garbage classification;embedded system
0? 引? 言
隨著城市化建設步伐的推進,生活垃圾處理已是不可避免的一個問題。實施垃圾分類處理,可以有效改善城鄉環境,垃圾也能變廢為寶。分類垃圾桶是目前最為常用的垃圾分類裝置,其結構形式單一采用傳統的開放式或手動封蓋式,用戶體驗差,衛生條件不好。同時,廣大人民群眾對垃圾分類知識掌握程度不高,導致人民群眾難以長期堅持執行垃圾分類,阻礙了垃圾分類工作的進一步推廣和應用。
筆者基于校內江西省教育廳科學技術研究項目及大學生創新創業項目,對一種新的智能垃圾分類裝置進行了研究。為解決現有垃圾分類存在的問題,本文設計一種基于現場可編程門陣列(Field Programmable Gate Array,FPGA)的智能垃圾分類裝置[1]。通過投放者說出待投放的垃圾名稱,自動判斷投放的垃圾類別,并對投放者進行信息提示,引導投放者將垃圾投放到正確的位置。可以有效解決投放者因未培訓或培訓不足,而不能正確選擇垃圾類別帶來的問題,同時在一定程度上可以抑制環境的污染。
1? 總體方案設計
本文SOPC系統設計基于語音識別理論知識[2,3]和嵌入式系統開發[4]技術,實現一種根據投放者說出垃圾的名稱,自動判斷投放的垃圾類別,并對投放者進行信息提示的裝置。使用Verilog HDL硬件描述語言[5]在FPGA內部搭建各個功能模塊,并使用嵌入式軟核的方式進行對語音識別算法的處理,整體系統硬件結構框圖如圖1所示[6,7]。按下錄音按鍵,利用WM8978芯片作為語音數據采集和處理芯片,并將實時錄制的語音數據緩存在SDRAM中。選用EP4CE10F17C8芯片,利用內部資源搭建與各個功能模塊的操作接口,調用IP核搭建Nios Ⅱ軟核處理器,用于處理語音識別算法和對外部器件進行控制。LCD顯示屏和LED燈作為識別結果的信息反饋,對用戶進行提示。外部擴展大容量的SDRAM和FLASH芯片,分別在系統中承擔程序運行和數據儲存的工作。
2? 部分硬件設計
2.1? 語音采集控制模塊
WM8978是一個低功耗、高質量的立體聲多媒體數字信號編譯碼器。該芯片內部集成了AD/DA轉換器和語音信號處理器,帶有靈活的音頻線輸入,麥克風輸入和音頻輸出處理。可通過I2S或PCM音頻接口(I2S/PCM AUDIO INTERFACE)與FPGA進行音頻數據傳輸。
在硬件電路中,如圖2所示,LIP、LIN、RIP和RIN連接到麥克風(MIC)作為音頻輸入,L2/GPIO2和R2/GPIO3通過音頻線作為音頻輸入(LINE_IN),ROUT1和LOUT1作為輸出接口(PHONE),輸出給外接耳機,ROUT2和LOUT2為喇叭接口。WM8978的MODE引腳接地,選擇的是兩線接口模式,等同于I2C接口,FPGA以此來配置WM8978。FPGA與芯片引腳序號7-11并口連接,同時FPGA通過I2S MCLK接口輸出12 MHz時鐘作為WM8978芯片主時鐘,進行音頻數據輸入、輸出的控制操作。
2.2? LCD顯示模塊
TFT-LCD(Thin Film Transistor Liquid Crystal Display,薄膜晶體管液晶顯示器)能夠低電壓驅動,具有功耗低,使用壽命長,環保特性好等特點,是設計用戶友好型圖形界面的優良載體。
本設計選用ATK-3.5'TFTLCD,是一款高性能3.5寸電阻觸摸屏,分辨率為320*480。該產品自帶GRAM,無需外加驅動器,因而FPGA可以輕易驅動。采用Intel 18080接口,根據相應的操作時序來控制顯示。
圖3中,芯片功能引腳序號1~4,用來控制向LCD屏讀寫命令或數據;引腳6~21與FPGA并口連接,進行待寫指令、數據的雙向傳輸;LCD_BL接口控制液晶的背光效果。LCD基本使用流程:硬復位→初始化序列→設置坐標→寫GRAM指令→寫入顏色數據,然后在LCD顯示屏上面就可以打印出要提示的結果信息。
3? 部分軟件設計
3.1? 寫入語音模型和識別列表
提前在PC機上訓練好預識別詞匯模型,本實驗對可回收垃圾:“報紙”“塑料瓶”“易拉罐”;有害垃圾:“燈泡”“電池”“酒精”;廚余垃圾:“剩菜”“骨頭”“蛋殼”;其他垃圾:“貝殼”“陶瓷”“毛巾”這12個詞匯分別進行模型訓練,如表1所示。對訓練好的模型進行編號,制成C語言頭文件供程序調用。在程序中給每一個編號匹配對應詞匯的漢語拼音字符串,將每一個詞匯所屬的垃圾類別用英文名稱表示,應用實例如表1所示。最后,系統識別結果將在LCD屏上打印詞匯的漢語拼音和所屬垃圾類別的英文名稱,同時將所屬垃圾類別對應的LED燈點亮。
3.2? FPGA內部搭建
在基于FPGA的系統開發過程中,如果采用純硬件描述語言去實現這些比較復雜的系統,工作量是十分巨大的。本文通過Qsys來調用官方所提供的IP核的方法,根據需求搭建硬件環境,加速系統設計。圖4為FPGA內部架構圖。
(1)Nios Ⅱ處理器是一個32位精簡指令集(Reduced Instruction Set Computer,RISC)架構的軟核處理器,內部包含了算術邏輯單元,可以進行語音識別算法的實現。Nios Ⅱ還提供JTAG接口,供下載和調試程序。
(2)系統利用Qsys提供的存儲器控制IP核,來對SDRAM芯片和FLASH芯片進行讀寫操作,極大方便了存儲芯片的使用。
(3)PIO IP核為總線端口和通用I/O端口提供了一個存儲器映射(Memory-mapped)接口。PIO的I/O端口可以連接到片內用戶邏輯(Verilog語言完成的電路部分),也可以連接到與外部器件相連的FPGA引腳。利用PIO IP核,搭建外設模塊的邏輯功能電路,用于實現系統與外設的簡單通信。
初始化上電后,程序從外部的FLASH將數據和語音模型轉移到SDRAM中。此時,其他模塊全部處于復位狀態中。等系統裝載程序完成后,釋放其他的復位信號,Nios Ⅱ處理器工作于系統時鐘頻率下。
3.3? 識別程序
裝置上電啟動后,錄制好待識別的詞匯后,按下識別功能按鍵,裝置就可以進行語音識別。語音識別算法在Nios Ⅱ SBT for Eclipse工具中完成,包括編寫、編譯和調試程序。關鍵程序如下:
for(i=0;i<((number-6000)/2.2);i+=6)
{
x[j++]= *(ram_disp);
if(abs(*(ram_disp))>abs(max))
{
max =abs(*(ram_disp));
}
ram_disp += 6;
}
//滑動窗口濾波
for(i=1;i { x[i]=MID(x[i-1],x[i],x[i+1]); } //歸一化處理 for(i=0;i { xx[i]=(double)x[i]/(double)max; } xn[0]=xx[0]; //預加重處理 for(i=1;i { xn[i]=xx[i]-0.97*xx[i-1]; } m=j+1; fn=(m - FRAMESIZE + INC) / INC; mfcc=MFCC(xn,FS,FRAMESIZE,INC,m,fn);//梅爾倒譜提升方法對信號提取特征 result=viterbi_max(I, mfcc,fn-4);//維特比算法得出識別結果編號 4? 系統測試實例 4.1? 錄入語音數據分析 將錄制好的語音數據打印在Eclipse工具的控制臺上,對數據用MATLAB[8]播放與繪圖分析[7],繪圖結果如圖5所示。結合圖像(a)(b)進行分析,測試結果表明,FPGA正常狀態下錄制的語音中摻雜著嚴重的噪聲和毛刺,導致識別正確率下降。為此,系統需要對語音信號采用滑動窗口濾波處理,提高整體識別性能。 4.2? 系統識別結果 正確率是衡量一個語音識別系統重要的性能指標,是設計能否達到需求的標準。測試環境要求: (1)測試周圍環境安靜,沒有較大的背景噪音。 (2)說話人發音清晰,音量在50~60 db左右。 (3)無旁人語音干擾,一次只能識別一個人的指令語音。 (4)說話人距離語音識別裝置范圍在0.2~0.4 m。 本次語音測試樣本采集共有7個人,男女比例為4:3,發音人中文普通話標準。以正常聲音語速朗讀這12個詞匯名稱,兩個詞匯之間間隔10 s以上。表2為測試結果。 實驗數據得出平均識別率為90.0%以上。模型訓練的樣本數據越多,識別成功率也就越高。對模型樣本訓練是在PC機上單獨完成的,增加一定的訓練樣本數不會對識別速度造成影響。 5? 結? 論 本文通過對語音識別技術和FPGA硬件知識的研究,設計了基于FPGA的智能垃圾分類裝置,其正確率基本達到識別性能指標。通過在原有分類垃圾桶的基礎上加入了語音識別裝置,投放者即使未經系統培訓也可以通過與裝置進行語音交互,從而提高投放垃圾的正確性,達成了智能垃圾分類的目的。為垃圾分類的順利推廣提供技術支持,為垃圾分類的節能減排帶來巨大的社會效益和經濟效益。 參考文獻: [1] 肖明堯.基于嵌入式的語音識別系統設計與實現 [J].長春師范大學學報,2017,36(10):37-39. [2] 韓紀慶,張磊,鄭鐵然.語音信號處理:第2版 [M].北京:清華大學出版社,2013. [3] 李航.統計學習方法 [M].北京:清華大學出版社,2019. [4] 嚴翔,張屯厚,鄧威.FPGA嵌入式語音識別控制系統的設計實現 [J].計算機與網絡,2017,43(19):65-67. [5] 夏宇聞,韓斌.Verilog數字系統設計教程:第4版 [M].北京:北京航空航天大學出版社,2017. [6] 陳芝牟.基于FPGA的語音識別系統的設計與實現 [D].成都:電子科技大學,2012. [7] 黃帥凱.基于FPGA的語音識別系統的設計與實現 [D].廣州:華南理工大學,2017. [8] 宋知用.MATLAB語音信號分析與合成:第2版 [M].北京:北京航空航天大學出版社,2017. 作者簡介:徐飛洋(1999—),男,漢族,江西奉新人,本科在讀,研究方向:信號與信息處理、智能語音識別算法。