APP下载

基于语音识别的家居控制器的设计与实现

2015-04-12顾问陈布雨胡之惠胡继康史豪

科技创新导报 2015年32期
关键词:语音识别智能控制

顾问 陈布雨 胡之惠 胡继康 史豪

摘 要:介绍了一种基于Arduino的智能家居控制系统,利用Arduino作为主控系统,结合传感器技术、中文语音识别技术及语音控制技术等实现对家居环境中的温湿度、照明设备、家电设备等的智能控制。该系统具有无线控制的功能,操作方便,成本低,适合大量推广使用。

关键词:Arduino 智能控制 语音识别 音乐点播

中图分类号:TN247 文献标识码:A 文章编号:1674-098X(2015)11(b)-0139-04

1 设计背景与意义

随着世界经济的进一步发展和科技以人为本的信念深入人心,尤其是今后生活区与工作区界限日益模糊,使得小区智能化在技术与市场两方面都取得了长足进步,目前进入小区与家居智能化高速发展时期。智能建筑始建于20世纪80年代初的美国,我国智能建筑发展较晚,起步于20世纪90年代,1994年建设部下发了《全国住宅小区智能化系统示范工程工作大纲》和《全国住宅小区智能化系统示范工程建设要点技术导则》,使我国住宅从传统模式开始向智能化模式转型,从此拉开建设智能化小区的序幕。

自2003年以来,海信、清华同方等公司也相继加入到智能家居行列,但目前智能家居系统还缺乏统一明确的国际标准,许多公司开发出的产品都是基于自己组建的网络和信息交换协议,许多产品是针对特定组网环境开发的,部分核心技术没有对外公布,技术复杂,直接导致使用范围的局限性。由于缺乏对应的第三方产品,各个接入设备之间不能兼容,互操作性差,不利于产品的扩充。

“智能家居”中智能意义在于家居设施能像人一样的思考或能理解人的意图,改变传统的接触式操作方式,其目的在于为用户提供更加简捷舒适的家居控制体验。语言是人类最熟悉最方便的交流工具,通过语音操控各种家居设施是实现智能家居这一理想蓝图的重要一环。为实现所有家庭成员对家居设施的控制,模块采用非特定人语音识别系统。该系统通过语音识别模块LD3320及中文语音合成模块SYN6288构成人机对话:操作者自身发出语音指令,系统通过语音识别模块接收并将其转化为相应的指令同时对其进行处理,通过主控制器Arduino UNO进行相应的操作,同时语音合成模块通过相应的文本合成语音(TTS)进行反馈提示,继而实现人机对话功能。

2 设计方案的比较选择

Arduino是一款基于AVR单片机的硬件电路和软件开发环境共同开源的控制系统,是交互式编程学习的一种媒介、是为嵌入式开发的学习而研发的一种控制终端。Arduino和其他AVR系列的单片机开发板相比有以下几点独有的优势。

可交互性:Arduino设计之初就规定了统一的框架结构,电路底层的初始化采取了统一的方法,对于数字信号和模拟信号的I/O系统也进行了统一的规定。这些特性使得Arduino学习者和使用者在进行电路设计交流时保持了统一的物理底层特性,从而达到易于交流和学习的目标。

安全的易用性:Arduino和外部程序交互的接口是一个标准的USB接口。Arduino通讯接口的唯一性和开发环境的友好性使得该平台能够安全简单的实现不同的控制目的。

良好的可扩展性:Arduino本身标准的数字和模拟I/O口支持丰富的硬件扩展。Arduino通过连接线能和各种传感器模块、驱动模块和网络模块相连接,在上位机编写的程序控制下能够简单高效的实现各种环境数据的采集和侦测,并能驱动各种小功率声、光、电器件对采集和侦测到的数据进行显示。Arduino还能通过网络模块将采集到的数据通过网络接口上载到互联网平台供众多的学习者和开发者使用。

第三方资源丰富:Arduino无论硬件和软件都是开源的,这些特性使得开发者可以完全掌握其底层实现机制,在全球众多的Arduino开源社区中,开发者可以轻松的找到能供自己使用的软、硬件信息。

Arduino的这些特性使得在当今ARM平台大行其道的时候能够在嵌入式平台占有一席之地。并使得Arduino赢得了“电子的艺术”的美称。许多电子技术领域以外的爱好者凭借自身的想象力创造出了许多杰出的作品。

3 语音家居控制器的硬件组成

