王俐伟 廉小亲 安飒 付静
WANG Liwei LIAN Xiaoqin AN Sa FU Jing
北京工商大学计算机与信息工程学院 食品安全大数据技术北京市重点实验室 北京 100048
Beijing Key Laboratory of Big Data Technology for Food Safety, School of Computer and Information Engineering, Beijing Technology and Business University Beijing 100048
随着人工智能技术的迅速发展,语音识别技术已经相对成熟,相关的语音识别智能产品也因研发成本的不断降低而逐渐普及。传统的空调系统在控制过程中存在操作繁琐、需要用户借助遥控器等设备发出控制指令等问题,影响了用户的使用体验。本设计将非特定人语音识别技术应用到空调控制系统中,用户通过语音指令的方式就能调整空调系统的运行状态。现有的空调控制方式主要为遥控控制,少数空调支持手机APP控制。但这些控制方法都需要用户操作相关的设备才能实现对空调的控制。语音控制技术的出现改变了用户与智能家居之间的“交流”方式,解放了用户的双手,改善了用户在智能家居[1]系统中的使用体验。语音识别控制技术让用户与智能家居之间的信息交流更加智能化,用户只需通过讲话的方式就能控制智能家居系统实现相应的功能。
结合现有的空调控制技术和语音识别技术[2],本系统主要实现以下功能:
(1)通过语音指令实现空调开机、关机功能;
(2)通过语音指令调整空调工作模式;
(3)通过语音指令调整空调的风速;
(4)通过语音指令调整空调的设定温度。
智能空调语音控制系统主要由LD3320语音识别模块、STM32主控模块和空调控制器三部分组成。LD3320语音识别模块通过MIC采集来自用户的语音信号,该模块通过SPI通讯方式与STM32主控模块进行通信,STM32主控模块和空调控制器之间采用串行通信方式进行通讯,智能家居语音控制系统总体结构框图如图1所示。
LD3320语音识别芯片采用先进的非特定人语音识别技术并支持关键词列表动态编辑。语音识别模块通过麦克风采集到语音信号后开始识别并将识别结果写入相应的寄存器,同时产生中断到STM32主控模块,STM32主控模块通过读取语音识别模块相应寄存器的值来识别语音指令,并根据语音指令对空调进行控制。
空调控制器主要由空调主控模块和电源模块组成,空调主控模块通过UART方式接收到来自STM32主控模块的控制指令后执行相关的任务。
本系统的硬件设计主要分为语音控制器和空调控制器两部分,系统的硬件组成框图如图2所示。语音控制器硬件电路主要包括LD3320语音识别模块电路、STM32主控模块电路和电源电路三部分[3]。空调控制器硬件电路主要包括空调主控模块电路和电源电路两部分。本系统中空调控制器为空调厂家定制产品,软硬件部分均由空调厂家技术部门设计和制作,本文不作详细介绍,主要介绍LD3320语音识别模块和STM32主控模块的硬件电路设计。
本系统的语音识别模块采用的是ICRoute公司设计生产的LD3320型号离线语音识别模块,该模块内部固化了高效的非特定人语音识别[4]搜索引擎模块,不需事先录音和训练,同时内置了高精度的AD、DA电路,不需外接Flash、RAM。LD3320芯片最多支持50个关键词的识别,可动态更新关键词列表,语音识别准确率高达95%。通讯接口方面,LD3320支持并行和串行两种通讯方式,本设计采用SPI串行方式实现LD3320语音识别模块和STM32的通讯。LD3320芯片的语音识别模式分为单次模式和循环模式两种。为了保证本系统控制的实时性,本设计中语音识别模块采用循环语音识别的工作方式。
本设计中LD3320语音识别模块的电路图如图3所示,电路参照ICRoute公司发布的LD3320数据手册进行设计,LD3320的通讯方式由46引脚MD决定,当MD引脚为高电平时采用串行SPI通讯,反之则为并行通讯,本设计中将MD引脚电平置高,使得LD3320与STM32单片机采用SPI通讯。
本系统主控模块采用STM32F103C8T6芯片,该芯片基于Cortex-M3架构,最高支持72MHz时钟频率,内部集成了Flash存储、丰富的I/O口和先进的中断响应系统。具有功耗低,工作稳定等优点,满足了本系统的设计要求,电路图如图4所示。其中PB12 IO口与按键key相连,该按键按下时关闭语音识别模块。
本系统中的LD3320语音识别芯片采用SPI通讯方式与STM32主控模块进行通信,该芯片通过操作寄存器进行配置和使用,无需复杂的通讯协议。所以本文主要介绍STM32主控模块和空调控制器之间的通讯协议。
图1 系统总体结构框图
图2 系统硬件组成框图
表1 主从机通讯数据封装格式
表2 功能码具体内容
表3 主机数据域第四字节功能含义
图3 LD3320语音识别模块电路图
图4 STM32主控模块电路图
STM32主控模块与空调主控板之间采用全双工异步串行通信方式。协议规定STM32主控模块为主机,空调主控模块为从机,通讯数据封装格式如表1所示。数据帧头为0xBB,STM32主控模块地址为0x00,空调主控模块地址为0x01;功能码分为控制命令,查询命令和复位命令,具体内容见表2[5]。数据长度由每次发送的数据区实际长度所决定,该值不大于250。校验码采用CRC校验方式;数据格式采用1个起始位、8个数据位、1个奇偶校验位和1个停止位,波特率为9600bps。
主机每次发送数据完成后,从机会延时200ms后返回数据;当从机主动发送信号时,主机接收到后会在200ms后返回,主机两条指令发送数据应大于500ms。通讯过程如图5所示。协议规定每帧数据开始前必须至少有100ms的间隔时间,数据发送结束后,同样需要100ms的间隔时间,然后才能发送新的数据。
通信协议内容主要分为主机和从机数据区内容,这里主机是指STM32主控模块,从机为空调主控制板。通信协议涉及空调工作状态较多,这里以设置空调工作模式为例说明,后边也以此为主进行设计和测试。
STM32主控模块下发控制命令,此时通信数据格式中的功能码为0x03,通信数据格式中数据区的前三字节表示协议版本号和开关机,第四字节表示空调模式设置。数据区主机数据域第四字节功能含义如表3所示,第四位表示工作模式,一共五种工作模式表示空调运行时的常规功能设置。
本系统的软件设计主要分为语音控制器的软件设计和空调控制器的软件设计两大部分。其中空调控制器为空调厂家定制产品,本文不做过多介绍,主要介绍语音识别控制器的软件设计思路。本系统中语音控制器的软件设计参考LD3320开发手册,程序设计主要分为主程序设计和中断服务子程序设计两部分。
图5 主从机通讯过程
系统的主程序流程图如图6所示。通用初始化包括STM32芯片初始化和LD3320芯片的初始化。LD3320芯片的初始化主要包括对语音识别芯片进行软复位和基础化配置,例如设置模块的工作模式,通讯方式以及时钟频率等[6]。通过配置寄存器35的值来调整好MIC的音量,寄存器35控制的ADC增益通道为麦克风的输入通道,MIC的音量随着ADC增益值的增大而增大[7]。官方推荐该值为40H~6FH,增益值太小,远距离语音识别效果就会降低;反之,增益值太大,语音控制器又容易受到远处声音的干扰。
写入关键词主要为配置语音识别模块的关键词列表。LD3320语音识别芯片最多支持50个关键词,且每一个关键词对应一个特定的编号,编号可以相同,可以不连续,但不能大于256。每一个关键词是标准普通话的汉语拼音小写,每个关键词之间需要用一个空格隔开。空调语音控制的关键词较多,主要以空调模式设置的关键词为例进行说明,如表4所示。
打开外部中断后向语音识别模块发送开启识别命令,扫描按键key是否按下,如果按下则关闭语音识别模块。本设计中LD3320语音识别芯片采用循环语音识别和中断触发的工作方式,即芯片通过MIC采集到声音信号后开始进行语音识别并将识别结果与表4中的关键词进行比较。将识别结果的个数和最佳的识别结果分别存入BA和C5寄存器,并向STM32主控模块发出中断请求。完成这一系列的任务后LD3320语音识别芯片重新通过MIC采集声音信号。
中断服务子程序的主要功能为提取出LD3320语音识别芯片的识别结果,并根据结果对空调进行相应的控制。中断服务子程序流程图如图7所示。
图6 主程序流程图
STM32主控模块接收到外部中断信号后执行中断服务子程序。首先读取LD3320芯片BA寄存器的值,该值表示LD3320语音识别芯片识别到几种答案;如果该值为零,代表语音识别芯片未识别到有效的语音指令;如果BA寄存器的值不为零,则读取C5寄存器的值,该值为语音识别芯片识别出的最佳结果;然后STM32主控模块根据C5寄存器的值执行相应的空调控制子程序,按照制定好的协议将空调控制指令通过串口通讯方式发送到空调控制器,从而实现通过语音指令控制空调的目的。
图7 中断服务子程序流程图
本文所设计的系统主要用于空调等电器的语音控制,在实际的应用中主要关注系统语音识别的成功率和实时性。本设计中空调部分为厂家定制产品,高度集成并且运行稳定无需过多测试。所以本系统的测试主要以语音识别成功率为主。
为了测试本系统非特定人语音识别的成功率,本次测试选择多个不同音色的人在实验室环境下进行。由于本系统空调的控制指令较多,本次测试就主要以空调的模式设置功能进行测试并观察系统的实际响应。每位测试者对空调模式设置的五个关键词分别测试50遍并记录系统的识别结果。部分非特定人语音识别测试结果记录表见表5。
由表5可知,在实验室环境下,本系统对语音指令的识别率较高,并且系统的语音识别并没有受到测试者不同音色的影响,平均识别率可达90%。
表4 空调模式设置关键词列表
表5 部分非特定人语音识别测试记录表
语音的识别与处理是目前语音信号处理领域的重点与难点。本设计将STM32C8T6单片机与LD3320非特定人语音识别芯片相结合,实现了智能空调语音控制系统的总体设计。试验结果表明本系统对非特定人语音识别的成功率高达90%,实现了语音对空调的控制,达到了良好的实验效果。本系统通用性强,可移植性高,具有良好的发展前景。
基金项目:
北京工商大学研究生培养-研究生教育质量提升计划项目(19008001491)
北京高等学校教育教学改革项目(2015-ms146)
北京工商大学教务处教学研究与教改项目
(10800101009)