利用自然语言处理的无线智能家居设计
2021-08-16徐明辉郑泽宇林剑雄
徐明辉 郑泽宇 林剑雄
【摘要】 针对传统有线智能家居安装困难、维护成本高,无线智能家居操作难度大、通讯距离短等问题,本文结合语音识别与智能控制技术,设计了一款采用语音控制家居灯光亮暗的智能系统,利用自然语言处理技术识别方言,简化操作,扩大控制范围。若结合AI算法,可使智能灯光系统根据环境变化自动调节舒适度并令终端周期性休眠,用户可通过智能手机实现无线远程唤醒或直接控制,在减少能耗的基础上构建一个智能家居的未来生态模型。
【关键词】 自然语言处理 智能家居 无线控制 语音识别
引言:
智能家居是以家庭为平台,利用无线通信技术与远程控制技术把家居设备集成在一起,构建高效的人工管理系统,提升家居舒适性,并实现智能的居住环境。随着科技的发展与智能手机的普及,家居设备的远程智能控制已成为现实[1]。
目前,智能家居内部实时监测网络的组建分为有线与无线两种方案。其中有线方案具有安装困难、维护成本过高、布局效果单一等缺点[2],无法满足人们对智能、舒适度的需求,因此无线智能家居应运而生,用户可以本地控制(触控屏),也可以通过智能手机、计算机实现多种方式的控制。
“自然语言”即人们日常使用的语言,包括口语及书面语,是人类发展过程中形成的一种信息交流的方式,反映了人类的思维。“自然语言处理”是计算机通过接受用户自然语言形式的输入,在内部基于人类所定义的算法进行分析,来模仿人类对自然语言的理解,返回匹配结果[3]。从系统处理的角度来看,自然语言的字符串与其含义之间是一种多对多的关系,因此字符串的最优解析是十分必要的。
结合语音识别与智能控制技术,本文设计了一款采用语音控制家居灯光亮暗的智能系统(以下简称智能灯光系统),利用手机的语音采集功能和本文设计的语音识别算法,将输入的语音处理成最优解析的灯光亮度调节命令,通过智能手机经由WIFI信道控制房间灯光,以实现适应用户需求的舒适程度。本系统稍加修改,就能控制各类家用电器以实现用户的各种需求,特别是老年人。若以睡眠技术为基础,结合AI技术,还能使系统周期性休眠并自动做出调节,大大节约能量,因此该系统具有广阔的应用前景。
一、系统组成
智能灯光系统由手机App、WIFI路由器、ZigBee网关以及终端四部分组成,如图1所示。手机App是系统的主要控制核心,语音采集与处理、调节指令的形成与发送等均是在手机App中实现的;WIFI路由器实现无线路由选择与通信;ZigBee网关由WIFI收发模块、单片机模块和ZigBee模块(以下称网关ZigBee模块)组成,该网关将WIFI协议转换成ZigBee协议,解析手机发送的操作指令。终端由带有PWM调制功能的ZigBee模块(以下称终端ZigBee模块)和LED灯组成,终端ZigBee模块根据网关ZigBee模块传送的灯光调节指令调节PWM信号得到不同亮暗度灯光。
系统各个模块供电后,手机App通过WIFI路由器自动和单片机模块连接,用户在手机App按下“连接设备”按钮,使手机App的状态变量进入连接状态,然后点击“开始识别”按钮,系统自动将用户说出的话翻译成文本显示在手机App上,同时向ZigBee网关发送对应指令。若用户对亮度不满意,可拖动LED灯的亮度“进度条”,系统将根据用户需求調节灯光亮暗。
1.1手机App
手机App具有两个基本功能:第一、语音识别:实现语音信息的可视化从而能根据不同的语音做出不同反应进而向ZigBee网关发送对应的指令。第二、局域网通信:通过TCP/IP协议使手机App能够与ZigBee网关互相收发消息,实现半双工通信。为实现上述基本功能,手机App需要完成:1.语音的采集与识别(包括对方言的识别);2.指令的解析;3.指令的发送。下面分3个部分分别叙述这几个功能:
1.语音的采集与识别。语音识别是让智能设备能听懂人类的语音,其本质是一种基于语音特征参数的模式识别,利用了一部分自然语言处理技术,让系统把输入的语音按识别模式区分,进而通过判定准则获得最佳匹配效果[4]。语音识别不仅能够识别普通话,同时也能识别东北话、粤语、河南话等各地方言。方言识别:系统根据方言识别与普通话识别的差异,利用第三方云平台,构建一个可以包括识别技术的云平台应用。首先进行语音识别模块的初始化,定义语音听写对象、结果存储变量,设置语音听写UI、引擎类型。在语音识别前,系统会向第三方云平台请求服务,通过APPID确认,然后配置参数,比如语言类型和返回结果格式等等。在用户语音识别时,通过录音获取语音数据,以此判断识别语言类型,随后上传至云平台,进行数据处理,识别回调错误,在返回值中做数据解析,手机APP会显示识别结果,同时向单片机模块发送指令,通过Client/Server通信传输实现远程控制终端,具体原理如图2所示。
2.指令的解析。指令解析是将前面识别出来的文字封装成适合WIFI信道传送的信息帧,该信息帧再添加WIFI协议头形成WIFI协议信息帧,手机APP通过WIFI信道发送给单片机模块。在系统的整个控制过程中有三种指令,并对这三种指令分别定义了一种识别码:1)连接指令:“TCPClient_Connect”。表示LED灯的状态,在发出进一步指令前得到。在任何条件都能使用,它是自动更新的指令,也是三个指令中优先级最高的指令。2)灯操作代码指令:“Open_led1” “Close_led2”等等。通过语音识别得到,是第二优先级的指令。当灯处于连接状态时才能使用,每个序号的灯都设置了开灯、关灯功能。3)亮度指令:Setled。通过拖动进度条得到调节值“fansetval”,在发出指令前加上前缀“Setled”,并确认此时LED灯的连接指令,然后再确认灯操作代码指令,最后才能使用亮度指令,是优先级最低的指令。
用户语音识别后,系统用一个空白文本显示识别结果,将该文本和手机App中预先设定的文本进行比较,以此判断用户此时的操作,并将其编辑成对应指令码,同时将LED灯的开关状态“led_sta”置反,这个变量将会在调节亮度的功能得到使用,用于判断LED灯实时状态。如果识别不到文本,说明TcpSocket连接断开,用户重新连接设备即可。
在实现亮度调节的时候,若选用语音识别,“变暗”或“变亮”没法准确描述用户想要的亮暗程度,因此选择了进度条控件来展示这一过程。用户直接拖动进度条,并根据终端LED灯亮暗实时变化直接调节会更加方便。系统调用了事件监听接口中的onStopTrackingTouch方法,即用户在停止拖动进度条的时候执行。为用户的操作限制一个最小范围,防止LED灯的亮度变化不明显,此时的进度条的progress的值会赋给一个变量,通过该变量来设定LED灯的亮度。在进行每一个需要发送指令的操作时,为发送不同指令的多个线程都增加了判断连接状态以及返回连接状态判断及提示,如图3所示。
3.指令的发送。通过TCP/IP协议实现Client/Server(客户端/服务器)通信时,必须调用Socket编程函数,它起到了连接应用层与传输层的作用[5]。系统基于Socket软件抽象层实现手机App与ZigBee网关的无线连接,安全性高、稳定性好。通过自定义IP地址与端口号,实现Client/Server通信,根据不同连接状态下的不同操作启用对应的线程。在完成指令的解析后,通过TCPClient.SendDat将指令码以UART串口通信的方式发送给ZigBee网关,为了防止多个线程同时连接导致TCP连接不稳定以及传输数据混乱,系统额外增加了连接时的状态稳定,使其每一次只运行一个线程。
1.2 ZigBee网关
ZigBee网关的硬件由WIFI收发模块、单片机模块和ZigBee模块组成,该网关将WIFI协议转换成ZigBee协议,解析手机发送的操作指令。“WIFI收发模块”接收无线路由器发送的WIFI协议信息帧,去掉WIFI 协议头,得到信息帧送入单片机进行操作码的接收分析,然后送入网关ZigBee模块进行ZigBee协议的封装。单片机模块的作用是信息转发,将WIFI接收到的数据发给网关ZigBee模块,搭载WIFI收发模块后可以快速地构建串口-WIFI数据传输网络,网关ZigBee模块的作用是灯光调节指令解析,然后存储到数据缓存中,向终端ZigBee模块发送,并完成网络状态的更新。
1.信息转发。每接收一个字节,单片机模块的串口就会产生一个数据中断,当一帧数据发送完成就产生一个空闲中断,在空闲中断里面处理数据。首先监测串口接收到的是数据中断还是空闲中断。如果是数据中断,就把数据给读出来,先放进临时变量里面,然后进行判断,如果接收到的数据个数小于数组容量,就把数据存在数组里面,每存进来一次,就把数据读出来一次进行赋值,然后累加数据。如果接收到的数据个数大于数组容量,就将数据个数清空,最后清空中断标志位。数据发完以后就会进入空闲中断,读取寄存器的值来清除空闲中断。如果接受到数据的长度大于0,说明接收到了有效数据,单片机模块通过UART串口通信的方式将数据发送给网关ZigBee模块,随后把接受数据的个数以及数组里面的数据清零,如图4所示。
2.灯光调节指令解析。为实现指令解析而定义一个反馈函数,让系统到函数内取数据。首先接收字符串,并读取字符串大小,然后进行判断。若是有效数据,直接读取串口指令数据。若指令为开灯或关灯,通过接收到的字符串中是否包含定义序号的字符串来判断LED灯的序号,然后将储存数据的数组赋予相对应的指令发送给终端。若指令为调节亮度,也要先判断LED灯的序号,然后系统提取单片机模块发送指令中的亮度數值,把它转化成实际数值。若数值在手机App设定的范围内,就把数值存进数组内,赋予指令发给终端。在完成发送后,将数组大小,数据长度等信息发送回单片机模块,如图5所示。
1.3 终端
终端由带有PWM功能的ZigBee模块(以下称终端ZigBee模块)和LED灯组成,终端ZigBee模块根据网关ZigBee模块传送的灯光调节指令调节PWM信号高低电平所占不同的比例(占空比)得到不同亮暗度的灯光,如图6所示。
终端ZigBee模块一旦匹配上识别码表示选中本模块,解出操作码。
PWM模块实现了根据接收到的指令改变电平输出。PWM模块输出端口输出的周期为,占空比为的周期脉冲信号,由于PWM是低电平有效器件,所以当较大时,输出信号高电平的时长较长,灯的亮度较暗,当较小时,输出信号低电平的时长较长,灯的亮度较亮,如图7所示。
二、结束语
本文以单片机作为中间桥梁,将WIFI和ZigBee两种不同的无线协议连接起来,使用语音识别技术和智能控制技术搭建了一套智能灯光系统。以智能手机App的语音采集功能为媒介,通过部分自然语言处理技术实现方言识别,简化操作难度,将最优解析的灯光亮度调节指令通过无线网络向终端传输,实现远程控制灯光,适应用户需求的舒适程度。
若结合AI算法,将智能手机声光传感器采集的数据与单片机模块发送的数据进行比较,系统可自动对家用电器状态做出调节。若想进一步减少待机能耗,可只让系统终端处于周期性休眠状态,同时监听网络有效数据,若未接收到含有前导码的数据则立即休眠,等待下一次唤醒。用户也可以通过手机App直接唤醒,系统会自动记录每次用户与终端的交互时间,然后预估下次唤醒时间点,准点去唤醒终端,构建一个智能家居的未来生态模型。优化后的智能灯光系统即可帮助用户解决环境舒适度的烦恼,也可以科学分配能源,因此大有前景可言。
参 考 文 献
[1]赵艳. 基于CC3200的智能家居无线安防系统的设计与实现[D].上海师范大学,2017.
[2]薛飞. 基于ZigBee技术智能家居控制系统的设计与研究[D].扬州大学,2019.
[3]宁志豪,周璐雨,陈豪文.浅谈机器学习与深度学习的概要及应用[J].科技风,2019(15):19.
[4]张春刚,甘龙.智能语音提示技术在数字万用表的应用研究[J].数字技术与应用,2020,38(05):43-44.
[5]唐天波,赖小波.基于Linux的局域网聊天软件设计与实现[J].福建电脑,2018,34(10):15-17.