语音控制器的设计和实现中,硬件是关键和基础,它对整个系统的稳定性、控制和反馈的准确性、节能性都有直接影响。智能家居控制系统的硬件部分主要包括主控制器、传感系统、语音识别系统、语音合成及控制系统等。主要工作过程是通过麦克风接收人的语音指令,由语音识别模块LD3320进行识别,把识别的结果送入到主控制器当中再由主控制器向各个模块发出相应的动作指令,进行相应的动作。主控制器采用最新的Arduino UNO R3控制板,传感器部分则由温湿度传感器和光线传感器组成,用以检测室内实时的温湿度情况以便用户对室内情况得以及时的掌握为用户对家居进行必要的防潮防火措施都有一定的警示作用。系统结构如图1所示。

4 语音家居控制器的设计实现

4.1 语音家居控制器主控单元

语音家居控制系统的主控制单元采用Arduino UNO R3。Arduino UNO的处理器核心是ATmega328P单片机(一个8位微控制器带32K字节的系统可编程Flash)。

Arduino UNO具有高性能低功耗,先进的RISC结构,高耐久性非易失性内存段等特点,外设方面两个8-bit定时器/计数器、一个16位定时器/计数器、实时计数器使单片机具有独立的预分频器和比较模式以及捕捉功能模式和独立振荡器,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6个模拟输入,一个16 MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮,可编程串行USART、主/从SPI串行接口以及中断和引脚点评变化唤醒。该款单片机还具有上电复位和可编程的掉电检测、内部校准振荡器、外部和内部中断源、6种睡眠模式等特殊功能。控制板通过标准USB线缆与电脑连接,便于在线进行程序调试。UNO已经发布到第3版,与前2版相比有以下新的特点。

(1)在AREF处增加了2个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚。

(2)改进了复位电路设计。

(3)USB接口芯片由ATmega 16U2替代了ATmega8U2(见图2)。

4.2 语音识别模块

目前,语音识别技术的发展十分迅速,按照识别对象的类型可以分为特定人和非特定人语音识别。特定人是指识别对象为专门的人,非特定人是指识别对象是针对大多数用户,一般需要采集多个人的语音进行录音和训练,经过学习从而达到较高的识别率。

我们采用DFRobot的中文语音识别模块,它的核心则是我们大家都熟知的LD3320,LD3320语音识别芯片是一颗基于非特定人语音识别(SI ASR)技术的芯片。该芯片上集成了高精度的A/D和D/A接口,不再需要外接辅助的Flash和RAM,识别的关键词语列表是可以动态编辑的。它是一款只需要在主控MCU的程序中设定好要识别的关键词语列表并动态地把这些关键词语以字符的形式传送到芯片内部,就可以对用户说出的关键词语进行识别。该模块可以设置50项候选识别句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字母的拼音串,为了提高识别精准度,开发者还可以设置“垃圾关键字”,使得该模块遇到这些“垃圾关键字”则重新识别,可由一个系统支持多种场景。不过需要说明的是,使用环境的噪声会影响到Voice Recognition的语音识别效果。另外,如果使用者的声音过小的话,它无法精准判断哪里应该“断句”。

Voice Recognition语音识别模块采用叠层设计,可以直接插接到Arduino控制器上,用户使用Arduino便可以快速设计产品原型,例如:电磁炉、微波炉、洗衣机、智能家电操作,照明系统的声控等等(见图3)。

语音识别流程采用中断方式工作,其工作流程分为初始化、写入关键词、开始识别和响应中断等。用ARDUINO IDE编写。调试完成后通过串口进行烧录,控制LD3320完成语音识别,并将识别结果上传至Arduino mega168控制器。其软件流程如图4所示。

4.3 语音合成模块

TTS(Text To Speech)文本转语音技术是人机只能对话发展的趋势。基于TTS技术的语音系统无需事先录音就能够随时根据查询条件查出病合成语音进行播报,从而大大减少了系统维护的工作量。利用此技术,通过MCU或者PC机就能控制语音芯片发音。

我们采用SYN6288中文语音合成芯片进行语音合成。控制器和SYN6288之间通过UART接口连接或SPI接口通信方式,接收待合成的文本数据,实现文本到语音(TTS)的转换。该模块支持GB2312、GBK、BIG5和UNICODE内码格式的文本,清晰、自然、准确的中文语音合成效果;可合成任意的中文文本,同时支持英文字母的合成;另外它具有智能的文本分析处理算法,可正确识别数值、号码、时间日期及常用的度量衡符号;在其具有很强的多音字处理和中文姓氏处理能力的特点下,更具备支持多种文本控制标记的能力,提升了文本处理的正确率。控制器和SYN6288语音合成芯片之间通过UART接口连接,控制器通过串口通信向SYN6288语音合成芯片发送控制命令和文本,SYN6288语音合成芯片把接收到的文本合成语音信号输出,输出信号经功率放大器进行放大后连接到喇叭进行播放(见图5)。

