徐飞洋 李玉晓
摘 要:随着语音识别算法的成熟和集成电路工艺的发展,设计了一种基于现场可编程门阵列实现对垃圾智能分类的装置。装置采用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—),男,汉族,江西奉新人,本科在读,研究方向:信号与信息处理、智能语音识别算法。