基于语音识别与单片机控制的智能玩具设计与实现 下载本文

内容发布更新时间 : 2024/5/20 14:41:11星期一 下面是文章的全部内容请认真阅读。

龙源期刊网 http://www.qikan.com.cn

基于语音识别与单片机控制的智能玩具设计与实现

作者:唐米杰 李新国

来源:《计算技术与自动化》2013年第04期

摘 要:设计一款能够识别语音命令并进行简单语音对话的儿童交互式智能小车,可提高儿童智能玩具的乐趣,培养儿童的创造思维。本文从软、硬件设计方面具体阐述了特定人语音识别在智能小车上的实现过程,并说明了实验测试方法。实验表明:该系统对于小词汇量、特定人识别系统,具有很好的识别效果。

关键词:语音识别;SPCE061A单片机;语音控制;智能玩具 中图分类号:TP391 文献标识码:A 文章编号: 1 引 言

玩具产业正在经历着一场科技革命,未来玩具产业将朝着互动性、智能化、教育性、高科技含量的方向发展。传统玩具功能单一,一般只满足娱乐的要求。要开发有创意有卖点的玩具,则要强调玩具的多功能性,使它能满足娱乐、科学、智力和思想教育等多种功能的需要。计算机技术、微电子技术、微传感技术与机械技术相结合,使得玩具更富有生机和变幻神奇[1]。本系统利用凌阳SPCE061A单片机作为控制核心,使电动小车能够识别特定人的语音命令,小车接收语音命令后,就能进行识别并产生相应的动作,从而使小车具备了智能性和可娱乐性。这种语音控制的智能小车不仅可以成为儿童的智能玩具,稍加扩展,就可以在多种不适合人作业的场合替代人执行任务,这种语音控制小车具有重要的学术研究价值。 2 系统设计

2.1 系统总体方案设计

本系统采用 SPCE061A单片机实现语音控制小车方案。于SPCE061A 内部具有语音识别和语音播放功能,所以只需要扩展基本的MIC和语音功放即可,该方案结构如图 2 所示。 2.2 系统硬件设计

凌阳SPCE061A是一款凌阳科技公司研发生产的一款16位单片机。SPCE061A主要包括u`nSP处理器、32K FLASH、定时器与计数器、A/D转换与D/A转换器、串行设备I/O、ICE接口、通用异步串行接口等。SPCE061A内的u`nSP处理器的运行速度快,能够快速地处理复杂的语音信号。因此,SPCE061A单片机非常适用应用于语音识别系统。本系统硬件组成主要包括以下三个部分:SPCE061A 精简开发板、超声波模块、电机驱动电路。硬件系统结构如图

龙源期刊网 http://www.qikan.com.cn

3所示。图中的语音输入部分 MIC_IN、按键输入 KEY、声音输出部分的功率放大环节等已经做到了精简开发板——61板上,为用户使用提供了很大的方便。在电机的驱动方面,采用全桥驱动技术,利用四个 I/O 端口分为两组分别实现两个电机的正传、反转和停止三态运行[2]。 2.2.1 超声波模块设计

超声波是频率高于20KHz的机械波,超声波传感器由发送器和接收器组成。超声波测距原理框图如图4所示。超声波发送器向向某一方向发射超声波,在发射超声波的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,在超声波接收器收到反射波就停止计时,超声波传感器测出超声波从发射到遇到障碍物返回所经历的时间,将时间乘以超声波的速度再除以2就得到了声源到障碍物之间的距离[3]。 2.2.2 小车驱动电路设计

小车驱动电路如图5所示。IOB8---IOBll主要是控制小车“前进”、“后退”、“左转”和“右转”需要的信号,IOB14和IOB15为控制输出使能。 O_1、O_2、O_3、O_4为输出接电机的两个电机。通过输出口的电平控制电机的转向。 2.3 语音处理过程及其软件设计

