陈威冲 张家田 吴银川 严正国
摘 要:文中介绍了一种以STM32单片机为控制核心,集成语音识别模块和红外收发模块的一种语音控制电视系统。该系统可以使用语音指令实现对电视机的遥控,达到替代传统遥控器的效果,具有控制灵活、性能稳定、扩展性强等优点。随着智能家居的普及和发展,该设计具有广阔的市场应用空间。
关键词:智能控制;语音识别;无线通信;红外收发;STM32;物联网
中图分类号:TP274文献标识码:A文章编号:2095-1302(2019)04-0-04
0 引 言
随着物联网技术的发展,各种智能化家居产品顺应市场需求大量出现[1]。目前用户对于智能家居互动的灵活性要求也越来越高,例如在电视操作过程中由于遥控器按键繁多复杂,其设计的人机交互方式已经落伍。最近几年,通过“单片机”对红外线遥控信号进行存储、转发的技术已经取得长足发展,进而利用嵌入式系统不断增强的技术优势产生更为智能的应用也变得简单可行[2];另一方面,随着语音识别技术的普及,当前语音识别功能的实现也越来越廉价易行。本设计采用非特定语音识别技术,将其利用到电视机的遥控功能当中,当需要实现复杂且重复性功能时,可以利用当前设计的可编程性及语音识别的灵活性代替遥控器,让电视机的人机交互走向更高的台阶。
1 系统需求分析及总体设计
1.1 系统需求分析
参考现有的智能家居设计[3],本系统主要实现以下功能:
(1)语音控制电视机的开关;
(2)通过语音指令打开电视机某频道;
(3)通过语音指令调整频道和音量。
1.2 系统总体设计
语音控制电视系统主要由STM32F103C8T6主控制器、LD3320语音识别模块和红外信号发射接收模块组成[4]。系统框图如图1所示。
用麦克风采集声音信号,经过滤波、放大处理后送入LD3320非特定语音识别模块进行语音识别处理,将处理结果保存在寄存器中,通过SPI与主控芯片STM32F103C8T6通信。经主控芯片处理后控制红外模块发射对应的信号,电视机顶盒接收到信号后则能实现对应的功能,达到语音控制电视的效果。
2 硬件设计
硬件设计主要包括主控芯片STM32F103C8T6,语音识别模块LD3320和红外发射接收模块三部分。利用红外发射接收模块对电视机顶盒遥控器键值进行解码,将其记录、处理后保存在MCU中,输入特定的语音指令时,MCU通过红外模块发送相应的红外指令,代替遥控器。
2.1 STM32F103C8T6最小系统
将STM32F103C8T6微控制器作为核心的最小系统板,其内核为ARM的CortexTM-M3,它为实现MCU的需求提供了低成本的平台、缩减的引脚数目、较低的系统功耗,同时提供了卓越的计算性能和先进的中断系统响应[5],性价比高。
2.2 LD3320芯片
LD3320 芯片是一款“语音识别”专用芯片,由ICRoute公司设计生产。该芯片集成了语音识别处理器和一些外部电路,包括A/D,D/A转换器、麦克风接口、声音输出接口等。本芯片在设计上注重节能与高效,不需要外接任何辅助芯片如FLASH,RAM等,直接集成在现有产品中即可实现语音识别/声控/人机对话等功能。并且识别的关键词语列表可以被动态编辑。每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79 B的拼音串[6]。
另一方面,识别句内容可以动态编辑修改,因此可通过一个系统支持多种场景模块对外引出7个引脚,包括3个SPI引脚MISO,MOSI,SCK,复位引脚RST,片选引脚CS,中断产生引脚IRQ和设置引脚SPIS。其中,STM32最小系统板可通过SPI引脚、SPIS引脚和CS引脚对LD3320芯片进行设置,当模块接收到语音信号时会产生中断信号,将IRQ引脚置高电平,STM32微处理器在中断服务函数中执行语音识别程序,最终实现语音控制功能。LD3320语音识别模块电路如图2所示。
2.3 红外发射接收模块
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强、信息传输可靠性高、功耗低、成本低、易实现等优点[7]。
NEC红外编码解码模块由红外发射头、红外接收头和串口通信接口組成。红外发射头用于发射红外信号,其波长为940 nm 38K NEC;红外接收头用于接收 NEC红外信号,单片机进行分析解码操作;串口通信接口为单片机串口(TTL),作为与外界单片机通信的桥梁,其默认设置的波特率为9 600 bps。
编码信号的发射使用NEC红外编码解码模块可以通过串口与MCU通信对普通红外信号进行发送接收以及解码操作,在本设计中使用该模块对遥控器指令进行解码并按照程序发送,达到使用MCU进行红外遥控的目的。红外模块电路如图3所示。
3 STM32与电视机顶盒通信
电视机顶盒与遥控器通过红外信号通信,因此在本设计中只有STM32将红外信号通过红外模块发送,才能达到代替遥控器的目的。STM32主控模块通过全双工异步串行通信方式与红外模块通信,数据格式为1个起始位、8个数据位、1个奇偶校验位和1个停止位,波特率为9 600 bps。使用红外模块对遥控器按键键值进行解码后再使用STM32在程序内将其进行处理发送即可代替遥控器的功能。
3.1 红外信号协议
(1)发射指令说明
本设计中地址位默认地址A1。操作位表示当前工作状态,在此设计中只使用了红外模块发射状态,不改变其通信地址状态和波特率,因此操作位为F1。数据位1,2,3则为接收到的红外编码信息[8]。红外信号协议见表1所列。
3.2 红外信号解码内容
4 系统软件设计
本系统软件设计主要介绍语音识别程序设计及红外指令发送程序设计。语音识别程序主要参考LD3320芯片手册对其进行配置,红外指令发送程序则将加码后的红外信号进行处理,形成NEC制式的红外指令,并发送。
4.1 主程序设计
系统主程序上电后进行通用初始化,开启中断,使其能接收来自LD3320芯片的中斷信号,在其中进行语音识别操作。当按键按下时执行LD3320子程序。主程序流程如图4所示。
4.2 语音识别程序设计及语音指令
在进行LD3320子程序时,对LD3320芯片进行相关初始化,并初始化MCU的SPI通信,相关I/O口及开启中断。LD3320芯片启动一次ASR识别流程:ASR初始化,ASR添加关键词语,启动ASR运算,等待语音输入。当有语音输入时,芯片将IRQ引脚置高,微控制器进入中断服务函数,进行语音识别处理。识别成功后,串口发送相关指令;若未成功,则等待下一次语音输入。LD3320语音识别流程如图5所示。
在中断服务子程序中,程序首先通过读取LD3320寄存器2B,B2,BF值判断当前LD3320 ASR是否空闲,若空闲,则进行下一步,若忙,则本次语音识别失败,返回LD3320程序。此功能可防止当前语音识别被噪音或其他语音指令打断。当ASR空闲时,通过读取寄存器BA的值并判断其是否有效,即是否大于0且小于等于4,若是,则将此值返回主程序,进行相关操作;否则视为语音识别失败,等待下一次语音输入。图6所示为中断服务子程序流程图。
4.3 红外指令发送程序设计
利用红外发射接收模块将红外信号进行解码得到表2所列结果,若想让本设计实现与遥控器同样的功能,则需为解码后的值加上地址和操作码,构成5个16进制的一串一维数组,串口按照下面的程序输出,就可以使电视机顶盒接收到与遥控器相同的红外信号:
5 结 语
本文以STM32为控制核心,设计并制作出一套针对电视机遥控的智能语音控制系统,其具有控制灵活、性能稳定等优点,因为是基于微控制器的开发,其具有扩展性强的潜力。随着科技的发展,类似技术已经成熟,因此系统易于制造,造价低廉,满足智能家居和物联网的发展需求。随着智能家居系统的快速发展,语音控制电视系统的实现将越来越容易,推广前景广阔,应用价值良好。
参 考 文 献
[1]吴文忠, 李万磊.基于ARM和ZigBee的智能家居系统[J].计算机工程与设计,2011,32(6):1987-1990.
[2]于华利.机顶盒遥控电视机技术指引[J].电视技术,2010,34(3):111-112.
[3]申斌,张桂青,汪明,等. 基于物联网的智能家居设计与实现[J].自动化与仪表,2013,28(2):6-10.
[4]王俐伟,廉小亲,安飒,等.智能空调语音控制系统的设计与实现[J].家电科技,2018 (7):46-50.
[5] STM32F103x8/B增强型系列中容量产品数据手册[EB/OL]. [2012-04-07].http://www.stmicroeletronics.com.Cn/stonline/mcu/MCU-Pages.htm.
[6]洪家平.LD3320的嵌入式语音识别系统的应用[J].单片机与嵌入式系统应用,2012,12(2):47-49.
[7]李从宏.基于功能码的红外遥控软件解码技术[J].单片机与嵌入式系统应用,2010(9):72-73.
[8] 欧阳.基于Android平台的智能家居红外控制系统的研究[D].成都:电子科技大学,2012.
[9]许子明,李笑茹.电气自动化控制的人工智能技术[J].科技风,2018(7):6.
[10]陈洪峰.国内电气自动化发展状况与趋势[J].科技创新导报,2006(1):12.