摘 要: 一个基于语音识别的智能家居控制系统,设计了智能家居的控制方案,研究了通过语音进行了控制的技术,制定了软件系统设计的原则,并设计了APP的功能模块,经测试表明,该系统语音识别的准确率较高。
关键词: 语音; 识别; 智能家居; 控制
中图分类号: TP311 文献标志码: A
Research and Design of Smart Home Control System Based on Speech Recognition
XUE Hui
(School of Mathematics and Computer Application, Shangluo University, Shangluo 726000)
Abstract: In order to build a smart home control system based on speech recognition, this paper designed a control scheme of smart home, studied the technology of speech control, formulated the principle of software system design, and designed the function module of the APP. The test showed that the speech recognition accuracy of the system is high.
Key words: Speech; Recognition; Smart home; Control
0 引言
隨着信息技术的发展,智能家居逐渐进入了人们的视野,人们的生活越来越智能化、便利化[1]。智能家居成为了科技界和工业届的研究热点,关于智能家居方面的论文日渐增多,许多厂家也都在研制更加智能、更加实用的家电产品,但是目前的研究主要集中在使用手机控制智能家居,为了使智能家居使用更加方便,本文在手机控制的基础上增加了语音控制功能,研究和设计了一种基于语音识别的智能家居控制系统,采用语音直接控制家庭中的各种电器,能给人们提供更加智能、更加舒适的家居环境。
1 智能家居控制方案
智能家居控制方案如图1所示。
由于Wifi网络已经普遍使用于家庭中,所以采用Wifi网络组网[2],采用智能手机做为控制终端。市面上已有的智能家电,比如智能电视[3]、智能空调、智能扫地机器人等本身携带有Wifi模块,可以通过无线网络直接连接到无线路由器上。对于电灯,通过单片机采用继电器进行控制[4],单片机可以通过HLK-RM04等Wifi模块连接到无线网络上。Wifi模块、单片机和继电器实际构成了一个智能开关,可以通过手机控制灯的开和关。对于红外线控制家电,比如普通的电视机、空调、电热水器等可以通过学习型红外模块IR-U64/448进行控制,并给手机APP上增加语音识别功能,使人可以通过说话控制家庭里的各种电器[5]。
2 语音控制技术
2.1 语音识别技术简介
语音识别技术是指机器识别人说出的语音,明白人发出的控制命令或者意图。语音识别通过预处理、特征提取、训练、匹配、后处理这样几个过程来完成[6],如图2所示。
经过多年的发展,语音识别技术已经比较成熟,已经可以应用到实际的生活环境中[7]。
2.2 语音识别技术选取
如今,谷歌、微软、百度、科大讯飞等公司都已经开发出了自己的比较完善的语音识别技术,其中科大讯飞在中文语音识别领域取得了领先的地位,因此本系统采用科大讯飞的语音识别技术。
讯飞将语音识别分为语音听写技术、命令词识别技术和语义理解技术3种。语音听写是根据人所说的话生成相应的文字,实现用文字记录语音;命令词识别是识别人所说的话中的关键词语,执行相应的命令;语义理解是分析语句的含义,理解人所说的话的意图,给出相应的反馈结果。对于智能家居控制系统来说,需要识别出人所说出的控制命令,所以应该采用命令词识别技术。
2.3 语音识别流程
使用讯飞语音技术进行语音识别,需在讯飞语音平台下载语音识别SDK并导入Android工程。命令词技术的语音识别流程如图3所示。
首先要在AndroidManifest.xml文件里添加需要用到的权限,比如录音的权限、存储的权限、获取wifi状态的权限等,然后通过SpeechUtility.createUtility创建语音配置对象,把设置好的参数传递给SDK,SDK进行初始化,接着通过mAsr.buildGrammar构建命令词识别的语法,SDK储存并对语法进行分析,再下来通过mAsr.startListening对用户所说的语音进行监听,把监听到的语音信息发送给SDK进行识别,SDK把接收到的语音和语法文件进行匹配后输出json格式的识别结果,最后检测json文件里的控制命令,并发出相应的控制信息。
2.4 BNF语法编写
讯飞命令词识别技术采用BNF语法文件定义用户所说的控制命令。BNF是Backus-Naur Form的缩写,即巴科斯范式,是用形式化的符号来描述语法,广泛的使用于编程语言的语法描述上。对于智能家居来说,由于家庭中的电器比较多,而且各不相同,所以需要针对相应的电器构建各种不同的BNF语法,语音识别结果是否准确关键在于语法构建的是否合理。
2.4.1 为了提高准确率,语法构建应遵循以下原则:
(1) 简洁性 智能家居系统中涉及到的电器比较多,控制命令也比较多[8],虽然可以通过语音唤醒先唤醒相应的电器然后再控制,但这样用户说话比较麻烦,为了使用户可以直接对不同的电器下达命令,语法文件应编写的尽可能简洁,不要使用过于复杂的结构,避免不同的电器相互干扰,力求准确控制指定的电器。
(2) 完整性 人们平时说话是比较随意的,同一个控制命令往往有多种说法,为了用户使用起来方便,要尽量包含日常生活中的各种说法,比如“开”,可以通过“开”、“打开”、“开开”、“开启”、“启动”等多种不同的方式表达。
(3) 实用性 现在的电器功能很多,但是有些功能是极少使用甚至几乎不用的,比如电视机上就有一些功能生活中很少用到。编写BNF语法的时候,只需把常用的功能包含进去就可以了,那些极少使用的功能在需要的时候可以通过电器本身的控制按钮或者遥控器来完成,这样避免语法过于复杂导致识别准确率降低。
2.2.4 现以电热水器为例,示意语法文件的编写:
#BNF+IAT 1.0 UTF-8;
!grammar controlheater;
!slot 〈switch〉;
!slot 〈state〉;
!slot 〈number〉;
!start 〈start〉;
〈start〉: [〈command〉][〈heater〉][〈action〉][〈to〉]〈control〉;
〈control〉:〈switch〉[〈 heater〉][〈mode〉]|〈state〉[〈mode〉]|〈number〉[〈hundred〉][〈watt〉];
〈command〉:把|将|让|使;
〈heater〉:热水器|电热水器;
〈action〉:調|转|变|改|换;
〈to〉:成|到|为;
〈switch〉:开!id(101)|打开!id(101)|开开!id(101)|开启!id(101)|关!id(102)|关闭!id(102)|关上!id(102)|关掉!id(102)|关了!id(102);
〈state〉:低温|中温|高温;
〈mode〉:模式|状态|功能;
〈number〉:一千!id(1 000)|一千五!id(1 500)|两千!id(2 000)|两千五!id(2 500);
〈hundred〉百;
〈watt〉:瓦;
该语法文件遵循了2.4.1的语法构建原则,结构比较简洁,可以控制电热水器开关、控制加热温度、调整功率等,满足基本功能,覆盖了生活中常用的说法,识别准确率高,使用方便。
2.5 识别结果检测
讯飞命令词识别的结果通过xml格式或者json格式标记输出,可以在参数里面设置,为了程序处理起来方便,一般采用json格式。json格式输出的结果里用ws表示词组,cw表示词,w表示分词,用户说出的控制命令经识别后存储在w里,通过循环检测w里面的分词获取识别结果,从而对家电进行控制。
3 控制系统软件设计
3.1 APP需求分析
基于语音识别的智能家居控制系统主要是通过语音控制家庭的各种家电,所以首先要能根据家庭的情况对电器进行设置,比如增加电器、删除电器、修改电器等,其次就是要能进行语音识别和控制,用户通过手机输入语音后进行识别,先分析是对哪个电器下达命令,然后分析控制命令的具体内容,最后根据控制命令发出相应的控制信息[9],通过Wifi网络传输到终端,完成控制的过程。
3.2 APP设计的原则
为了使家居控制系统易于使用,本系统在设计的时候遵循以下原则:
(1) 灵活扩展 现如今,人们生活中各种各样的电器很多,所以系统要比较灵活,可以方便的进行各种扩展,电器可以随时增加,BNF文件也可以随时更新,还可以及时把不再需要的电器去除掉。
(2) 方便易用 在手机终端加上语音控制的目的就是为了方便人们使用,所以系统要尽可能的方便,APP首页就直接显示“按住说话”的控制按钮,用户说话后系统自动区分要控制的电器,识别后直接发出控制信息,使得用户可以通过简单的操作完成控制。
(3) 及时反馈 语音识别后及时发出识别结果和控制信号的反馈信息,比如“灯已打开”、“空调已经启动”、“电视音量已经增大”等,这些反馈信息可以通过语音合成,形成人机语音交互。
(4) 可视化管理 对于电灯和电器的设置通过形象的模拟界面来完成,可以按房间分类显示,也可以按电器的种类分类显示,使得用户可以直观的完成各种操作。
3.3 APP功能模块设计
系统的功能模块设计如图4所示。
主要分为电灯管理、电器管理和语音控制3个模块,电灯管理和电器管理模块分别对电灯和电器进行设置,语音控制模块是系统的核心模块,分为BNF文件管理、语音识别和控制命令三个子模块,其中BNF文件管理模块用来管理语法文件,可以把已经编辑好的BNF文件输入系统,语音识别模块调用SDK对用户输入的语音进行识别,把识别结果传送给控制命令模块,控制命令模块分析识别结果中的命令,并把控制信息发送给相应的电器。系统采用手机上常用的Android平台[10],用SQLite数据库储存电器数据,通过socket数据通信实现向Wifi模块发送控制信息。
4 软件系统测试
对软件系统的测试表明,本系统语音识别的准确率较高,如表1所示。
由表1可见,从上到下不同种类电器的控制信号越来越复杂,控制信号越复杂,识别准确率越低,为了解决这个问题,对于控制信号复杂的电器,可以只设置常用的控制命令,以提高识别的准确率。
5 总结
为了实现一个智能家居控制系统,方便人们通过语音对家庭中的电器进行控制,本文设计了一种基于Wifi网络的智能家居控制方案,研究了通过语音进行控制的技术,制定了软件系统设计的原则,并设计了APP的功能模块,经测试表明,本系统语音识别的准确率较高。
参考文献
[1] 王基策,李意莲,贾岩,等.智能家居安全综述[J].计算机研究与发展,2018,55(10):2111-2124.
[2] 刘德阳,温宗周,薛冬旺,等.基于WiFi的智能家居中央控制系统设计[J].单片机与嵌入式系统应用,2018,18(8):82-87.
[3] 王森,刘平.基于智能电视非特定语音控制系统的设计[J].信息技术,2017(6):58-61.
[4] 陈盛,胡维平,张佑贤,等.基于嵌入式的语音控制系统的设计与实现[J].电子设计工程,2018,6(19):57-61.
[5] 王磊,何勇,张宇,等.基于便携式语音的智能家居系统的设计与实现[J].计算机工程与设计,2018,39(5):1290-1295.
[6] 包晓安,徐海,张娜,等.基于深度学习的语音识别模型及其在智能家居中的应用[J].浙江理工大学学报(自然科学版),2019,41(2):217-223.
[7] 赵丽,郑艳芳,田会峰,等.基于云平台的家庭语音控制系统[J].实验室研究与探索,2018,37(10):73-75.
[8] 孙红军,周万根.基于LD3320语音识别的智能家居控制系统设计[J].电子测试,2017(18):18-20.
[9] 李泽彬,姚有峰,张飞龙,等.基于单片机的智能家居语音控制系统设计[J].电子设计工程,2017,25(8):175-177.
[10] 许秀富,吕小南.Android手机的智能家居语音控制系统设计[J].单片机与嵌入式系统应用,2018,18(1):48-51+56.
(收稿日期: 2019.08.12)
作者简介:薛辉(1983-),男,陕西商洛人,硕士,工程师,研究方向:计算机教育教学改革、应用软件开发。文章编号:1007-757X(2020)01-0149-03