黄李健
(宁德师范学院信息与机电工程学院,福建宁德,352100)
智能语音识别技术可以让机器通过识别、理解,把声音信号转化为相应的文本或命令,让机器能够听懂人类的语言,从而做出正确的操作[1]。智能语音技术作为AI应用最成熟的技术之一,在智能家居、智能车载、智能可穿戴领域有了迅猛发展[2]。“智能家居”是集信息家电、设备自动化、网络通信、传感为一体,从而实现家电可被远程操控的一种便利、高效、安全的管理系统[3]。真正的智能家居应该做到真正的无感化,可以直接与其“对话”,实现对家电家居的控制,真正打造一款无感化的智能家居系统[4]。利用话语来进行操作控制,能够为人们在实际应用过程中减少手动控制的过程,提高操作的便利性,这一控制技术正在改变人们日常生活的方方面面。智能语音家居系统可以提高人们生活的幸福感[5]。本文设计了一个具有语音识别的智能家居控制系统,系统使用便利,安全可靠。
如图1所示,系统以STM32F103C8T6作为主控制器,语音模块采用SNR6812进行语音信息的识别,温湿度模块采用DHT11进行室内温度和湿度信号的检测,并交由单片机进行数据处理;采用光敏电阻实现对外界光强的测量,并可依据设定的光强阈值范围,实现对窗帘的自动控制;按键电路可以实现模式的切换以及数值的调节;显示模块采用TFT液晶显示屏,实现系统的人机交互界面,通过显示屏可以读取温湿度、光照强度、时间日期、设备的开关状态、灯光亮度等信息。
图1 系统整体框图
该智能家居系统能够对家庭内部的环境参数进行系统性的采集,根据光照、温度、湿度等环境信息的变化自动做出相应控制。同时,声控模式可以识别用户的语音命令,并传输给单片机,通过主控中心解析该命令后进行相关操作控制。此外,还保留了手动控制模式,当自动模式和声控模式失灵时,可以通过手动操作按键控制设备。
系统选用的处理器模块采用STM32单片机,型号为STM32F103C8T6,它最高带有64K的Flash,抗干扰能力强。采用STM32作为主控制器,功能比较全面,编程方式基于C语言,编程灵活,可移植性强,自由度大,能实现多种算法,这个控制器也在各个领域广泛的使用,小到日常家电,大到工业仪表,随处可见它的身影。
语音模块采用SNR6812语音模块,其抗干扰能力比大多数的语音识别模块要强,在市场上的使用率非常高,原因是该模块的内部具有更高级的语音识别算法,这样即使在高噪声环境下使用也可以较为稳定地识别出指定关键字的声音。且该模块无需用户录音训练,具有高稳定的非特定人声语音识别,可以满足设计的可靠性需求。本模块具备UART通信界面,语音引擎可以自动反馈识别成功后的数据,通过UART串口发送,可灵活搭配MCU使用,这使得语音识别的使用变得简单,提高了开发的效率。该模块专注本土优化的语音识别算法,只支持普通话语种。
数据采集模块包含温湿度采集和光照强度采集模块。设计中利用DHT11温湿度传感器对室内温湿度进行监测采集,DHT11是一款常用的温湿度复合传感器,具有校准数字信号输出功能,其性能稳定,安全可靠。采用光敏电阻传感器对外部环境光线进行监测,根据光敏电阻阻值随光照强度变化的特性,实现光照强度的测量。
显示模块采用TFT-LCD液晶显示器,它是薄膜晶体管型液晶显示屏,即所谓的“真彩”。每一个TFT液晶的像素都有独立的半导体开关,因此每个像素都可以通过点脉冲直接控制,故而每个节点都相对独立,同时也可以连续控制,这不仅使显示屏的反应速度更快,还可以使显示色阶更精准,这都使得TFT液晶的色彩更真实。该模块可以实现室内环境的温湿度、光照强度、风扇灯光等设备的工作状态以及时间、日期等信息的显示功能。
在此系统设计中,通过对步进电机进的控制,模拟实现对窗帘的自动开关功能。步进电机是一种可以将接收到的电信号转换为相应角度动作的电机,属于一步一动类型,与直流电机相比,其可以很好地控制行程的长短,达到较好的控制效果,采用的步进电机型号为28BJY-48,是一个四相八拍的步进电机。由于单片机的I/O口本身驱动能力有限,不能对其进行直接驱动,因此需要经过相应的电路进行放大,可以通过ULN2003实现,其持续输出电流可以达到500毫安以上,满足本次设计需求。
风扇的作用是模拟降温设备,当家庭环境的温度过高,可自动开启风扇设备,风扇相当于一个电机设备,所以无法直接用单片机的引脚口去驱动,这里使用了一个三极管的驱动电路实现,采用8050型号三极管,这是一种NPN型三极管,在三极管的基极串联一个限流电阻,然后与单片机的I/O口相接,这样当该引脚口输出高电平时三极管导通,风扇就会开启。灯光控制部分采用USB接口驱动LED灯实现。
主程序流程图如图2所示。程序启动后首先进入初始化设置,传感器、显示模块、语音模块以及相应的时钟、定时器的初始化完成后,系统就会进入主程序循环,控制包括自动、手动、声控三种模式。当程序进入自动模式后会进行温湿度和光照强度的检测,从而实现对风扇以及灯光的开关控制;当程序进入声控模式,语音模块等待唤醒,唤醒后接收预先设置的指令,例如“打开风扇”指令后,单片机会控制风扇电路启动风扇;当程序进入手动模式,按键扫描程序启动,对按下的按键进行检测,进而通过单片机控制对应设备的开关。
图2 主程序流程图
语音识别模块包含语音关键字识别和语音识别芯片与单片机之间利用串口的信息传输,传输的内容是一串十六进制数值。系统初始化后,加载语音关键词和识别列表,当用户通过语音进行控制时,单片机对语音信号进行匹配,匹配成功后输出控制命令。语音识别命令包括一级指令和二级指令,呼叫一级指令“小智你好”唤醒语音模块才能进行语音控制操作。之后通过语音控制二级指令如“打开灯光”、“关闭灯光”、“调亮一点”、“调暗一点”、“打开风扇”、“关闭风扇”、“提高速度”、“降低速度”、“打开窗帘”、“关闭窗帘”等实现相应具体控制动作。
当程序进入自动模式后会进行温湿度和光照强度的实时检测,采集信号经过AD转换后送单片机处理并显示,依据预先设定阈值范围实现对相关设备的自动控制。例如:当光照强度在合适的范围内可以驱动电机打开窗帘,温度过高时自动打开风扇,环境光线较暗时自动打开LED灯。手动控制模式通过具体功能按键控制。