[信息与通信]毕业设计_语音识别机器人_毕业论文.doc_第1页
[信息与通信]毕业设计_语音识别机器人_毕业论文.doc_第2页
[信息与通信]毕业设计_语音识别机器人_毕业论文.doc_第3页
[信息与通信]毕业设计_语音识别机器人_毕业论文.doc_第4页
[信息与通信]毕业设计_语音识别机器人_毕业论文.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xxxx毕业论文Xxxxxx毕 业 设 计 任 务 书专业 电子工艺与管理年级 xxx级班级 一班姓名 xxx 学号 20xxx0208037xxx 教 务 处 编 印下载于 就爱免费网 免费论文 栏目/html/mflw/毕业设计指导须知一、毕业设计是高职教学过程中一个十分重要的环节。是锻炼学生运用所学知识正确分析和解决实际问题的一个重要方面,也是高职培养应用型专门人才的要求。二、导教师应为具有讲师以上或相应职称的有关专业人员,且专业对口(指所指导专业应同所聘教师专业职称相一致)。经系、教务处审查同意后,才能指导学生的毕业设计。三、学生应以严肃认真,实事求是的态度完成设计。要独立思考,自己动手,不得抄袭或找人代笔。四、毕业设计选题要符合专业培养目标的要求。论文(任务书)写作要做到论点明确、论据充分,论理透彻,语言准确恰当,书面整洁、字迹工整,图纸应清晰、工整,符合设计要求,符合国家有关标准和部颁标准。字数、图纸数量符合有关要求。并在规定的时间内完成。五、答辩过程中学生要严认真,文明礼貌,谦虚谨慎,认真回答答辩主持人,委员等提出的问题。六、填报有关表格时,应按项目要求逐项填实、填全、填清。学号20xxx0208037姓名xxx学 制三年专业电子工艺与管理年级xxx级教学班负责人xxx班级一班指导教师姓名xxx职务或职称副教授设 计 题 目语音识别机器人指导教师评语:成绩: 指导教师签名: 工作单位 年 月 日系复审意见:成绩: 复审人签名: 职称: 公章 年 月 日教务处终审意见:公章 年 月 日答 辩 情 况 记 录答 辩 题 目答 辩 情 况正确基本正确经提示回 答不正确未回答此表由主持答辩的同志填写。答辩委员会(或小组)评语:成绩: 主持答辩人签名: 职称: 月 日一、毕业设计的任务和具体要求:毕业设计的任务:语音识别机器人毕业设计的具体要求:1. 功能指标l 通过语音命令对其进行控制;l 可以跳两首舞曲;l 走步功能、转向功能、转头功能;l 发射飞盘功能;2. 技术指标l 机器人工作的额定电压:6V(4 节干电池)二、毕业设计应完成的图纸:图3-1 SPCExxx1A的内部结构图,见3页图 3-2 61 板的实物图,见6页图 3-3 机器人驱动电路图,见7页图 3-4 机器人实物图,见8页图 4-1 系统的总体框图,见9页图 4-2 61 板与机器人连线图,见10页图 5-1 SPCExxx1A 最小系统,见11页图 5-2 电源模块,见12页图 5-3 音频输出电路,见12页图 5-4 音频输入电路,见13页图 5-5 ICE 接口电路,见13页图 6-1 语音识别原理,见15页图 6-2 SPCExxx1A 实现语音识别,见16页表 6-1 音频质量等级的编码技术标准,见19页表 6-2 SACM-LIB库模块及算法类型,见20页图 7-1 程序流程图与中断流程图,见24页图 7-2 SACM_S480 自动播放流程图,见26页图 7-3 中断服务程序流程图,见27页图 8-1 编译、链接图,见28页图 8-2 机器人操作示意图,见29页三、其他要求:四、毕业设计的期限:自2008年 7 月 5 日至 2008年 10 月 10 日五、毕业设计(论文)进度计划:起 至 日 期工 作 内 容备 注2008.7.5-8.312008.9.1-9. 202008. 9. 20-9. 302008.10.1-10. 1确定选题、收集相关资料,备齐制作实物所需各种元器件。根据选定的原理图及框图进行实物的连接与装配。利用数字实验箱等仪器对所需产生功能及各种参数进行测量和调试,并改正过程中出现的各种错误。根据毕业设计的制作经过写毕业论文。 语音识别机器人摘 要当今,机器人的发展越来越趋于智能化和人性化,语音是人和机器人之间交流的最自然、最方便的手段之一。语音识别的目的是通过语音,使机器了解人的意思从而执行相应的命令,完成相应的动作。实现了机器人的智能性和先进性。 基于以上机器人的发展方向,该设计制作了一个以凌阳单片机为核心的智能机器人软件系统。系统主要包括语音识别模块,语音播放模块以及机器人动作控制模块。该系统利用凌阳单片机在数字信号处理及语音处理方面的优越性,通过语音辨识技术,可以让机器人在语音指令控制下实现前进,后退,跳舞,发射以及连续发射飞盘等多种功能。 关键词:SPCExxx1A 凌阳单片机 特定人语音识别 智能机器人目 录第1章 摘要1第2章 设计要求22.1 设计要求22.2 技术要求2第3章 模组特性简介33.1 SPCExxx1A特性简介 33.2 芯片特性简介33.3 SPCExxx1A精简开发板43.4 机器人模组简介 63.4.1 机器人驱动电路图63.4.2 主要功能73.4.3 机器人实物图73.4.4 注意事项8第4章 系统总体方案介绍 9第5章 系统硬件设计 115.1 SPCExxx1A周边模块 115.1.1 SPCExxx1A最小系统 115.1.2 电源模块115.1.3 放音模块125.1.4 ICE 接口电路135.2 硬件准备硬件链接、硬件检测14第6章 所用语言算法介绍156.1 语音识别算法简介 156.1.1 语音识别概述156.1.2 语音识别原理156.1.3 SPCExxx1A实现语音识别的步骤156.1.4 语音识别API介绍 186.2 凌阳音频概述196.2.1 凌阳音频压缩算法的编码标准196.2.2 压缩分类196.2.3 凌阳常用音频形式和压缩算法196.2.4 凌阳语音的播放、录制、合成和识别206.2.5 常用的应用程序接口API的功能介绍及应用20第7章 系统软件设计237.1 擦出FLASH模块 257.2 位操作模块 257.3 语音播放函数 267.4 走路、跳舞等其他函数模块 27第8章 应用方案的验证步骤 28结束语30参考文献31致谢 329语音识别机器人第1章 摘要目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹,可以说是一个单片机百花齐放,百家争鸣的时期。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种手机、充电器、电话、电风扇、录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。为了提高广大单片机爱好者使用单片机操作电机、使用单片机控制电机的兴趣,在此基础上,可以充分发挥想象力来操作机器人完成各种动作,或者使用特定人语音识别使机器人具有智能化,凌阳科技大学计划教育推广中心推出了应用SPCExxx1A 作为主控制器,外加电机驱动电路制作的语音识别机器人。该机器人采用特定人语音识别对机器人进行控制,可以完成向前走、倒退、左转、右转、跳两首舞曲、向左瞄准、向右瞄准、发射、连续发射等功能。该语音识别机器人可以大大提高在校学生学习单片机的兴趣。第2章 设计要求2.1 设计要求利用 SPCExxx1A 单片机、机器人机体(包括2 个用于走路的电机、1 个用于头部旋转的电机、1个用于加速1 个用于弹射的电机等),要求语音识别机器人具有下述功能:1. 通过语音命令对其进行控制。2. 两种跳舞模式。3. 走步功能、转向功能、转头功能。4. 发射飞盘功能。2.2 技术要求1. 要求智能机器人可以识别15 条命令。2. 要求智能机器人具有2 种跳舞模式。第3章 模组特性简介3.1 SPCExxx1A 特性简介SPCExxx1A 是凌阳科技研发生产的性价比很高的一款十六位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有8 路10 位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。两路10 精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。另外凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C 语言,可以实现C 语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件开发提供了方便的条件:SPCExxx1A 片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真都变得非常方便,而ICE 接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE)用户可以利用它对芯片进行真实的仿真;而程序的下载(烧写)也是通过该接口进行下载。下图为 SPCExxx1A 单片机的内部结构框图:3.2 芯片特性简介 SPCExxx1A 性能简介:l 16 位unSP 微处理器l 工作电压(CPU)VDD 为3.03.6V,(I/O)VDDH 为3.05.5Vl CPU 时钟:0.3249.152MHzl 内置2K 字SRAMl 内置32K 字FLASHl 可编程音频处理l 晶体振荡器l 系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6Vl 2 个16 位可编程定时器/计数器(可自动预置初始计数值)l 2 个10 位DAC(数/模转换)输出通道l 32 位通用可编程输入/输出通道l 14 个中断源可来自定时器A/B、时基、2 个外部时钟源输入和键唤醒l 具备触键唤醒的功能l 使用凌阳音频编码SACM_S480 可以播放压缩的语音资源l 锁相环PLL 振荡器提供系统时钟信号l 32768Hz 实时时钟l 7 通道10 位电压模/数转换器(ADC)和单通道声音模/数转换器l 声音模/数转换器输入通道内置麦克风放大器,并具有自动增益控制(AGC)功能l 具备串行设备接口l 具备低电压复位功能和低电压检测功能l 内置在线仿真电路接口l 具有WatchDog 功能3.3 SPCExxx1A 精简开发板SPCExxx1A 精简开发板(简称61 板),是以凌阳16 位单片机SPCExxx1A 为核心的精简开发仿真实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作及电子竞赛所设计的,也可作为单片机项目初期研发使用。61 板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC 输入部分和DAC 音频输出部分)、复位电路等,采用电池供电,方便学生随身携带!使学生在掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为单片机学习者和开发者创造了一个良好的学习条件和开发新产品的会!61 板上有调试器接口(Probe 接口)以及下载线(EZ_Probe)接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。61 板电路组成如下:u 基本外围电阻电容;u 麦克输入的电路和DAC输出的外围电路;u 32个I/O全部引出;u 电源部分采用的是电池供电,也可以外接5V的稳压源,通过SPY0029稳压到3.3V;u PROBE接口在线调试;u 一路DAC输出;u 复位电路;u 三个按键K1,K2,K3(用于作演示,也为自己设计电路提供方便)分别接IOA0,IAO1和IAO2,另一端接高电平;u 一个红色电源指示灯和一个绿色睡眠指示灯;u 音频输出将SPEAKER的两端引出,使用者只需外接一个0.5W8的喇叭即可听到悦耳的声音。61 板上的主要功能模块如下:u SPCExxx1A 单片机最小系统外围电路模块;u 电源输入模块;u 音频电路(包含MIC 输入、DAC 音频功放输出)模块;u 按键模块;u I/O 端口接口模块;u 调试、下载接口模块;下图为 61 板的实物图:图 3-2 61板实物图电源区:为整个系统提供电源,通常采用系统配套的电池盒进行供电,只要放入3节5号电池就可以满足供电需求了。 下载区:程序就是通过这边的接口下载到SPCExxx1A单片机的,当然,在进行在线调试时也能上传一些硬件信息到开发环境中。 音频区:这里的麦克风是用来进行语音输入的,还有一个喇叭的接口用来进行语音播放。 SPCExxx1A与周边:这就是整块板子的大脑,所有控制信息都是从这里发出的,那些周边器件用来协助SPCExxx1A单片机正常工作。 键控区:采用这几个按键我们可以做一些简单的试验,比如说当板子里下载了复读机的程序,按这几个按键就可以分别用来进行录音、暂停和播放,如果下载了语音万年历的程序,这几个按键就可以用来设定初始时间和控制播放当前时间等。 复位区:这里是由几个简单的电子元器件组成,当按下这里面的按键后,单片机就重新开始工作,也可以说成是单片机里的程序从第一条开始重新运行。 端口区:用于对外挂硬件的控制,或者获取外部硬件的一些状态以便SPCExxx1A来进行处理。3.4 机器人模组简介3.4.1 机器人驱动电路图机器人驱动电路图如所示:图 3-3 机器人驱动电路图机器人驱动电路采用功率较大的三极管搭成 H 桥来驱动电机,可以实现电机的正向旋转与电机的反向旋转。这些电机包括2 个用于走路的电机与一个头部转向的电机。另外用了一个三极管驱动单向旋转的电机,包括加速电机与发射电机,驱动电路比较简单。3.4.2 主要功能u 通过语音命令对其进行控制;u 可以跳两首舞曲;u 走步功能、转向功能、转头功能;u 发射飞盘功能;3.4.3 机器人实物图3.4.4 注意事项u 机器人在发射飞盘时不要面向人,避免受伤u 机器人要轻拿轻放应该避免摔打u 在安装电池时注意正负极,否则容易烧坏机器人电机或主控制板第4章 系统总体方案介绍机器人共有五个直流电机。除发射电机和推进电机外,其它三个电机均是正反两用电机,即加在电机驱动端的两路输入为高低电平时电机转动,改变输入高低电平的顺序,电机反向转动,这样可以控制机器人的前进,后退,左右摇头等双向动作。 发射电机和推进电机的转动方向是固定的。发射电机的转速较高,高速的旋转带动转盘依靠摩擦力把飞盘发射出去。推进电机的任务就是把发射所需要的飞盘从存储仓输送到发射转盘位置。它依靠的是电机带动一个机簧的机械装置。电机转动一圈,机簧就会弹射一下,从而完成输送飞盘的任务。用 61 板来控制机器人,使用了IOB7-IOB15 资源,另外使用了扬声器。如图 4-1 所示:61 板与机器人连线图,如图 4-2 所示:图 4-2 61 板与机器人连线图系统主要由 61 板与机器人驱动电路构成。61 板作为整个系统的主控板,驱动电路驱动电机在主控板61 板的控制下完成各个动作。另外增加了特定人语音识别的功能,通过命令来控制机器人,使机器人智能化。第5章 系统硬件设计5.1 SPCExxx1A 周边模块5.1.1 SPCExxx1A 最小系统SPCExxx1A 最小系统当中,包括SPCExxx1A 芯片外围的基本模块,有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。图 5-1 SPCExxx1A 最小系统本系统,有关SPCExxx1A 单片机的最小系统的各个模块都做在61 板当中,读者可以查阅61 板的电路原理图。5.1.2 电源模块SPCExxx1A 的内核供电为3.3V,而I/O 端口可接3.3V 也可以接5V,所以在电源模块(61 板上)中有一个端口电平选择跳线,如图中的J5,下图为61 板上的电源模块图。图 5-2 电源模块由于本系统需要的端口高电平为 5V,所以图5-2 当中的J5 跳线需要跳到1 和2 上。5.1.3 放音模块音频电路由音频输出和音频输入两部分组成。图 5-3 是音频输出电路图。SPCExxx1A 内置2 路10 位精度的DAC,只需要外接功放电路即可完成语音的播放。图中的SPY0030 是凌阳的一款音频放大芯片,可以工作在2.46V 范围内,最大输出功率可达700mW。图 5-3 音频输出电路SPCExxx1A 芯片中已经集成了音频输入专用ADC 以及AGC 放大电路,因此芯片外部的电路比较简单,图5-4是61 板的音频输入电路模块。图 5-4 音频输入电路5.1.4 ICE 接口电路SPCExxx1A 芯片内部集成了ICE(在线仿真)接口,PC 机通过Probe(在线调试器)或EZ_Probe(简易下载线)与61 板相连,就可以方便地完成程序的下载、调试等。61 板为Probe 和EZ_Probe 各自提供了一组接口,可通过S5 跳线来选择使用的接口类型。ICE 接口部分电路如图 5-4 所示。图 5-5 ICE 接口电路5.2 硬件准备硬件连接、硬件检测安装好unSP IDE后,需要连接61板,确认以下的硬件都备全了:l 下载线(又称EZ-Probe);l 完好的61板;l 电池盒(要记得里面要装好电池);l 喇叭。电池盒的接头接到61板上部的J10电源接口(插座具有防插错设计),喇叭接到61板上的J3接口。连接正确后,打开电源盒上的电源开关,可以看到61板上的电源指示灯(红色LED)点亮。下载线的一边(25针插座)与PC后面的并行接口(即打印口)相接,另一边的五针接头与61板上的J11接口(即标有“EZ-Probe”的插座)相接,并用J11接口边上的S5跳线把S5的2和3管脚短接。注意:在下载程序前,请先打开电源。第6章 所用语音算法介绍6.1 语音识别算法简介6.1.1 语音识别概述:根据对说话人的依赖程度,分为:l 特定人语音识别(SD):只能辨认特定使用者的语音,训练-使用l 非特定人语音识别(SI):可辨认任何人的语音,无须训练根据对说话方式的要求,分为:l 孤立词识别:每次只能识别单个词汇l 连续语音识别:用者以正常语速说话,即可识别其中的语句6.1.2 语音识别原理语音识别原理参看下图:6.1.3 SPCExxx1A 实现语音识别的步骤:SPCExxx1A 实现语音识别的步骤,分为训练部分与识别部分,以及在训练、识别过程中中断的情况,如图6-2。语音识别库bsrv222SDL.lib支持语音的识别过程,在bsrv222SDL.lib库中提供了语音识别整个过程的API函数:int BSR_DeleteSDGroup(0)int BSR_Train (int CommandID, int TraindMode)void BSR_InitRecognizer(int AudioSource)int BSR_GetResult(Void)void BSR_StopRecognizer(void)_BSR_FIQ_Routine在上面的函数中,第一个函数为初始化函数,第二个函数为训练函数,第三到五个函数为识别函数,最后一个函数是中断调用的函数。初始化过程:【API格式】C:int BSR_DeleteSDGroup(0)【功能说明】SRAM初始化。【参 数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。【返 回 值】当SRAM擦除成功返回0,否则返回1。【备 注】语音命令的特征模型是通过BSR_Train函数(下面会介绍)保存在RAM空间中的。如果所需的RAM空间已被旧的特征模型数据占满,新特征模型则无法保存到RAM中。利用BSR_DeleteSDGroup函数可以把RAM空间中所有的特征模型删除,释放出所需空间。训练过程: 【API格式】C:int BSR_Train (int CommandID, int TraindMode)【功能说明】训练函数。【参 数】CommandID:命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。TraindMode:训练次数,要求使用者在应用之前训练一或两遍:BSR_TRAIN_ONCE表示要求训练一次。BSR_TRAIN_TWICE表示要求训练两次。【返 回 值】训练成功,返回0;没有声音,返回-1;需要更多的语音数据来训练,返回-2;当环境太吵时,返回-3;当数据库满,返回-4;当两次输入命令不同,返回-5;当序号超出范围,返回-6。【备 注】 在调用训练程序之前,确保识别器正确的初始化; 训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近; 为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音; 调用函数后,等待12秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。识别过程:1.【API格式】C:void BSR_InitRecognizer(int AudioSource)【功能说明】辨识器初始化。【参 数】该参数定义语音输入来源,通过MIC语音输入还是LINE_IN电压模拟量输入。【返 回 值】无。2.【API格式】C:int BSR_GetResult(Void)【功能说明】辨识中获取数据。【参 数】无。【返 回 值】当无命令识别出来时,返回0;识别器停止、未初始化或识别未激活返回1;当识别不合格时返回2;当识别出来时返回命令的序号。【备 注】该函数用于启动辨识。3.【API格式】C:void BSR_StopRecognizer(void)【功能说明】停止辨识。【参 数】无。【返 回 值】无。【备 注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。中断过程:【API格式】ASM:_BSR_FIQ_Routine【功能说明】在中断中调用。【参 数】无。【返 回 值】无。【备 注】 该函数在中断FIQ_TMA中调用; 当主程序调用BSR_InitRecognizer(int AudioSource)时,辨识器便打开8K采样率的FIQ_TMA中断并开始将采样的语音数据填入辨识器的数据队列中; 应用程序需要设置一下程序段在FIQ_TMA中。6.1.4 其它语音识别API 介绍BSR_PauseRecognizer()暂停识别,但不释放中断等资源BSR_ResumeRecognizer()恢复被暂停的识别BSR_GetRecognizerScore()获得识别结果的可信度,返回值从-4096 到4096,数值越大表示输入语音与特征模型的匹配度越高。BSR_EnableCPUIndicator()开启CPU 状态监测功能。开启该功能后,IOA0 和IOA1 将发出每16ms 电平变化一次的方波。BSR_DisableCPUIndicator()关闭CPU 状态监测功能。BSR_ExportSDWord(int CommandID)使用函数库时,会自动创建一个100 Word 的数组BSR_SDModel100,可以把某条训练命令的特征模型数据导出到这个数组中。BSR_ImportSDWord(int CommandID)可以把BSR_SDModel 数组中的数据导入为某条语音命令的特征模型。unsigned int BSR_SDModel;配合BSR_ExportSDWord(int CommandID)与BSR_ImportSDWord(int CommandID)函数使用,此数组的作用相当于一个暂时的存储区。6.2 凌阳音频概述语音处理大致可以分为 A/D 采样输入、编码处理、存储、解码处理以及D/A 等;SPCExxx1A 解决方案:将 A/D、编码算法、解码算法、存储及D/A 作成相应的模块,对于每个模块都有其应用程序接口API,用户只需了解每个模块所要实现的功能及其参数的内容,然后调用该API 函数即可实现语音处理功能。6.2.1 凌阳音频压缩算法的编码标准表 6-1 是不同音频质量等级的编码技术标准(频响):凌阳音频压缩算法处理的语音信号的范围是 200Hz3.4KHz 的电话话音。6.2.2 压缩分类压缩分无损压缩和有损压缩。无损压缩一般指:磁盘文件,压缩比低:2:14:1。而有损压缩则是指:音视频文件,压缩比可高达 100:1。凌阳音频压缩算法根据不同的压缩比分为以下几种:SACM-A2000:压缩比为8:,8:1.25,8:1.5SACM-S480: 压缩比为 80:3,80:4.5SACM-S240: 压缩比为 80:1.5按音质排序:A2000S480S2406.2.3 凌阳常用的音频形式和压缩算法1) 波形编码:sub-band 即SACM-A2000特点:高质量、高码率,适于高保真语音音乐。2) 参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码。如SACM-S240。特点:压缩比大,计算量大,音质不高,廉价!3) 混合编码:CELP 即SACM-S480特点:综合参数和波形编码之优点。本方案采用该编码方式。除此之外,还具有FM 音乐合成方式即SACM-MS01。6.2.4 凌阳语音的播放、录制、合成和辨识 凌阳的 SPCExxx1A 是16 位单片机,具有DSP 功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放、录放、合成及辨识提供了条件。凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240 主要是用来放音,可用于语音提示,而DVR 则用来录放音。6.2.5 常用的应用程序接口API 的功能介绍及应用表 6-2 所列出的是凌阳音频的几种算法。语音和音乐与我们的生活有着非常密切的关系,而单片机对语音的控制如录放音、合成及辨识也广泛应用在现实生活中。我们知道对于语音处理大致可以分为A/D、编码处理、存储、解码处理以及D/A 等。然而,通过麦克风输入所生成的 WAVE 文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的SPCExxx1A 提出了解决的方法,即SACM-LIB(语音函数,来自于sacmv25.lib),该库将A/D、编码、解码、存储及D/A 作成相应的模块,对于每个模块都有其应用程序接口API,所以您只需了解每个模块所要实现的功能及其参数的内容,然后调用该API 函数即可实现该功能,例如在程序中插入语音提示,或连续播放一段语音或音乐,也可以根据自己需要的空间或使用范围选择适合自己的算法。以下就 SACM-S480 算法具体介绍其API 函数的格式、功能、参数、返回值、备注。该压缩算法压缩比较大80:3, 存储容量大,音质介于A2000 和S240 之间,适用于语音播放。其相关 API 函数如下所示:1)【API 格式】C:int SACM_S480_Initial(int Init_Index)ASM:R1= Init_IndexCall F_ SACM_ S480_Initial【功能说明】 SACM_S480 语音播放之前的初始化。【参数】 Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式。【返回值】 0:代表语音模块初始化失败1:代表初始化成功。【备注】 该函数用于对定时器、中断和 DAC 等的初始化。2) 【API 格式】 C:void SACM_S480_ServiceLoop(void)ASM:Call F_ SACM_S480_ServiceLoop【功能说明】从资源中获取 SACM_S480 语音资料,并将其填入解码队列中。【参数】 无。【返回值】 无。【备注】 播放语音文件中数据,当出现 FF FF FFH 数据时便停止播放。3) 【API 格式】C:int SACM_S480_Play(int Speech_Index,int Channel, int Ramp_Set);ASM:R1= Speech _IndexR2= ChannelR3= Ramp_SetCall SACM_S480_Play【功能说明】播放资源中 SACM_S480 语音。【参数】 Speech _Index 表示语音索引号。Channel:1.通过DAC1 通道播放;2.通过DAC2 通道播放;3.通过DAC1 和DAC2 双通道播放。Ramp_Set:0.禁止音量增/减调节;1.仅允许音量增调节;2.仅允许音量减调节;3.允许音量增/减调节。【返回值】 无。【备注】 SACM_S480 的数据率有4.8Kbps7.2Kbps 三种,可在同一模块的几种算法中自动选择一种。Speech_Index 是定义在resource.inc 文件中资源表(T_SACM_S480_SpeechTable)的偏移地址。中断服务子程序中 F_FIQ_Service_ SACM_S480 必须放在TMA_FIQ 中断向量上(参见SPCE 的中断系统)。函数允许 TimerA 以所选的的数据采样率(计数溢出)中断。4)【 API格式】unsigned int SACM_S480_Status(void);【功能说明】获取SACM_S480语音播放的状态。【参 数】无。【返 回 值】当R1的值 bit0=0,表示语音播放结束;bit0=1,表示语音在播放中。5) 【API 格式】ASM:Call F_FIQ_Service_ SACM_S480【功能说明】用作SACM_S480 语音背景程序的中断服务子程序。通过前台子程序(自动方式的SACM_S480_ServiceLoop 及手动方式的SACM_S480_Decode)对语音资料进行解码,然后将其送入DAC通道播放。【参数】 无。【返回值】 无。【备注】SACM_S480 语音背景子程序只有汇编指令形式,且应将此子程序安置在TMA_FIQ 中断源上。第7章 系统软件设计在主函数中调用相关函数完成特定人语音的训练,然后再训练成功后进行语音识别,根据识别的命令执行相关的操作。图 7-1 程序流程图与中断流程图判断是否为第一次下载根据 FLASH 中的标志位来进行判断。将训练好的语音模型导出存储到FLASH中使用库函数BSR_ExportSDWord(uiCommandID);进行操作,然后再调用读写FLASH 中的函数进行。在进行语音识别时,首先读取FLASH 将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID);函数将语音资源载入内存。在识别出命令后,执行相关动作,相关动作操作就是操作电机的正向或反向旋转同时配合延时与播放声音组合起来形成不同的动作。7.1 擦除Flash 模块:在程序中按照操作 SPCExxx1A 的flash 的步骤擦写flash,在程序中写成3 个函数用于操作flash,如下:F_FlashWrite1Word()语法:void F_FlashWrite1Word(int addr,int Value)描述:写一个字到FLASH 中参数:1、被写数据的存储地址2、被写数据返回:无F_FlashWrite()语法:F_FlashWrite(int sector,int &num,int size)描述:顺序写多个字参数:1、被写数据的起始地址2、被写数据3、写数据的数量返回:无F_FlashErase()语法:void F_FlashErase(sector)描述:擦除256 字节参数: 擦除页的起始地址返回:无7.2 位操作模块:由于 SPCExxx1A 没有位操作指令,而在程序控制电机的时候需要经常操作某一位,为了方便程序的编写,增强可读性,编写了位操作模块。函数 void Set_IOB_Bit(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);参数依次为IO 的位、Dir、Attrib、Data、Buffer例如操作IOB11 为同相低电平输出为Set_IOB_Bit(11,1,1,0,0);7.3 语音播放函数在本系统的软件设计当中,将语音播放的程序设计为语音播放模块,可方便地调用;语音播放程序分为两部分,一是播放流程控制,一是中断播放服务程序。流程图如和所示:图 7-2 SACM_S480 自动播放流程图图7-3 中断服务程序流程图7.4 走路、跳舞等其他函数模块:这些函数就是控制电机的通与断的组合完成不用的动作,在需要的时候播放语音,实现一定的效果,具体请参考函数原形。第8章 应用方案的验证步骤1. 目的:应用方案要掌握通过特定人语音识别控制机器人的动作,识别15条语句。2. 内容:利用特定人语音识别,控制机器人做跳舞、走路、转向、转头等动作。3. 实验设备装有Windows系统和unSP IDE仿真环境的PC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论