智能语音控制系统的设计与实现

2018-03-08 08:51磊,何勇,张
计算机测量与控制 2018年2期
关键词:存储器上位字节

王 磊,何 勇,张 宇

(贵州大学 计算机科学与技术学院,贵阳 550000)

0 引言

语言是人类沟通的桥梁,可以很轻松地达到信息的交互。如今语音识别技术已经是世界上最热门和最具发展前景的技术之一,通过这项技术可以让语言成为人类和机器沟通的桥梁,可以使人类的日常生活操作变得更加简单和方便。智能语音控制系统,采用LD3320[1]芯片,主要通过语音识别技术实现在家庭中对电灯、风扇、窗帘等电器的开关控制,并且伴随识别结果有语音播放,达到真正的智能人机交互。

1 系统总体设计

基于LD3320的智能语音控制系统框架如图1所示。系统主要由电源模块、主控制器、识别模块、控制模块、外部存储器、语音输入和输出等部分组成。语音输入模块将采集到的语音信息送入LD3320处理芯片进行识别,LD3320将识别结果返回给主控模块,同时从外部存储器中取出语音数据进行语音输出播放,此时主控模块分析识别结果后,利用控制模块达到最终控制家电的效果。外部存储器中的数据,可在设备运行过程中实时更改,利用编写的上位机通过串口将数据发往主控模块,主控模块将数据转存至外部存储器进行存放。

图1 智能语音控制系统框架图

2 硬件设计

智能语音控制系统中的硬件电路主要包括主控制器和语音识别两个核心模块,语音采集成功后进入语音识别模块,LD3320进行识别后将结果返回到主控模块,外部存储器模块的设计主要是将返回的结果进行输出播放。由于控制模块与其它模块供电电压不同,本文设计的电源模块就分成两路进行供电。语音输入和输出模块的设计,优化了语音采集的性能,实现了语音播放的功能。最终将控制请求命令发送给控制模块对设备进行控制操作。

2.1 电源模块

由于整个语音控制系统是嵌入墙体内,类似普通的插座,所以它的供电采用HLK-PM01[2]电源模块将220 V的交流电转化为5 V直流电,一路用来驱动SRD-05VDC-SL-C[3]继电器,另一路经过ASM-1117[4]稳压芯片将5 V转为3.3 V电压供主控模块、识别模块、和外部存储器使用。

2.2 主控制器

用STC10L08XE芯片作为智能语音控制系统的MCU,它是宏晶科技公司生产的机器周期为1 T的单片机,SRAM为512K,片内RAM为8 K;指令代码兼容传统8051单片机,属于增强型8051 MCU,速度比传统的快8~12倍,有EEPROM[5]功能,2个16位定时器,MCU操作电压范围:2.4~3.6 V。

主控制器是控制设备开关的核心电路,主要处理经过LD3320识别后的语音数据及与外部存储器模块实现语音播放。最终主控制器分析识别结果后将控制指令发送给控制模块。

2.3 识别模块

语音识别模块采用ICRoute公司设计生产的LD3320芯片,该芯片集成语音识别处理器、A/D和D/A转换器、语音输入接口、语音输出接口等外部电路,具有快速而稳定的优化算法,完成语音识别,不需要事先训练和录音,只需要把识别的关键词语以字符串的形式传送进芯片,即可以在下次识别中立即生效,识别准确率高达95%。芯片及外围电路如图2所示。

图2 识别模块电路图

该模块采用语音识别ASR[6]技术,该技术是非特定人语音识别技术,不支持不同人的语音区分识别。这种识别技术的原理是通过某种数学模型,将操作者说出的语音信息,通过频谱转换为语音特征提取出来,然后与设定好的关键词条目进行一一匹配,这种匹配也只是用概率性来衡量,在LD3320上最多能匹配出4种结果,这4种结果分别是最优匹配结果、候选结果1、候选结果2、候选结果3。通常开发只取最优结果,其他答案做参考。但是考虑实际开发和应用效果,这里将这4种结果加以分析,选出结果相同最多的那个结果。

简单来说,这种识别技术不关心关键词的内容,只关心语音的特征,所以不能分辨不同人的话语。最多可识别的关键词个数为50个,且每个关键词的长度不超过10个汉字或79个字节的标准普通话的汉语拼音(小写),每两个字(汉语拼音)之前用一个空格符相隔,如“kaideng”。

2.4 控制模块

控制模块采用SRD-05VDC-SL-C继电器来控制家电的开关,它可以控制10 A 250 VAC、10 A 30 VDC的负载,线圈工作电压为5 V直流。

采用单片机引脚控制NPN型三极管S8050的导通,从而起到控制继电器线圈两端电压的作用,并且继电器线圈端需要加一个二极管,防止产生反向感应电动势击坏电路零件,起到保护的功能。

2.5 外部存储器

