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

(整期优先)网络出版时间:2024-02-22
/ 3

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

林文君 曹璐 高琪 易凤萍

(盐城师范学院信息工程学院  江苏 盐城 224002)

摘 要:在日常的生产工作中,沟通可以大幅提高生产的效率和质量。在过去,在工厂注重的是人与人的沟通。随着时代的进步和科技的发展,机器的效率远远超过手工,如果能让人与计算机的交流也能达到这样的简单高效,那将带来极大地便利。基于IoT的智能语音控制系统,通过ASR-ONE实现语音控制,用户可以通过麦克风对ASR-ONE发起语音命令,ASR-ONE会根据语音命令控制温湿度或RGB灯的亮灭情况,用户也可以在手机接收到温湿度显示。本系统实用性很强,具有广阔的应用前景。

关键词IOT智能语音控制;APP

1引言

随着我国经济的不断发展,我国正大步迈入智能时代,物联网更广泛地应用到各行各业中,人工智能技术也快速发展,使得各种语音识别产品在人机交互应用中占到的比例越来越大。在此基础上,AIoT技术是AI技术和IoT技术的融合,利用不同物联网终端收集的数据并存储在服务器云端,再通过大数据模型进行分析,实现万物数据化、万物智联化,最终追求的是形成一个智能化的生态体系,在该体系内,实现了不同智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通,万物互融。由此我们设计了智能语音识别系统,通过ASR-ONE实现语音控制,用户可以通过麦克风对ASR-ONE发起语音命令,ASR-ONE会根据语音命令控制RGB灯的亮灭、播放温湿度情况,用户也可以在手机接收到温湿度显示[1]

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

2.1 硬件部分设计

硬件系统主要包括主控制单元、温湿度采集模块、语音识别模块、语音播放模块、显示模块、WIFI模块。控制单元能够通过通讯协议与各模块进行通讯,对采集的数据进行数模转换处理,考虑到性能及体积问题,选择STM32C6T6作为主控制芯片;温湿度模块采集真实环境中温湿度的模拟量,为保证一定的精度及温湿度的同时测量,选取DHT11模块;语音识别模块主要是通过人为发出的声音对整个系统进行唤醒,语音播放模块能够周期性的播放温湿度,同时当高于或低于设定的阈值时能够进行报警提醒,选择ASR-ONE芯片实现所需功能;显示模块通过LED屏进行显示,为能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,选择串口触摸屏;WIFI模块能够将数据发送到云平台上进行存储,利用ESP8266实现数据的传输。

2.2 软件部分设计

用C语言编程,主要实现模块对应的通讯协议,实现主控单元与各自模块的通信,同时可以进行数据处理,并在LED屏上来显示出来。用Java语言编程设计基于安卓平台的APP,能够在手机端实时查看。选择uni-app作为主要开发框架,与云服务端的数据库实时交互,将最新检测的温湿度参数在APP上显示。

2.2.1 语音控制的设计与实现

语音控制代码主要通过天问Block软件实现,天问Block开发软件主推图像化编程。图形化编程就是编写有界面的程序,使用图形化编程可以进行良好的页面布局。同时该软件也可以进行字符编程初始化过程。

2.2.1.1 语音识别的设计与实现

语音识别[2]是先将收到的声音进行处理,切除首尾端的静音,降低干扰然后使用移动窗函数实现将声音切开成一小段,这一小段也称为帧,接下来进行特征提取,主要算法有线性预测倒谱系数(LPCC)和Mel 倒谱系数(MFCC),目的是把每一帧波形变成一个包含声音信息的多维向量。通过对语音数据进行训练,和对大量文本信息进行训练,得到单个字或者词相互关联的概率。最后通过声学模型、字典、语言模型对提取特征后的音频数据进行文字输出。

本设计是通过ASR-ONE芯片内部集成的神经网络处理器BNPU对语音信号进行识别。语音识别模型主要分为声学模型和语言模型,

声学模型定义[3]可看成给定文字后发出该段语音的概率,就是找到一段发音序列与输入语音信号匹配度最高具体的操作是对用户输入的一段语音信号,先进行预处理操作,主要包括分帧、加窗操作,将语音信号分为多个一小段,便于后续特征提取处理及尽可能的降低语音信号失真概率。接着进行特征提取操作,主要是提取MFCC特征,具体操作是:首先对每一帧的信号进行傅里叶变换,进行时频转换得到其频谱信息,接着求频谱的平方得到能量谱,通过梅尔滤波器组,将每个滤波器的输出取对数,得到相应频带的对数功率谱,进行离散余弦变换,得到 MFCC 系数。将提取到的特征向量,通过隐马尔科夫模型,混合高斯模型等将声学特征先转换为发音的最小单元音素特征,便得到了声学模型的输入,然后再借助提前准备好的发音词典,将音素串映射到对应的单词。

语言模型是利用得到的各个单词去识别具体的文字,选取的方法是提前通过LSTM深度神经网络进行学习得到模型,根据输入的特征向量得到最终输出。据输入的判断出最终输出。长短期记忆网络(Long Short-Term Memory,LSTM)是循环神经网络(Recurrent Neural Network, RNN)的一种优化,在传统的RNN模型,由于网络层数较深,会出现梯度消失的问题,导致测试实际数据时模型表现结果不理想,LSTM通过引入存储神经元已确定部分的忘记一些信息弥补RNN的不足。LSTM网络结构同传统的RNN一样,主要包括输入层、隐藏层和输出层,关键是隐藏层中的存储单元。其中LSTM还包含三个特殊的门结构,分别是输入门、输出门和遗忘门,利用sigmod函数的特性进行相关信息的处理,当sigmod函数输出结果是0时,表明选择遗忘当前的值,无法传输到后续的计算过程中;当sigmod函数输出结果是1时,不进行任何处理,允许当前的信息通过。

