
基于单片机的语音识别机器人的设计.docx
2页INTELLIGENCE ························实 践 与 探 索基于单片机的语音识别机器人的设计天津工业大学 电气工程与自动化学院 陈 松 王 萍 李 辉摘 要:本文是利用凌阳16位单片机在语音方面的优势,根据语音识别的基本 原理,设计了一种语音控制机器人,利用C语言和汇编语言进行系统软件编程,最 终完成了可以通过对语音的识别,自动完成向前走、倒退、左转、右转、等功能的 智能机器人的设计 关键词:凌阳SPEC61A单片机 语音识别 语音控制(智械 科技)引言模块、自动语音录音以及播放模块另外,它还配有专门的 编译环境IDE,这些都为软件的设计提供了方便在硬件方面, 单片机有输入输出端口,这就方便了单片机与机器人、计算 机的连接 语音识别机器人系统主要是利用凌阳SPCE061A 板作为整个系统的主控板[4]用SPCE061A控制驱动电路, 使之驱动电机完成机器人的各个动作主要是用61板上的麦 克风作为语音输入,对语音信号进行采样,然后在单片机中 进行分析与处理,再由开发板的I/O口输出结果,实现语音 控制机器人的目的另外增加了特定人语音识别的功能,通 过命令控制机器人,使机器人智能化[5]。
系统将完成走步 功能,转向功能和转头功能语音识别机器人的系统框图如 图2语言是人类最直接的沟通方式,也是最方便的方式所 以我们希望与机器人沟通也使用人类的语言[1]随着语音 技术越来越完善,并在结合单片机应用的过程中不断得到深 入单片机以其高可靠性、高性能价格比得到广泛的应用, 更由于16位单片机的出现,处理能力得到提高,具备DPS功 能,可以采用单片机技术直接对语音信号进行处理和应用, 使单片机作为微控制器具备了更多更强的功能本文利用凌 阳16位61系列的SPCE061A单片机、机器人机体制作语音识 别机器人,采用人声控制,使操作向简单,方便,高效发展 1.语音识别描述 基于单片机的语音识别机器人的设计的目的是希望设计 出一种具有识别人类语言的机器人,能够直接听懂人的讲话, 理解人的意图并做出相应的反应[2]61板机器人放音模 块左腿电机语音识别系统本质上是一种多维模式识别系统,结构如 图1所示,语音识别系统与一般的模式识别系统类似,包括 特征提取、语音模式库、模式匹配3个基本单元[3]右腿电机头部电机推进电机眼睛指示灯输入 语音识别模式匹配预处理特征提取后处理 识 别 结 果初步 识别 结果 SPEC061A训练语音模型 库图 1 语音识别系统的结构图图 2 语音识别机器人系统框图 在语音识别中,预处理是用于去除声门激励、口鼻辐射、 高于1/2采样频率的高频和噪音信号的影响,实现语音的数 字化;特征提取的过程就是从原始语音信号中抽取出能够反 映语音本质的特征参数,形成特征矢量序列;语音模型库是 用聚类分析等方法,从一个讲话或多个讲话者的多次重复得 语音参数;模式匹配是将输入语音的特征参数同训练得到的 语音模式库进行比较分析,从而得到初步识别结果;后处理 是为了提高识别的正确率。
智械科技)SPCE061A单片机实现语音识别的步骤分为:训练部分, 识别部分以及在训练、识别过程中的中断部分 3.语音识别机器人的软件设计 本文软件编程是语音识别机器人最重要的一环,需要用 C语言和汇编语言在IDE编译环境下对单片机进行编程,这 是用μ’nSP单片机指令系统进行编程的主要特点[6]采 用汇编语言和高级语言混合编程虽然不如用一种高级语言编 程清晰,结构性强,但是对于一些对端口进行频繁操作的程 序来说,利用汇编语言一方面会使程序编写简单,另一方面 使程序执行的效率也相对地提高本文主要是采用主函数调 用子函数的形式在调用的的过程中应该注意的是在高级语 言里调用汇编语言,如果没有参数,可以对汇编语言全过程2.语音识别机器人的硬件 凌阳SPCE061A单片机不仅具有体积小、集成度高、可靠 性好且易于扩展;较强的中断处理能力;高性能价格比;低 功耗、低电压等优点外,还有很强的模块化,例如:位操作306············INTELLIGENCE············实 践 与 探 索进行声明,然后在高级语言里直接调用;在调用前寄存器会 入栈,再返回时会使寄存器出栈如果有参数,则通过堆栈 将数据传递到汇编编写的过程里。
如果有返回值,一方面可 以通过定义全局变量来进行汇编语言和高级语言的参数传递, 这样做的缺点是全局变量容易被意外改变,而且也增加了函 数之间的数据耦合;另一方面可以通过汇编语言让寄存器R1 进行参数传递,在汇编函数返回时,从堆栈弹出时的R1的值 赋给高级语言里的变量在主函数中,定义在不同的识别结 果运行那一个子函数;在子函数中,对各个功能模块进行定义 另外,还需要定义头函数和语音资源模块,在头函数主要定 义系统涉及到的中断和存储模块,在语音资源主要定义系统 所涉及的语音资源,方便在程序中调用通过利用集成开发 环境IDE提供的大量库函数及C语言、汇编语言的软件编程 语句,对机器人所涉及的接口、芯片等硬件和如何根据命令 完成各项动作进行编程软件编程的主要形式就是在主函数 中调用相关子函数完成特定人语音的训练,然后在训练成功 后进行语音识别,并根据识别的命令进行相关的操作 语音识别机器人系统的主程序如图3所示在主程序中 调用相关程序完成特定人语音的训练,在训练成功后进行语 音识别,根据识别的命令执行相关的操作智械科技)程序开始以后,首先初始化IOB口然后判断是否第一次 下载,如果是第一次下载就不需要擦除闪存Flash,直接进 入语音识别阶段;否则就要擦除闪存中的内容,进入语音训 练和存储阶段,完成后置相关位,再进入语音识别阶段。
在 语音识别阶段由于命令较多,所以采用分组方式,每组都以 机器人的名字为触发指令,然后根据识别器识别的结果执行 对应组中的命令[7]在识别过程中考虑到有延时的问题, 如果出现延时,就消除触发标志,重新返回语音识别初始化 阶段 结束语 本文所描述的基于凌阳SPEC061A单片机的语音识别机器 人虽然正常完成各项指令,但对特定人的语音识别精度不高 且反应时间过长,不能做到高精度、高效率所以在这个层 面上还有待提高智械科技) 参考文献 [1]陈秀华.基于SPCE061A单片机的语音控制机器人的 设计[J].中国水运,2007.08,07(08):163-164. [2]吴黎明.语音信号及单片机处理[M].北京-科学出 版社,2007 34-36. [3]李晶皎.嵌入式语音技术及凌阳16位单片机应用 [M].北京-北京航空航天大学出版社,2003.11 88-92. [4]黄智伟.凌阳单片机课程设计指导[M].北京-北京 航空航天大学出版社,2007.6 100-104.程序根据Flash中的标志位判断是否为第一次下载使 用库函数BSR_ExportSDWord(uiCommandID)将训练好的语 音模型导出储存到Flash中,再调用读/写Flash中的函数 进行操作。
在进行语音识别时,首先读取Flash取得语音模型, 然后调用函数BSR_ImportSDWord(uiCommandID)将语音资源 载入内存在识别出命令后,执行相关动作[5]侯媛彬.凌阳单片机原理及其毕业设计精选[M]. 北 京-科学出版社,2006 138-164.(智械科技) [6]陈言俊.大学生创新竞赛:凌阳16位单片机应用[M]. 北京-北京航空航天大学出版社,2009.8 145-148. [7]车爱静.基于凌阳SPEC061A单片机的语音控制系统 [J].电脑开发与应用,2006.08,19(10):49-51.开始初始化IOB口N作者简介:陈松(1989-),男,学士,专业为自动化; 李辉(1987-),男,在读硕士,研究方向嵌入式系统开发; 王萍,女,教授,硕士研究生导师,主要从事仪器仪表检测 方面的研究第一次下载?Y 擦除指定的 Flash语音训练与储存置相关标志位语音识别初始化为触发状态?N为触发名称?NYY 判断是第几组 命令?设置触发第三组命 第一组命令第二组命令是哪条命令 令?是哪条命 令?是哪条命 令?第 二 组 命 令第 三 组 命 令向 左 瞄 准向向 前 走向 后 走应 答应 答左 转右 转应 答右 瞄 准训练超时?NY清除触发标志NKey3键按下?Y擦除Flash标志 图 3 语音识别机器人主程序流程图307。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