外部存储器采用W25Q32DW外部Flash[7]存储芯片,存储空间为4 MB,工作电压为3.3 V,通过SPI[8]通信方式与单片机交互。

使用此芯片的主要目的是配合整个智能语音识别系统的语音输出功能,即播放语音文件,如MP3[9]。同时也保存与主控制器和语音识别模块的一些配置信息,实现掉电数据不丢失。

使用上位机通过串口与主控制器交互,将需要播放的一些语音数据和配置信息逐一发送给主控制器,主控制器再将这些数据通过SPI的方式转存至W25Q32DW存储芯片,通信过程中用到自定义的协议,保证数据传输的完整性。

在系统需要播放语音文件时,由主控制器将存储器中的语音数据逐一取出,然后不断写入LD3320语音识别模块的寄存器中,识别模块经过自动处理,以模拟信号的方式输出至语音输出接口。

2.6 语音输入和输出模块

语音输入模块采用驻极体麦克风[10],这种麦克风体积小,结构简单,成本低,电声性能好,得到很广泛的应用,在设计时加一些简单的外围电路即可。

语音输出模块采用0.5 W内磁式扬声器,该扬声器体积小,漏磁少,失真比较小,成本低,适合该系统应用。

将该扬声器与LD3320的SPON和SPOP两个引脚相连,语音识别模块在需要播放语音时就将信号发送至这两个引脚,从而经过扬声器达到最终语音播放的功能。

3 软件设计

具有语音识别、语音播放、智能控制、与上位机实时交互等功能的智能语音控制系统,其写数据过程由上位机通过串口将语音数据和配置信息打包至自定义协议帧中,与主控制器进行数据交互,主控制器将数据转存至外部存储器W25Q32DW中,在需要时,主控制器再将数据取出;其语音识别与处理输出过程由驻极体麦克风采集到的语音信息传送至LD3320语音识别芯片加以识别处理,返回主控制器识别结果,根据识别结果操作外部存储器W25Q32DW,将对应的语音数据从存储器中取出,并放入LD3320的寄存器中,LD3320会自动播放该语音。与此同时,主控制器操作相应引脚电平,配合控制模块电路实现对家电的控制,达到控制与语音反馈的目的。图3为智能语音控制系统的软件框图。

图3 软件框图

3.1 LD3320芯片的配置

麦克风增益调整:调整LD3320芯片0x35寄存器的数值大小。

麦克风灵敏度调整:调整LD3320芯片0xb3寄存器的数值大小。

扬声器音量调整:调整LD3320芯片0x8e寄存器的数值大小。

这3个参数的调整,直接影响LD3320芯片的识别准确度,所以需要根据实际情况做相应的调整。

由于这些数据需要保证在操作者修改后,不论掉电与否,都不能变,则每次主控制器与上位机交互时若修改了这些数据,立即将修改后的数据存入W25Q32DW中保存,在每次重启系统时,先将这些数据读出来再进行语音识别操作。

3.2 语音识别

LD3320最多只支持50个识别关键词,那么也就是说最多也只能支持50条不同语音的播放,每个语音文件在W25Q32DW中都有字符开始位置和结束位置,占一定长度,此时将W25Q32DW芯片的前400个字节用来存放每个语音文件的开始和结束位置,从第401个字节开始至第2 900个字节,存放最多50个固定字符长度为50个字节的关键词。从第4097个字节开始存放实际需要播放的语音数据。

在初始化LD3320完成后,需要对语音识别芯片写入识别关键词列表,此时将之前存入的关键词逐一取出,并写入LD3320中。

在LD3320工作过程中,不管是否识别成功都会产生一个中断,在播放语音文件时也会有3种情况使LD3320产生中断,第一种:声音数据已经全部播放完毕;第二种:声音数据已经全部发送至LD3320完毕;第三种:声音数据暂时要用完,需要向LD3320放入新的数据。而LD3320产生的这些中断,都只由一个引脚输出,则MCU需要分析和处理这7几种中断情况。

如果识别正确,从LD3320可以得到1至4种结果,在此比较得到的几种结果,选取唯一的、二者较靠前的、多者相同最多的,作为最终MCU选择的结果,这个最终结果,是之前存放识别关键词的顺序序号,例如,第一个存放的关键词是“kaideng”,第一个存放的语音文件对应是播放“灯已打开”的人声,则有可能的最终识别结果是1,代表识别到“kaideng”这个关键词。

3.3 语音播放与控制家电

若最终识别结果是第一个关键词,则从W25Q32DW中取出第一个语音文件在存储器中的起始位置和结束位置,采用W25Q32DW的快速读取方式,逐一将这个范围内的数据取出并写入LD3320,LD3320将数据输出至扬声器。

提前设置好MCU与对应的控制模块的控制引脚,则根据最终识别结果的号码,控制相应引脚的电平高低,再配合控制模块达到控制家电的效果。

3.4 与上位机交互协议

与上位机交互协议帧格式如表1所示。