上位机以命令帧的格式向SYN6288新芯片发送命令。SYN6288芯片根据命令帧进行相应操作,并向上位机返回命令操作结果。接收到控制命令帧后,芯片会向上位机发送一个字节的状态回传,上位机可根据这个回传来判断芯片当前的工作状态。SYN6288芯片在初始化成功后会发送一个字节的“初始化成功”回传。芯片在收到命令帧后会判断此命令帧是否正确,如果命令帧正确返回“接收成功”回传。

SYN6288芯片在收到状态查询命令时,如果芯片正处于播音工作状态则返回“正在播音”回传,如果芯片处于空闲状态则返回“芯片空闲”回传。在一帧数据合成完毕后,芯片会自动返回一次“芯片空闲”的回传。在达到相应的触发条件时芯片进行回传类型名称及数据。

4.4 语音播放模块

语音播放模块见图6。该模块具有9个触发端口,即A1-A9这9个端口同时对应9首MP3,分别是第一首到第九首,先放入TF卡的为第一首歌,我们可以通过给相应的触发端口以低电平触发相对应的歌曲,例如:A1口,只要像A1口提供一个低电平这样就可以马上进行播放第一首MP3。如果使用直接触发的方式播放歌曲可以将板子上的GND分别接触相对用的端口;在设计的系统中,我们需要利用Arduino UNO主控板对其就行控制,通过MCU的IO口来对各个端口进行触发即编码触发方式。在编码触发方式下,此模块最多可以具备31首歌曲的点播功能。在Arduino MCU的IO输出编码后,等待500 ms或以上便马上恢复默认值(高电平)后触发成功进行播放歌曲,歌曲的编码为二进制编码方式。

4.5 Arduino数字IO扩展模块

在整个系统设计过程中,由于Arduino UNO板只有14+6个数字输出,而语音识别模块,语音合成模块,继电器模块,传感器模块占用了较多的IO口导致Arduino UNO主控板的IO口匮乏,在此,我们采用74HC595芯片来对主控板的IO口进行扩增,从而实现更多模块的控制(如M3音乐点播模块)。

74HC595芯片是一个价格低廉的8位串行输入变串行输出或并行输出的移位寄存器,具有高阻关断,高电平和低电平3台输出。在IO扩充上,最多可以串联15片,也就是高达120个IO口的扩充,通过3个数据引脚(STCP、SHCP、DS),可以控制几乎无限量的输出。该DS是一个串行数据输入端,每当时钟输入每当时钟输入(SHCP)上升沿到来时,DS引脚当前电平值在移位寄存器中会移一位,连续进行8次同样的动作,就可以完成全部(Q0至Q7)移位。最后当STCP(Latch)上升沿到来时,移位寄存器的值将会被锁定在存储器里,并从Q0至Q7引脚输出。

5 结语

语音家具控制器采用Arduino UNO R3控制板实现。Arduino UNO的处理器核心是ATmega328P单片机(一个8位微控制器带32K字节的系统可编程Flash)。设计主要分为硬件和软件两个部分。笔者尽可能进行了电路的优化设计,电路功耗低,体积小,软件部分包括标准的程序编译器和程序下载器,可以依需求自己修改,输出可扩展,能方便地与传感器及各式各样的电子组件连接。通过实际功能验证,该控制器实现了通过语音控制家电的目的,为家电的跨空间控制和安全控制提供了新的解决方案。基于非特定人语音识别,不再需要外接辅助的Flash和RAM,即可以实现语音识别、声控、人机对话功能,且关键词语列表是可以动态编辑的,从而使我们能够更加容易的改变各项触发命令。该设计具有很强实用性及较可靠的性能,响应速度快,使用方便,但系统在运行时易受到外界环境的影响,这些都需要我们进一步的改进,我们也正继续努力优化设计方案来解决这些问题。

参考文献

[1] 张培仁.传感器原理检测及应用[M].北京:清华大学出版社,2012.

[2] 成谢锋,周井泉.电路与模拟电子技术基础[M].北京:科学出版社,2012.

[3] 李全利.单片机原理及应用[M].北京:高等教育出版社,2012.

[4] 吴黎明.语音信号及单片机处理[M].北京:科学出版社,2007.

[5] 马忠梅.单片机的C语言应用程序设计[M].北京:科学出版社,2007.

[6] BANZI M. Getting started with Arduino[M]. California:OREILLY,2009.

[7] 纪欣然.基于Arduino开发环境的智能寻光小车设计[J].现代电子技术,2012,35(15):161-163.

猜你喜欢

语音识别智能控制
通话中的语音识别技术
智能控制在机器人领域中的应用
应用型人才培养导向下智能控制教学改革探讨
舞台演出智能多媒体多网合一系统的研发与应用
浅谈开关式电梯IC卡系统及展望
面向移动终端的语音签到系统
农业物联网平台手机秘书功能分析与实现
基于Android手机语音和Arduino控制板的机器人控制系统