语音识别机器人制作编辑:robotain 来源:网络2009-12-06 发表评论方案简介说明书1 方案概述语音识别机器人可以充分发挥学生的创新能力,增加学生的动手实践能力,增加学生学习单片机的兴趣爱好。
本方案以SPCE061A 单片机为核心,改装市场上的玩具机器人,使改装后的机器人具有语音识别能力,根据识别的语音完成跳舞等动作,这也是智能机器人的一个方面。
1.1 设计要求利用SPCE061A 单片机、机器人机体(包括2 个用于走路的电机、1 个用于头部旋转的电机、1 个用于加速1 个用于弹射的电机等),要求语音识别机器人具有下述功能:1. 通过语音命令对其进行控制。
2. 两种跳舞模式。
3. 走步功能、转向功能、转头功能。
4. 发射飞盘功能。
1.2 技术要求1. 要求语音识别机器人可以识别15 条命令。
2. 要求语音识别机器人具有2 种跳舞模式。
2 方案设计简介2.1 硬件框图系统以SPCE061A 为核心,结合机器人机体,如下图所示。
2.2 功能框图SPCE061A 应用方案SPCE061A 在语音识别机器人中的应用在现代社会机器人这个词语已经不再新鲜,而且形形色色的机器人出现在我们的日常生活中。
为了提高广大单片机爱好者学习单片机的兴趣与爱好,凌阳科技大学计划教育推广中心推出了应用SPCE061A 控制的兴趣产品语音识别机器人,本文对语音识别机器人的软硬件制作进行介绍。
1 引言为了提高广大单片机爱好者学习单片机的兴趣,凌阳科技大学计划教育推广中心推出了应用SPCE061A 作为主控制器,外加电机驱动电路制作的语音识别机器人。
该机器人采用特定人语音识别对机器人进行控制,可以完成向前走、倒退、左转、右转、跳两首舞曲、向左瞄准、向右瞄准、发射、连续发射等功能。
该语音识别机器人可以大大提高在校学生学习单片机的兴趣。
2 设计要求2.1 设计要求利用SPCE061A 单片机、机器人机体(包括2 个用于走路的电机、1 个用于头部旋转的电机、1个用于加速1 个用于弹射的电机等),要求语音识别机器人具有下述功能:通过语音命令对其进行控制。
两种跳舞模式。
走步功能、转向功能、转头功能。
发射飞盘功能。
2.2 技术要求要求智能机器人可以识别15 条命令。
要求智能机器人具有2 种跳舞模式。
模组特性简介3.1 SPCE061A 特性简介SPCE061A 是凌阳科技研发生产的性价比很高的一款十六位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有8 路10 位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。
这为实现语音录入提供了方便的硬件条件。
两路10 精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。
另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。
在此环境中,支持标准C 语言,可以实现C 语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件:SPCE061A 片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE 接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE)用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口进行下载。
下图为SPCE061A 单片机的内部结构框图:3.2 芯片特性简介SPCE061A 性能简介:z 16 位u’nSP 微处理器z 工作电压(CPU)VDD 为3.0~3.6V,(I/O)VDDH 为3.0~5.5Vz CPU 时钟:0.32~49.152MHzz 内置2K 字SRAMz 内置32K 字FLASHz 可编程音频处理z 晶体振荡器z 系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6Vz 2 个16 位可编程定时器/计数器(可自动预置初始计数值)z 2 个10 位DAC(数/模转换)输出通道z 32 位通用可编程输入/输出通道z 14 个中断源可来自定时器A/B、时基、2 个外部时钟源输入和键唤醒z 具备触键唤醒的功能z 使用凌阳音频编码SACM_S480 可以播放压缩的语音资源z 锁相环PLL 振荡器提供系统时钟信号z 32768Hz 实时时钟z 7 通道10 位电压模/数转换器(ADC)和单通道声音模/数转换器z 声音模/数转换器输入通道内置麦克风放大器,并具有自动增益控制(AGC)功能z 具备串行设备接口z 具备低电压复位功能和低电压检测功能z 内置在线仿真电路接口z 具有WatchDog 功能3.3 SPCE061A 精简开发板SPCE061A 精简开发板(简称61 板),是以凌阳16 位单片机SPCE061A 为核心的精简开发-仿真-实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。
61 板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC 输入部分和DAC 音频输出部分)、复位电路等,采用电池供电,方便学生随身携带!!!使学生在掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学习者和开发者创造了一个良好的学习条件和开发新产品的机会!61 板上有调试器接口(Probe 接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。
61 板上的主要功能模块如下:SPCE061A 单片机最小系统外围电路模块;电源输入模块;音频电路(包含MIC 输入、DAC 音频功放输出)模块;按键模块;I/O 端口接口模块;调试、下载接口模块;下图为61 板的实物图:3.4 机器人模组简介3.4.1 机器人驱动电路图机器人驱动电路图如所示:机器人驱动电路采用功率较大的三极管搭成H 桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。
这些电机包括2 个用于走路的电机与一个头部转向的电机。
另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。
3.4.2 主要功能通过语音命令对其进行控制;可以跳两首舞曲;走步功能、转向功能、转头功能;发射飞盘功能;3.4.3 机器人实物图3.4.4 注意事项机器人在发射飞盘时不要面向人,避免受伤机器人要轻拿轻放应该避免摔打在安装电池时注意正负极,否则容易烧坏机器人电机或主控制板4 系统总体方案介绍用61 板来控制机器人,使用了IOB7-IOB15 资源,另外使用了扬声器。
如图 4-1 所示:61 板与机器人连线图,如图 4-2 所示:系统主要由61 板与机器人驱动电路构成。
61 板作为整个系统的主控板,驱动电路驱动电机。
在主控板61 板的控制下完成各个动作。
另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。
5 系统的硬件设计5.1 SPCE061A 周边模块5.1.1 SPCE061A 最小系统SPCE061A 最小系统当中,包括SPCE061A 芯片外围的基本模块,有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。
本系统,有关SPCE061A 单片机的最小系统的各个模块都做在61 板当中,读者可以查阅61 板的电路原理图。
5.1.2 电源模块SPCE061A 的内核供电为3.3V,而I/O 端口可接3.3V 也可以接5V,所以在电源模块(61 板上)中有一个端口电平选择跳线,如图中的J5,下图为61 板上的电源模块图。
由于本系统需要的端口高电平为5V,所以图图 5-2 当中的J5 跳线需要跳到1 和2 上。
5.1.3 放音模块交通灯换向时有语音提示。
放音利用的是SPCE061A 内部的DAC,电路如图 5-3 所示。
图中的SPY0030是凌阳公司的产品。
和LM386 相比,SPY0030 还是比较有优势的,比如LM386 工作电压需在4V 以上,而SPY0030 仅需2.4V (两颗电池)即可工作;LM386 输出功率100mW 以下,SPY0030 约700mW。
其他特性请参考SPY0030 的数据手册。
5.1.4 机器人硬件驱动电路机器人硬件原理图如图 5-4 所示:机器人驱动电路采用功率较大的三极管搭成H 桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。
这些电机包括2 个用于走路的电机与一个头部转向的电机。
另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。
6 所用语音算法介绍6.1 语音识别算法简介6.1.1 语音识别概述:根据对说话人的依赖程度,分为:z 特定人语音识别(SD):只能辨认特定使用者的语音,训练->使用z 非特定人语音识别(SI):可辨认任何人的语音,无须训练根据对说话方式的要求,分为:z 孤立词识别:每次只能识别单个词汇z 连续语音识别:用者以正常语速说话,即可识别其中的语句6.1.2 语音识别原理语音识别原理参看下图:6.1.3 SPCE061A 实现语音识别的步骤SPCE061A 实现语音识别的步骤,分为训练部分与识别部分,以及在训练、识别过程中中断的情况,参考下图:6.1.4 语音识别API 介绍BSR_InitRecognizer(int AudioSource);初始化识别器BSR_Train(int WordID,int TrainMode);语音训练BSR_DeleteSDGroup(int SDGroupNo);清除内存BSR_PauseRecognizer()暂停识别,但不释放中断等资源BSR_ResumeRecognizer()恢复被暂停的识别BSR_GetRecognizerScore()获得识别结果的可信度,返回值从-4096 到4096,数值越大表示输入语音与特征模型的匹配度越高。
BSR_EnableCPUIndicator()开启CPU 状态监测功能。
开启该功能后,IOA0 和IOA1 将发出每16ms 电平变化一次的方波。
BSR_DisableCPUIndicator()关闭CPU 状态监测功能。
BSR_ExportSDWord(int CommandID)使用函数库时,会自动创建一个100 Word 的数组BSR_SDModel[100],可以把某条训练命令的特征模型数据导出到这个数组中。
BSR_ImportSDWord(int CommandID)可以把BSR_SDModel 数组中的数据导入为某条语音命的特征模型。
unsigned int BSR_SDModel[];配合BSR_ExportSDWord(int CommandID)与BSR_ImportSDWord(int CommandID)函数使用,此数组的作用相当于一个暂时的存储区。