表1 协议帧格式

帧头:0xe8(固定),1个字节;

功能码:0x01-0x05,1个字节;

数据长度域:由数据域字节数决定,2个字节;

数据域:存放要发送的数据,字节数不定;

CRC校验域:存放帧头至数据域最后一个字节的16位CRC循环冗余校验码,2个字节;

帧尾:0xe6(固定),1个字节。

上位机与主控制器交互总共分5种功能:

1) 0x01:发送当前语音文件在W25Q32DW中的起始、结束位置和识别关键词。起始位置和结束位置分别占4个字节,关键词所占字节根据操作者输入的关键词个数来定。

2)0x02:发送当前语音文件的数据,最多一次放入64个字节。

3)0x03:发送配置信息(麦克风增益、灵敏度以及扬声器音量)。这3种配置信息各占1个字节。

4)0x04:发送写入初始化信息和语音文件个数,清除W25Q32DW的前2个扇区。语音文件个数占1个字节。

5)0x05:发送写入完成信息,告知主控制器写入完成。

主控制器根据上位机发来的帧不同,做出不同相应,并应答上位机。在交互过程中,为了保护程序的鲁棒性和数据传输的完整性,是不允许系统进行语音识别的,在交互完毕后,主控制器收到写入完成的命令帧时,才开启语音识别模式。

3.5 上位机软件

上位机软件将操作者需要设置的数据信息经过协议帧打包并通过串口发送至主控制器,主控制器根据操作情况和过程,实时响应上位机,上位机对所接收的数据做分析、处理、显示、以及将写入过程实时反映在界面上。软件的人机交互界面友好,具有智能语音控制系统的所需功能,有很好的易用性。图4为上位机软件的主界面。

图4 上位机软件界面

4 实验结果与分析

直接触发模式(一直处于识别状态)不适合在喧闹的环境运用,包括周围有几个人在对话。口令触发模式(第一步操作者说出口令,待正确识别口令后,第二步操作者说出操作指令,识别成功后直接执行具体操作),整体实现效果比直接触发模式好很多,误识别率很低,稳定性好。

最终麦克风增益、麦克风灵敏度调整为21和18,识别距

离在0~5 m,语音正确识别率很高。

5 结束语

设计并实现了智能语音控制系统,功能较完善,可实现语音识别,人机语音交互,智能控制家电开关。上位机软件的设计,很好的解决了外部存储器数据修改困难的问题,并配合主控制器,使数据传输更加快捷、稳定和可靠,方便了操作者调试、修改和使用,提高了操作者的体验感,从长期测试和使用情况上看,该系统运行稳定,适合应用在智能家居[11]行业中,并有很广泛的应用价值和前景。

[1] 洪家平.LD3320的嵌入式语音识别系统的应用[J].单片机与嵌入式系统应用, 2012, 2:48-49.

[2] 马晓莉.红外热感应智能型节能插座的设计与制作[J].价值工程, 2015, 28:156-157

[3] 张 珉,张俊钰. 基于51单片机的压力蒸汽灭菌器控制器的研制[J].医疗卫生装备, 2013, 34(5):3-4.

[4] 陆二磊,杜永文. 基于LPC1114的迷宫机器人的设计与实现[J].广西民族大学学报(自然科学版), 2012, 18(4):53-54.

[5] 杨 峰,胡 彬,罗青青. STC单片机AD转换及EEPROM使用[J].数字技术与应用, 2011, 9:169-170.

[6] 刘耀文,宁 媛. 基于LD3320芯片的声电密码门设计[J].现代机械, 2013, 4:55-56.

[7] 郑文静,李明强,舒继武. Flash存储技术[J].半导体技术, 2010, 47(4):717-718.

[8] 田 茂,鲜于李可,潘永才.SPI模式下SD卡驱动的设计与实现[J].现代电子技术, 2009, 14:195-196.

[9] 汪永好,周延森. 基于嵌入式Linux的MP3播放器的设计与实现[J].计算机工程与设计, 2009, 30(17):3948-3949.

[10] 刘 岩,华斯亮,王东辉,侯朝焕. 一种用于驻极体麦克风的CT_SC Σ-Δ调制器[J]. 微电子学, 2009, 39(2):150-151.

[11] 刘芮辰,李树江,刘 帅. 基于IIC和云服务器的智能家居控制系统设计[J]. 计算机测量与控制,2017,24(3):98-100.

猜你喜欢
存储器上位字节
No.8 字节跳动将推出独立出口电商APP
静态随机存储器在轨自检算法
No.10 “字节跳动手机”要来了?
轻量级分组密码Midori64的积分攻击
特斯拉 风云之老阿姨上位
基于ZigBee和VC上位机的教室智能监测管理系统
存储器——安格尔(墨西哥)▲
人类进入“泽它时代”
Buffalo推出四硬盘网络存储器 主打Soho一族
基于VC的PLC数据采集管理系统