当前位置:首页 > 作文大全 >

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

发布时间: 2022-06-12 17:15:02 浏览:

zoޛ)j馐+v觠
ݺ)@ۢ3v54^uս58uv65?餰m`޶+v觡CNM4方案的比较选择

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:O’REILLY,2009.

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

相关热词搜索: 家居 控制器 语音识别 设计

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号