语音处理过程包括语音识别与语音提示过程和语音命令模型库训练。其中,语音识别与提示的主程序复杂,限于篇幅,我们只对其主程序框图进行设计。在语音命令模型库训练方面,由于SPCE061A配有专用的麦克接口用于语音训练和辨识阶段的语音输入,16位的定时/计数器用于语音信号的控制采样,内置的硬件乘法器和内积运算保证了辨识算法的运行。在软件方面,凌阳科技提供一个语音辨识函数库bsrv222SDL.lib,它能够完成特定人语音的连续辨识,包括训练函数和辨识函数,还可以将训练好的特征模型导入和导出等[4]。 2.3.1 语音命令模型库训练过程

本系统的语音命令模型库训练过程框图如图6所示。具体过程说明如下:语音输入是采用SPCE061A系统采集语音信号,当对着传声器讲话时,随着传声器输入的声音产生变化的波形,并在SPCE061A的两个端口处形成两路反相的波形,再送到SPCE061A控制器内部的运算放大器进行音频放大。预处理包括模数转换、自动增益控制、预加重等处理过程。特征提取就是从原始的语音信号中抽取能够反映语音本质的特征参数,形成特征矢量序列。语音信号是由很多帧组成,语音信号的一个帧就类拟一个矢量,矢量量化就是将这一个一个帧映射为量化矢量(数码)。矢量量化以后语音信号经过模板训练电路进入语音命令模板库,最后完成整个训练过程。

2.3.2 语音识别和语音提示

本系统中的语音识别与语音提示过程由预处理、特征提取、矢量量化、模板匹配和语音

龙源期刊网 http://www.qikan.com.cn

提示输出等部分组成,具体实现的原理框图如图7所示。其中预处理、特征提取、矢量量化三个模块的算法和模型库训练时的算法一样。在本系统中,控制程序和语音命令模板库保存在SPCE061A的Flash存储器内中。由于单片机内的Flash存储器的容量是有限的,如果用户要使小车的运行过程较多,即控制小车运行有很多的的语音命令,那么,我们要对Flash存储器容量进行扩充。扩充的方法是将控制小车运行的语音命令模板库或码字保存在外部存储器内,需要的时候再将语音信息调入单片机的Flash存储器。模板匹配采用隐马尔科夫模型的识别算法(Viterbi算法),这是一种概率论模型,它已成功地使用在语音识别系统中。语音提示输出可以使用凌阳公司为用户编制的API函数[5]。 2.3.3语音识别主程序设计

本系统的主程序流程图由I/O端口设置、语音训练、语音识别、语音再训练四个部分组成。各部分的工作情况如下:

(1)I/O端口设置:由于本系统有16个I/O端口,有些端口用于输入,有些端口用于输出,有些端口闲置不用,所以,我们必须对输入输出端口进行设置。为了控制小车电机的“前进”、“后退”、“左转”和“右转”运行,在本系统的主程序中将IOB8~IOBll设置为输出端口。将其它端口设置为输入端口或PWM端口,保证语音信号和控制信号的输入与输出。

(2)语音训练:语音训练过程就是建立语音模板库的过程。先判断小车是不是以前被用户训练,如果被用户训练过,则不必训练,并将训练过的命令加载到SPCE061A的辨识器内,再用相应的语音命令控制小车的运行,使小车处于智能控制状态;如果小车没有被用户训练过,则系统提示对小车进行语音训练,根据提示情况将小车训练成功,最后把训练好的语音命令存储到SPCE061A的辨识器内,以便对小车进行语音控制。

(3)语音识别:在语音识别的过程中,如果辨识错误,小车会停止运行而处于等待状态,等待用户发出进一步的语音控制命令。如果辨识结果正确,小车会语音会发出提示音,告知所进行的动作并执行该动作。保证了小车按用户预先训练的语音控制命令正常工作。 (4)语音再训练:考虑到用户有再训练的要求,系统设置了“再训练”的按钮。系统不断地扫描“再训练”的按钮,如果用户按下了该按钮而被系统检测到,那么系统清除训练标志位,等待用户按“复位键”。用户进行复位后,再重新进行语音训练与识别。 3 系统调试 3.1 模块调试

(1)用PROBE下载61单片机的自检程序,检测IO、ADC及MIC口是否自检成功。因为自检不成功,后面烧写的程序将无法正常工作。