基于语音控制的穿戴式家电遥控器
2016-10-28施众,刘毅
施 众,刘 毅
基于语音控制的穿戴式家电遥控器
施 众,刘 毅
(漳州职业技术学院电子工程系,福建漳州363000)
利用STM32芯片设计了一款基于语音控制的穿戴式家电遥控器。设计采用了LD3320芯片完成语音识别功能,能够对非特定人声进行识别和处理,能够学习并保存红外遥控指令,从而实现用自然语言来开启、关闭或调节电器设备。此外,设计中对元件尺寸进行了控制,能够作为耳戴式或者夹领式可穿戴装备,便于使用。
STM32;LD3320;语音识别;红外遥控;可穿戴设备
穿戴式装备是可以穿着或者佩戴在身上的一系列智能产品的总称,与传统技术设备相比,它最大的优势在于便携性,依附于人身,以“润物细无声”的形式为日常生活提供更多的便利。
语音控制是指可以实现用自然语言来开启、关闭或调节电器设备,特别对家用电器的控制有重大实用意义和市场前景。当前阻碍语音控制发展的难点在识别率和抗干扰上[1],而穿戴式设计及特定的算法就能有效解决这些问题。利用制成耳机、眼镜、挂坠或手表的穿戴式遥控器,通过语音识别技术及内置通信编码库,配合红外单元就可对所有家电实现语音控制。
本设计是一种利用MCU驱动语音识别芯片和红外收发模块实现的穿戴式语音通用家电控制器。
1 技术基础
1.1 STM32F103系列微控制器
STM32F103系列芯片是意法半导体公司(STMicroelectronics)出品的基于Cortex-M3内核的32位ARM微控制器,是STM32F1系列中的“增强型”产品。该系列芯片时钟频率最高可到72MHz,内置闪存最大可到512K字节,集成度高,具有数量众多的外设及功能,如FSMC、SPI、IIC、RTC、DMA等等。此外,stm32还具有优秀的实时性能,68+16个中断,16个可编程优先等级,且所有引脚都可以作为中断输入。
意法半导体在推出STM32微控制器时,也同时提供了一套完整的固件开发包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,可以使用户从复杂冗余的底层寄存器操作中解放出来,无需深入掌握细节,也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
1.2 语音识别芯片LD3320
语音识别的核心技术就是语音特征的提取,首先通过训练从足够多的输入样本中提取特征,通过特征建立识别数据库,在进行识别时,将输入语音的特征与数据库中的参考模型进行相似度比较,从而找出最接近的一项。语音识别技术按识别对象可分为特定人语音识别和非特定人语音识别两大类。前者简单来说就是仅能识别一个人的声音,后者则是适用于广泛人群,具有较大的应用价值,但相应的训练任务繁重,相似匹配算法也较为复杂。
LD3320芯片是一款语音识别专用芯片,由ICRoute公司设计生产。该芯片集成了语音识别处理器和一些外部电路,包括AD、DA 转换器、麦克风接口、声音输出接口等。该芯片内置非特定人语音识别算法,无须用户录音训练就可以完成识别,准确率达95%。
1.3 家电红外编码
如图1所示,红外遥控一般采用2种调制方式,以RC5协议为代表的PPM(脉冲位置调制)方式和以NEC协议为代表的PWM(脉冲宽度调制)方式。
图1 红外调制方式
PPM方式,即以发射载波信号的位置不同来表示“1”和“0”。如RC5协议中,每个信号位周期为1.778毫秒,如果先发射889微秒载波,再停止发射889微秒,表示逻辑“0”,反之,则表示逻辑“1”。
PWM方式,即以发射红外载波的占空比代表“0”和“1”,发射载波的时间是固定的,空闲时间的长度代表不同的逻辑。如NEC协议中,用 0.56ms的载波+0.565ms的空闲时间代表数据中的0,用0.565ms载波+1.685ms的空闲时间代表数据中的1。
除了调制方式不同外,不同类型、不同品牌、不同型号的家电遥控器往往采用了不同的传输协议,常用的红外线传输协议有ITT协议、NEC协议、Sharp协议、RC5协议、RC6协议等等。协议一般由引导码、用户码、数据码、重复码、反码、结束码等部分构成。此外,在同一个遥控器中具有多个按键,不同按键采用不同的编码加以区分。功能复杂的电器如空调,甚至可能同一个按键,在不同状态下发送的编码不一样。
由此可见,一个真正意义上的“万能遥控器”需要庞大的数据库作为支撑。市面上的电视万能遥控器、空调万能遥控器等,针对性地存储了部分大品牌制造商的常用编码库,只适用于其内部所保存的品牌、型号的电器,如果制造商发布了新的家电,一般也无法完美兼容;另一方面,以手机app为载体的万能遥控软件,则是将数据库保存在云端,手机通过网络下载编码并对用户电器进行匹配尝试,优点在于数据库可以不断更新,具有较长生命力。
穿戴式装备受到尺寸、功能和场合等限制,存储容量较少,在操作也必须简洁易用,故上述两种方案都受到限制。本设计采用学习型遥控方案,用户可以方便地训练产品学习家中所有遥控器的红外编码,从而有的放矢地起到替代作用。
2 硬件电路设计
2.1系统结构设计
如图2所示,本设计由语音识别、红外接受部分、红外发射部分和外部存储器组成。用户发出的语音指令通过麦克风送到语音识别模块,再将辨识结果送至MCU,控制红外发射模块发出红外遥控指令;红外接收模块可以用来接收家电遥控信号,由MCU进行识别和学习,并保存在外部EEPROM中。
图2 系统结构图
此外,硬件上还设有3个物理按键,分别是电源键、语音识别启动键和学习启动键。
2.2 系统电路图
本设计中,红外接收电路采用一体化接收头、红外发射电路采用普通的红外二极管,外部EEPROM采用24c16芯片,以上器件与MCU的连接均为常用电路,在此不再复述。
语音识别芯片LD3320采用串行方式,连接到STM32的SPI1(串行外设接口),其外围电路如图3所示,其中MICN和MICP连接麦克风采音,SDI、SDO和SDCK引脚分别连接到STM32芯片的PA7、PA6、PA5引脚(SPI1),INTB连接到STM32的任一IO口并配置成外部中断。
图3 LD3320外围电路
3 系统软件设计
3.1语音识别程序设计
3.1.1 SPI配置
STM32F103内置两路SPI接口,能够直接与LD3320芯片的串行接口通信。在使用前,必须对SPI接口进行初始化操作,令其工作在2线全双工通信的主模式下,帧格式配置为8位数据位,时钟空闲时为“1”,从高位开始传输数据,配置函数如下:
void SPI_Config(void)
{
SPI_InitTypeDef SPI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_64;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial=7;
SPI_Init(SPI2,&SPI_InitStructure);
SPI_Cmd(SPI2,ENABLE);
}
3.2 语音识别环节设计
如图4,根据LD3320开发手册,一次完整的语音识别流程包含如下步骤:LD3320芯片初始化、添加关键字(词),启动识别,响应中断四个环节。初始化环节负责配置芯片的工作模式、时钟频率、FIFO等相关内容[3]。随后可以向芯片添加候选关键字,每次识别最多可以设置 50项候选关键字,可以是单字,词组或短句,长度为不超过 10个汉字或者79个字节的拼音串。启动识别之前还可以设置ADC增益等参数,一旦启动,只要麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号,用户可在中断中获取当前的识别状态。
图4 语音识别流程图
LD3320内部寄存器C5、C7、C9、CB用以保存识别结果,其中C5用以保存最佳结果。当芯片识别出语音内容时,会将对应的关键字ID保存到寄存器C5中,若识别出多个候选关键字,将根据各关键字的匹配程度保存到不同寄存器中。实际使用中,可以忽略其他三个寄存器的值,只采用寄存器C5中保存的关键字。
为了提高语音识别正确率,程序上采用了如下几种方法加以辅助:
①如果某次识别的候选关键字不足50个,就添加“垃圾关键词”,用以吸收错误识别。
②关键字数量不超过50个的前提下,为同一条指令设置具有类似发音的多个拼音,提高容错率。
③语音命令增加“多级菜单模式”,详见下文。
3.3 红外信号编解码设计
编码方面,红外遥控通常采用38.5KHz信号作为载波信号,其周期约为26微秒,可直接使用13微秒定时中断控制生成,用另一个定时器控制信号持续时间。
STM32F103系列MCU内部具有6~8个定时器,其中TIM1和TIM8是高级控制定时器,T2~T5为通用定时器,T6、T7为基本定时器。定时器时钟频率最高可达72MHz,任意定时器的性能均可以轻松达到红外遥控的要求,考虑到后续系统功能的扩展,采用通用定时器T2和T3进行该项任务。
解码方面,硬件上通常采用一体化红外接收头实现,其内部包括红外接收管、放大器、限幅器、带通滤波器、积分电路、比较器等。红外信号进入接收头后,其输出端还原出信号波形,传输到MCU进行处理。
根据这一特点,本设计将接收头信号输出引脚作为外部中断信号,并将对应的中断配置为EXTI_Trigger_Rising_Falling,信号的上升沿与下降沿均可触发中断,在中断中启动定时器计数,以测量每一次信号的宽度。对应的中断配置程序如下:
EXTI_InitStructure.EXTI_Line = EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
3.4 红外学习方法设计
学习型红外遥控器从信号保存方法上分为固定编码型和波形拷贝型两种,前者需要分析所学习的是何种协议的红外信号,分析并保存编码信息,易于保存,其缺点是只能针对特定的红外编码协议进行学习;后者则是对任意协议通用,把所有红外信号都看成不同周期、不同占空比的的0 和1组合进行保存[4],通用性极强,但是存储容量要求较高。
以NEC协议为例,首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8位地址码、8位地址码反码、8位命令码、8位命令码反码(若持续按住按键时,发完一组编码后每隔约110毫秒发送1次重复码)。
如果采用波形拷贝法,由于每个位都包含1个高电平和1个低电平,总共需要保存66个脉宽,单个脉宽需要用int型变量即2个字节才能保存,合计132字节,经过一定的压缩算法[4]之后,仍需15字节左右的空间。反之,如果采用固定编码法,只要判断出红外信号属于NEC协议,仅仅需要保存8位地址码和8位命令码,合计2个字节空间就足够了。
本设计作为穿戴式设备,对产品尺寸有较高要求,无法添加大容量存储芯片。但是另一方面,又希望增强设备适应能力,因此采用二者结合的方法。首先在程序中编写了属于ITT、NEC、Sharp、RC5、RC6等多种常见红外协议的判别函数,学习红外信号时,首先判断其是否属于已知的协议。如果是,就采用固定编码法,用1个字节保存协议类型,用2~4字节保存编码信息;如果是未知协议,压缩计算后完整保存全部波形。
3.5 用户体验设计
语音遥控器在使用中最容易出现的问题,就是操作混乱:用户家庭中可能有多台电视、空调、风扇、投影仪等诸多设备需要遥控,很多操作指令可能是雷同的,比如“关机”命令,所有设备都有,必须设计一套条理清晰且易于理解的语音方案。
前面提到,语音芯片LD3320每次识别都允许配置50个候选关键字,借助着一点,本设计以“多级菜单切换”来实现用户对设备的选择。如图5所示,用户首先选择当前“场景”,然后选择“设备”,最后选择“功能”。“功能”部分的内容是根据“设备”而改变的。每一级菜单最多可以有50种选择,能够满足大部分家电的需要。
图5 语音菜单示意图
4 系统外形设计
穿戴式装备的佩戴方式是多种多样的,有手环、手表、项链、衣服、衣服配件、耳戴型等等。本设计的语音功能意味着设备佩戴后必须能贴近头部,才能保证采音的质量,增强识别率。
为了实现可穿戴,应该尽量缩小产品尺寸。在电路上,大多数元件都可以购买或定制专门的小尺寸贴片元件,主要的体积受限于内部芯片的大小:系统MCU、语音识别芯片LD3320和EEPROM芯片。其中,为了减小体积,MCU可以选择STM32F103的小容量产品,尺寸约为7mm×7mm ,LD3320大小约为7mm×7mm,24C16芯片大小约为6mm×5mm,三块芯片加上外围电路,采用双面PCB板,尺寸大约为3.5CM×1.5CM。
在能量供给上,MCU在空闲时可进入休眠模式,并关闭语音芯片电源,静耗可控制在40μA左右,采用100MAH左右小型聚合锂电池供电即可实现长时续航,锂电池的尺寸约为3CM×1CM,充电电路尺寸约2.5cm×2cm.
综上,本系统外观设计成类似耳戴式或夹领式蓝牙耳机的样子在尺寸上是可行的,总体尺寸约5CM×2.5CM。
5 结束语
本文设计了一种可穿戴式的通用家电语音遥控器,利用语音识别芯片LD3320实现非特定语音的识别,并采用红外学习技术,可以对常用的红外遥控编码进行识别、分析和保存。下一步的研究方向是增加wifi通信功能,可以根据家电型号到服务器获取对应的编码信息。
参考文献:
[1] 刘幺和, 宋庭新. 语音识别与控制应用技术[M]. 北京: 科学出版社, 2008.
[2] 赵力. 语音信号处理(第2版)[M].北京: 机械工业出版社, 2009.
[3] 金鑫, 田犇, 阙大顺. 基于LD3320的语音控制系统设计实现[J]. 电脑与信息技术, 2011(12): 22-25.
[4] 芦健, 彭军, 颜自勇, 陈文芗. 自学习型智能红外遥控器设计[J]. 国外电子测量技术, 2006(8): 63-66.
[5] 李迟生. 智能遥控器的设计[J]. 电子技术应用, 1997(3): 38-40.
[6] 郝建国. 家用电器遥控系统集成电路大全[M]. 北京: 人民邮电出版社, 1996.
(责任编辑:季平)
Wearable home appliance remote controller based on voice control
SHI Zhong, LIU Yi
(Electronic Engineering Department, Zhangzhou Institute of Technology, Zhangzhou 363000, China)
In this paper, the STM32 chip is used to design a wearable home appliance remote controller based on voice control. Design of the chip ld3320 complete voice recognition function, to the speaker independent voice for recognition and processing, to learn and to save the infrared remote control commands, in order to achieve in natural language to open, closed or adjust the electrical equipment. In addition, the design of the component size control, can be used as ear or clip collar type wearable equipment, easy to use.
STM32;LD3320;ASR;infrared remote control;wearable devices
TN912.34
A
1673-1417(2016)03-0011-06 doi:10.13908/j.cnki.issn1673-1417.2016.03.0003
2016-03-10
福建省教育厅科技项目(JB14184)。
施众(1982—), 男,福建漳州人,讲师,硕士,研究方向:电子与通信。