2.2.1.2语音播放的设计与实现

语音播放在图形化编程中设计可以直接设置播报音、欢迎词、退出语音以及识别词也就是唤醒词和命令词。播放音可以设置不同的男声、女声,设置时,还可以听到声音,有点像手机换铃声,点击铃声就会播放铃声的声音。音量和语速根据自己的喜好选择即可。欢迎词是上电的时候播报的,退出语音是一段时间没有语音操作后模块播报退出的语言,使用唤醒词再次使模块运行。识别词是唤醒模块或者需要唤醒后工作的词。在得到模型判断出的最终文字信息,会依据图形化编程设置的识别词和回复语音id进行匹配,找出与回复语音id相匹配的线程,线程会进行相关操作。若听到温度语音,进行匹配后会对应到名为uart的线程,该线程负责接收单片机传输过来的串口数据,同时将数据存储到一个设置的变量中,接着将该消息发送到名为play的线程,线程会对传输过来的数据进行语音词与播放音进行匹配,通过喇叭播出最终语音。

2.2.2 WiFi传输的设计与实现

ESP8266的程序代码主要包括两个部分,分别为驱动程序与基于UDP的数据透传代码,驱动程序主要是基于ESP8266与STM32单片机的引脚配置完成启动及发送命令相关时序,同时提前配置好连接的wifi名和密码,数据透传部分主要是建立硬件系统与云平台的连接。ESP8266与主控单元的通信方 式是基于通用异步接收器和发送器(Universal Asynchronous Receiver and Transmitter,URT) ,首先将ESP8266的复位引脚 连接在主控单元的其中一个GPIO口上,刚开始通电主控单元可以设置复位引脚电平的高低进行复位操作,保证ESP8266正常运行。若ESP8266正常运行,则会在上位机软件上打印出一系列字符串,若成功的话字符串中会包含ready字符,若没有则需要重新进行复位操作。在复位工作成功后,接下来需要设置其工作模式。ESP8266的运行模式主要包括AP模式、STA 模式和AP+STA 模式。这里主要使用STA模式,通过AT指令与 ESP8266 进行数据传输。首先主控单元发送AT+CWMODE=1指令给ESP8266,等到主控单元接收到OK字符标识设置STA模式已经成功,否则需要重新进入到上述的复位操作。在STA模式设 置成功后,接下来需要对网络进行配置,一般配置方法包括两种,一种是将网络名与密码写死在程序代码中,缺点是更改操作需要重新烧写程序。本次采用手机配置的方法进行设置,最开始需要STM32单片发送内容为AT+CWAUTOCONN=1的指令,接着向ESP8266发送内容为 AT+CWSTARTSMART的指令,用于成功设置Smartconfig模式。在开启Smartconfig模式成功后,会通过UDP对外广播的方式将相应的数据传输出去,主要包括无线的主要网络信息。ESP8266在成功接收到相应的数据包后会自动关闭Smartconfig 模式并向路由器发送连接请求,若 Wifi模块输出内容为WIFI GOT IP字符串则表示连接路由器成功。

2.2.3 app显示的设计与实现

为方便可以远程实时监控温湿度的变化,基于uni-app实现手机客户端。APP可以接收实时的温湿度情况并显示出来。APP是通过socket建立与华为云的连接,监听端口收到数据更新信息触发事件获取到温湿度的数据。

在整个系统加载时会调用生命周期的第一个方法onLoad(),代码如下:

onLoad() {

  this.chart1_init();//加载温度图表

  this.chart2_init();//加载湿度度图表

}

温湿度更新核心代码如下:

var client = mqtt.connect(mqttOpt.url, mqttOpt.options);//完成连接

client.on('connect', () => {

this.$refs.uToast.show({

title: '连接成功';

type: 'success';

});

client.on('message', (topic, message) => {

this.$refs.uToast.show({

title: '收到消息';

type: 'success';

});

var str = message.toString();

var {t,h} = JSON.parse(str);

if (t != null && h != null) {

this.chart1_updata(t);//更新温度

this.chart2_updata(h);//更新湿度

}

});

this.chart3_init();

};

3结束语

基于IOT的智能语音控制系统,可以应用于很多场合,如LED灯的控制、温湿度的语音播报,当超过设定的阈值时可进行报警提醒。数据的存储主要通过WIFI模块ATK-ESP8266传输到华为云平台进行存储,并基于uni-app实现APP在手机端实时查看温湿度情况。

参考文献

[1]郝结来,王子权,林华.基于STM32的多通道温湿度测量仪设计[J].电子设计工程,2021,29(11):74-79.

[2]Lan Zhang,Bo Tang,Chenyi Li,Zhuqiuya Li,Zhengyin Du,Hong Bao,Qi Gong,Chengquan Sun,Chang Li,Meixuan Chen,Mingzhe Li,Xiangchi Chen. Intelligent Voice Control Lighting Device Based on Arduino UNO Microcontroller[J]. IOP Conference Series: Earth and Environmental Science, 2019, 252(3):32188-32192.

[3]苏珍,康学亮,马飞虎.基于STM32系统的智能语音控制的垃圾桶设计[J].机电信息,2019(18):142-143.

基金项目:江苏省大学生创新创业训练项目智能语音控制系统资助(202110324059Y