基于语音识别技术的智能家居系统设计
2023-12-25黄玲周裕滨黄源俊
黄玲 周裕滨 黄源俊
摘要:在社会人口老龄化越来越严重的背景下,针对独居老人居家不方便的问题,该文设计了基于语音识别技术的智能家居系统。该系统控制包括语音、手势和自动控制等方式,利用传感器对手势数据进行识别之后实现姿态解算,使处理之后的数据在单片机中传输,如果和预设手势匹配,那么就能够对家居设备进行控制。另外,各项环境参数与家居设备状态实时显示在显示屏中。该设计系统能够方便独居老人的生活,安全性较高。
关键词:语音识别;智能家居;系统设计
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2023)31-0038-03
开放科学(资源服务)标识码(OSID)
将语音识别技术和语音合成技术结合起来所创建的语音用户界面在智能家居中应用能够实现家电设备的语音控制,从而提供给用户舒适、安全的生活环境。目前,智能家居技术相关产品已经开始广泛应用。本文重点分析如何设计先进智能家居系统,这里的先进主要体现在设备技术水平方面,以促进现代智能家居的发展。
1 系统的功能需求
本文研究主要目的是实现基于语音识别的智能家居系统设计,用户能够利用语音指令控制家用设备,比如灯光、空调、电视等,提高人们生活便利性[1]。通过系统需求分析,功能需求包括:
1) 语音识别。此为系统基本功能,也是本次设计重点,语音识别能够提高家居生活便利性。
2) 自动休眠。节约用电,使功耗降低[2]。
3) 无线数据传输。数据传输能够联系各系统模块,使用语音控制nRF95模块实现。
4) 语音唤醒。在检测输入语音的时候,能够自动退出休眠模式后工作。
本文设计过程中使用非接触式IC卡,也称为射频卡技术、无触点集成电路卡。和读写器没有机械接触,是根据空间媒介电磁波通信。主要特点是安全性好、可靠性高、操作方便。使用DS18B20数字温度传感器测温,封装之后能够应用到洁净室测温、电缆沟测温和锅炉测温等场合中[3]。
系统的框架设计如图1所示。
2 系统的硬件设计
在系统硬件设计过程中,家庭网关主控硬件通过网关通信和语音识别模块构成,收集语音信息并且预处理,最后使其识别为文字[4]。
2.1 主控中心模块
主控中心使用JZ2440开发板,使用三星公司微处理器S3C2440A作为核心控制器,主要特点为体积小、功耗低、功能强大。首先,此开发板的外设比较丰富,提供多个调试接口,主要包括3个COM口和1个ITAG口,开发者的程序调试比较方便,能够节约开发时间[5]。其次,提供64M SDRAM等资源,为用户提供声卡、网卡等硬件资源。另外,JZ2440开发板还具备大量接口,包括音频接口、以太网接口、TF卡插座、摄像头接口、LCD显示接口等。最后,此开发板具备支持I2C总线设备、外扩SPI总线设备等能力,使多个外设的扩展更加方便[6]。
2.2 图像采集模块
本文在主控中心中设置视频架空模块,使方案问题得到解决,并且提高住宅安全性。JZ2440开发板自带摄像头接口和USB Host接口,能够控制摄像头,但是不方便进行后期开发与维护。另外,带有USB摄像头种类比较多,可以自由选择,由于支持MJPEG压缩格式输出的USB接口能够提高视频传输性能,因此本文使用带有USB接口的摄像头收集图像[7]。
为保证图像清晰,价格成本低,本文使用RER-USB30W02M摄像头。此摄像头工作电压为DC5V,支持不同压缩格式的输出。图2为图像采集模块的框图,利用USB接口与JZ2440连接,使收集的视频在SD卡中分时段存储,使视频在LCD显示屏汇总实时显示,还能够利用网络通信在终端传输视频内容。
2.3 红外节点硬件
红外节点由STM32F103单片机、HXD019D和nRF905射频模块构成,HXD019D红外模块属于节点红外控制模块,此模块包括红外LED灯和HXD019芯片。芯片体积较小,集成市场中大部分红外设备遥控码协议,能够学习全球各种红外码值,并且支持大部分红外码格式。其次,红外LED还能够接收与发送红外信号,工作电压为3.3V,能够对5m内红外家电进行遥控[8]。
HXD019D红外模块还能够学习码值,在對家电控制前要求对家电遥控器按键键码进行学习。在学习过程中,将遥控器近距离对准模块红外LED灯,成功学习键码之后在EEPROM存储芯片中进行存储。在对家电控制过程中,发送存储键码,就能够代替红外编码遥控器控制红外家电设备,包括机顶盒、电视、空调等。
2.4 语音模块
语音识别模块使用软硬一体化模块,内部集成语音收集和处理功能,封装语音交互的复杂功能,并且能够为开发者提供接口调用。内置Wi-Fi芯片、ARM处理器等,可以使用Linux、Android等适合操作系统的二次开发,扩展其功能。在通信过程中,集成Wi-Fi和ZigBee等无线模块,能够接收组网网络中信号。异构通信模块包括协议转换模块,能够实现终端硬件模块传输不同通信协议数据的解析转换。最后,终端设备通信协议、协议适配块能够实现不同协议终端的验证。数据处理模块能够以不同公司协议规范实现数据处理,统一数据应用在统一协议模块中,规范数据格式。
2.5 继电器节点硬件
继电器节点通过STM32F103单片机、继电器模块和nRF905射频模块构成,继电器模块为非红外模块。继电器也就是智能插座,通过继电器、NPN型三极管、光电耦合器构成。由于电路两侧包括强电、弱电,在充分考虑强电和人体的直接接触导致的安全事故时,可以使用光电耦合实现光电隔离。光电耦合左侧和PB12引脚相互连接,在PB12为高电平的时候,光耦C、E两个引脚接通。在PB12为低电平的时候,光耦C和E引脚为高阻态。
在智能插座工作过程中,PB12管脚为高电平,和光电耦合器接通,继电器弱电侧在5V直流电压供电中实现三极管S9013导通,放大电流,实现继电器工作。智能插座、家用火线的火线端连通,从而使家电能够正常通电,实现家电上电[9]。
3 系统的软件设计
系统上电之后,要实现初始化,各模块的蓝牙在各自单片机控制下构成Mesh网络。语音识别模块中的语音识别芯片能够进行初始化和复位,并且使需要识别的语音条目利用单片机在识别列表中写入,中断单片机开放外部,等待输入语音信号。在对语音信号手机时,如果利用处理识别得出信号和识别列表的某个条目匹配,那么就会触发外部中断。在此过程中,以寄存器值结合对信号代表的语音命令进行判断。单片机控制蓝牙器件,使命令利用Mesh网络在后台控制中心发送。如果收集的语音信号和识别列表所有条目不匹配,那么就放弃当前结果,不会使外部中断触发,等待输入语音信号。
3.1 在线语音识别处理
能够实现听写语音和语义识别,是在线识别,要求在云端服务器中上传语音数据。在成功识别语音之后,服务器就会返回语义分析结果,只需对接口调用,实现输出数据的解析即可。
3.2 离线语音识别
在没有网络时,只需创建能够对输入语音数据实现本地化语音识别的模块,步骤包括:
1) 数据预处理。得到的语音信号无法直接实现语音识别,要对语音信号进行预处理,包括输入模拟语音数字化、预加重、加窗等处理,消除噪声。因为预處理效果会对后续语音识别效果造成影响,所以本文使用全新预处理模型,也就是在多噪声环境中的层级语音识别模型,核心思想就是使环境造成作为需要识别的内容,在识别语音中传递。
2) 特征提取。提取能够代表信号本质的参数,去除无关噪声信号。
3) 识别算法。通过上述识别步骤实现声学模型训练,使用基于隐马尔可夫模型的声学模型,和传统方法对比,其性能有所提升,能够有效实现模型训练。
3.3 网关模块程序
网关设备能够连接家庭内外网,ZigBee网关能够使IP网络设备与ZigBee网络通信。其一,能够实现网络管理在网络本地运行,常见的包括网络信息或者信息的检测、获取、节点配置和控制等;其二,本地管理。能够使用ZCL命令、ZDO命令或者定义命令实现,网络拓扑获取能够利用应用层ZDO发现命令实现,得到协调器IEEE地址和关联设备地址,之后逐一对关联设备发现。以下为网关设计主要代码:
int sobacklog = Integer.parseInt(AppConfigUtil.getValue("netty.sobacklog"));
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.localAddress(new InetSocketAddress(this.portHTTP))
.option(ChannelOption.SO_BACKLOG, sobacklog)
.childHandler(new ChannelHandlerInitializer(null));
ChannelFuture f = b.bind(this.portHTTP).sync();
logger.info("HttpServer name is " + HttpServer.class.getName() + " started and listen on " + f.channel().localAddress());
protected void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new HttpRequestDecoder());
p.addLast(new HttpResponseEncoder());
int maxContentLength = 2000;
try {
maxContentLength = Integer.parseInt(AppConfigUtil.getValue("netty.maxContentLength"));
} catch (Exception e) {
logger.warn("netty.maxContentLength 配置异常,系统默认为:2000KB");
}
p.addLast(new HttpObjectAggregator(maxContentLength * 1024));// HTTP 消息的合并处理
p.addLast(new HttpServerInboundHandler());
}
在通过网关实现远程管理过程中,网络本地管理命令能够通过网关接收与发送实现开发,用户只需掌握特定命令。应用平台使用户指令朝着网关可理解的指令转化,利用IP网络对网关设备发送,转变为ZigBee定义命令,之后在本地网络中发送,从而实现信息在内外网之间的传递,如图3为网关模块软件流程。
4 评估结果
针对系统初始化内置网关协议指令集和异构协议网关所收集的数据,本文利用BP神经网络算法训练模型结果集、输入层包括家庭成员声纹编号、语音指令时间等,利用神经网络训练学习对各个连接权值和激活阈值进行自动确定,使期望输出与想要结果逐渐接近。也就是能够实现人在厨房或者客厅,只要说出开灯指令,就能够将灯打开。表1为模型训练后结果。
5 结束语
本文实现了系统硬件电路和系统软件的设计,通过测试表示,本系统的稳定性和识别率较高,能够为人们在家居生活中提供便利,从而实现人们家居生活的智能化。但是,本系统还需要完善,例如存在无法自定义控制端口用户等。为了保证PC能够和单片机通信,在设计过程中预留USART接口,后续为能够在PC机中使用串口通信方式实现单片机软件升级,要对系统功能进行完善。
参考文献:
[1] 陈希祥,黄伍,李德英.基于语音识别的智能家居控制系统设计[J].自动化与仪表,2021,36(7):91-95.
[2] 薛辉.基于语音识别的智能家居控制系统的研究与设计[J].微型电脑应用,2020,36(2):149-151.
[3] 宋朝霞,舒瑞康.基于LD3320的语音识别智能家居控制系统的设计[J].信息与电脑(理论版),2020,32(20):105-106.
[4] 王平,王焱.基于物联网平台的智能家居中心控制系统设计[J].计算机测量与控制,2020,28(11):79-83.
[5] 王光艳,杨秀芬,周慧敏,等.一种智能家居的语音交互方案设计[J].新一代信息技术,2021,4(2):11-19.
[6] 林学伟,严明忠.基于STM32单片机的智能家居控制系统设计[J].廊坊师范学院学报(自然科学版),2020,20(4):35-38.
[7] 王俊之,王彦,孙毅.基于语音交互的智能家居系统[J].南华大学学报(自然科学版),2020,34(1):60-67.
[8] 岳丽颖.基于无线Wi-Fi技术的智慧家居控制系统的研究与设计[J].辽宁科技学院学报,2022,24(4):15-19.
[9] 梁浩林,何永玲,冯博华.基于STM32的室内物联网控制系统[J].物联网技术,2022,12(8):97-99.
【通联编辑:代影】