语音识别机器人的设计毕业论文.docx
- 文档编号:8719704
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:339.79KB
语音识别机器人的设计毕业论文.docx
《语音识别机器人的设计毕业论文.docx》由会员分享,可在线阅读,更多相关《语音识别机器人的设计毕业论文.docx(24页珍藏版)》请在冰豆网上搜索。
语音识别机器人的设计毕业论文
毕业论文(设计)
题目语音识别机器人的设计
系部电子信息工程
专业电子信息工程 年级06级
学生姓名
学号
指导教师
语音识别机器人的设计
【摘要】语音识别可划分为训练和识别两个过程。
在第一阶段,语音识别系统对人类的语言进行学习,把学习内容组成语音库存储起来,在第二阶段就可以把当前输入的语音在语音库中查找相应的词义或语义。
凌阳16位SPCE061A单片机内嵌32K字闪存,2K字SRAM,内置10位ADC、DAC,有多达14个的中断源。
它的CPU内核采用16位具有DSP功能的微处理器芯片,而且CPU可最高工作在49MHz的主频下,能够非常容易地、快速地处理复杂的数字信号,因此与其他类型的单片机相比,在数字语音处理方面SPCE061A更具有优势。
基于SPCE061A设计了一个具有语音识别功能的机器人。
经过训练,训练人可使用各种命令让机器人完成许多有趣的动作,使得人机交互更具智能化。
【关键词】SPCE061A单片机语音识别机器人
TheDesignoftheSpeechRecognitionRobot
【Abstract】Thespeechrecognitionisdividedintotwostages,namely,trainingandrecognition.Atthefirststage,thespeechrecognitionsystemlearnsaboutthehumanlanguageandstoreswhatithaslearnedinaspeechdatabase.Thenatthenextstage,themeaningofeachinputtedspeechcanimmediatelybefoundinthespeechdatabase.Sunplus16-bitSPCE061ASCMisembeddedwith32KwordFlashand2KwordSRAM,withbuilt-in10-bitADCandDACaswellasmorethan14interruptsources.ThecoreofitsCPUisa16-bitmicroprocessorchipwhichhasthefunctionofDSP.Besides,theCPUcanworkwithafrequencyupto49MHz,andprocesscomplexdigitalsignalseasilyandquickly.Therefore,comparedwithothertypesofSCM,SPCE061Ahasmoreadvantagesinspeechprocessing.BasedonSPCE061A,aspeechrecognitionrobothasbeendesigned.Aftertraining,therobotcancompletemanyinterestingactionsaccordingtotheorders,whichmakesthehuman-computerinteractionmoreintelligent.
【Keywords】SPCE061ASCMSpeechRecognitionRobot
绪论
目前制造业市场上,工业机器人具有相当大的市场潜力,要使工业机器人真正应用于生产线上的各个方面,满足人们日益增长的需求,就离不开高性能的语音识别控制系统。
随着计算机软硬件技术、半导体技术、电子技术、通讯技术等的飞速发展人类已经进入后PC时代。
语音识别技术得到了迅猛发展,支持语音识别的各种产品纷纷面世。
人类实现了语音命令控制空调、电视、灯光、自动窗帘等的使用,让人们的生活“随音所欲”,更加舒适,更加便捷。
基于凌阳16位SPCE061A单片机设计了一个具有语音识别功能的机器人。
在经过训练后使机器人对训练人的命令做出应答,完成跳两首舞曲、走步、转向、转头、发射飞盘等动作。
1SPCE061A单片机
本系统采用凌阳16位SPCE061A单片机作为控制中心,对输入的语音指令进行识别和处理,从而驱动机器人不同部位的直流电机,做出前进、后退、左传、右转等不同动作。
1.1SPCE061A简介
SPCE061A是凌阳科技研发生产的性价比很高的一款16位单片机,使用它可以非常方便灵活的实现语音的录放系统,该芯片拥有八路10位精度的ADC,其中一路为音频转换通道,并且内置有自动增益电路,用于录音。
两路10精度DAC,只需外接功放(SPY0030A)即可完成放音。
凌阳16位单片机所拥的一套指令系统和集成开发环境具有易学易用、效率高等特点。
在集成开发环境中,支持标准C语言编程,并可以实现C语言与凌阳汇编语言的相互调用,语音的录放只需调用相应的库函数就可实现。
SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对芯片的编程和仿真变得非常方便,而且ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSPIDE)可以对芯片进行仿真;而程序的下载(烧写)也是通过该接口进行下载。
1.2芯片特性
SPCE061A性能简介[1]:
(1)16位微处理器
(2)工作电压(CPU)VDD为3.0~3.6V,(I/O)VDDH为3.0~5.5V
(3)CPU时钟:
0.32~49.152MHz
(4)内置2K字SRAM
(5)内置32K字FLASH
(6)可编程音频处理
(7)晶体振荡器
(8)系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6V
(9)2个16位可编程定时器/计数器(可自动预置初始计数值)
(10)2个10位DAC(数/模转换)输出通道
(11)32位通用可编程输入/输出通道
(12)14个中断源可来自定时器A/B、时基、2个外部时钟源输入和键唤醒
(13)具备键唤醒的功能
(14)使用凌阳音频编码SACM_S480可以播放压缩的语音资源
(15)锁相环PLL振荡器提供系统时钟信号
(16)32768Hz实时时钟
(17)7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器
(18)声音模/数转换器输入通道内置麦克风放大器,并具有自动增益控制(AGC)功能
(19)具备串行设备接口(SIO)
(20)具备低电压复位(LVR)功能和低电压检测(LVD)功能
(21)内置ICE(在线仿真电路)接口
(22)具有WatchDog功能
1.3SPCE061A精简开发板
SPCE061A精简开发板(简称61板),是以凌阳16位SPCE061A单片机为核心的精简开发、仿真实验板。
61板除了具备单片机最小系统电路外,还包括电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等。
61板上有调试器接口(Probe接口)以及下载线接口(EZ_Probe接口),分别可接凌阳科技的在线调试器、简易下载器。
实现程序的下载、在线仿真调试只需配合unSPIDE使用。
2所用语音算法
2.1语音识别算法
2.1.1语音识别概述
根据对说话人的依赖程度,分为:
(1)特定人语音识别(SD):
只能辨认特定使用者的语音,训练→使用。
(2)非特定人语音识别(SI):
可辨认任何人的语音,无须训练。
根据对说话方式的要求,分为:
(1)孤立词识别:
每次只能识别单个词汇。
(2)连续语音识别:
用者以正常语速说话,即可识别其中的语句。
2.1.2语音识别原理
特征提取,抽取反应语音本质的特征参数,形成特征矢量序列。
语音模型库,从一个或多个讲话者多次重复讲话中提取的语音参数模板。
匹配检测,把输入语音的特征参数与语音模型库进行比较分析,得到识别结果。
语音识别原理参看图2-1,如下:
图2-1语音识别原理
2.1.3SPCE061A实现语音识别的步骤
SPCE061A实现语音识别的步骤,分为训练部分与识别部分,以及在训练、识别过程中
中断的情况,参看图2-2,如下:
图2-2SPCE061A实现语音识别
2.2凌阳音频概述
我们所说的音频是指频率在20Hz~20KHz的声音信号,分为:
波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。
语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。
语音是对讲话声音的一次抽象,是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。
音乐与语音相对更规范一些,是符号化了的声音。
但音乐不能对所有的声音进行符号化。
为了让数字计算机更加便利处理音频信号,需要将模拟的(连续的)声音波形数字化(离散化),该过程主要包括采样和量化两个方面。
数字音频的质量取决于:
采样频率和量化位数这两个重要参数。
此外,声道的数目、相应的音频设备也是影响音频质量的原因。
语音处理技术是建立在语言学和数字信号处理基础之上的综合学科,其过程大致可以分为A/D采样输入、编码处理、存储、解码处理和D/A等。
如今,要实现语音处理有多种渠道,可以选用专用语音芯片也可以选用单片机,二者区别参看表2·1,如下:
表2·1语音处理器件性能对照表[2]
所选器件
音质
语音播放长度和段落
价格
专用语音芯片
好
受限制
较高
单片机
由AD、DA精度、压缩算法等决定
由存储空间决定
有优势
SPCE061A单片机具有八路10位ADC和两路10位DAC,两个16位可编程定时器/计数器,内置MIC放大器和自动增益控制(AGC)电路,CPU时钟主频最高达49MHz且具有DSP功能,有能力执行复杂压缩算法。
所以在选择具有语音处理功能单片机时,SPCE061A单片机可谓是上上之选。
SPCE061A将A/D、编码算法、解码算法、存储及D/A做成相应的模块,每个模块都有其应用程序接口API,要实现语音处理,只用了解每个模块所要实现的功能及参数的内容,然后调用该API函数即可。
不同音频质量等级的编码技术标准(频响)参看表2·2,如下:
表2·2音频质量等级编码技术标准[2]
信号类型
频率范围(Hz)
采样率(KHz)
量化精度(位)
电话话音
200~3400
8
8
宽带音频
(AM质量)
50~7000
16
16
调频广播
(FM质量)
20~15K
37.8
16
高质量音频
(CD质量)
20~20K
44.1
16
凌阳音频压缩算法处理的语音信号的范围是200Hz~3.4KHz的电话话音。
2.2.1音频压缩编码
2.2.1.1音频压缩编码基础
音频压缩编码中的数据量:
(采样频率×量化位数)/(字节数)×声道数目
压缩编码的目的,通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息。
压缩编码的必要性,未经压缩编码的音频资料量很大,用来传输或存储是不容易实现的。
所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息。
常见的几种音频压缩编码:
(1)波形编码[2],将时间域信号直接变换为数字代码,尽量真实地还原波形。
波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示。
译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号。
(2)参数编码[2],参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输。
译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号。
具体说,参数编码是通过对语音信号特征参数的提取和编码,尽量保持语音信号的可懂性,而还原后的波形可能与原波形差别很大。
(3)混合编码[2],将波形编码和参数编码组合起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,尽量保持波形编码的高质量和参数编码的低速率。
2.2.1.2压缩分类
压缩分为无损压缩和有损压缩。
无损压缩一般指磁盘文件,压缩比低,一般为:
2:
1~4:
1;有损压缩是指音/视频文件,压缩比可高达100:
1。
凌阳音频压缩算法根据不同的压缩比分为以下几种:
SACM-A2000、SACM-S480、SACM-S240。
三者区别参看表2·3,如下:
表2·3凌阳语音压缩算法区别[2]
凌阳音频压缩算法
编码方式
编码率(bps)
压缩比
音质
SACM_A2000
波形编码
16K,20K,24K
8:
1,8:
1.25,
8:
1.5
好
SACM_S480
混合编码
4.8K,7.2K
80:
3,80:
1.5
中
SACM_S240
参数编码
2.4K
80:
1.5
差
2.2.2凌阳语音的播放、录制、合成和辨识
要完成语音的播放、录制、合成及辨识等工作,单片机需要强大的信息处理能力而凌阳16位SPCE061A单片机则是为此而开发的,其具有DSP功能,可处理大量信息,CPU最高时钟频率可达到49MHz,具备运算速度高的优点。
凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录音。
2.2.3常用的应用程序接口API的功能及应用
语音和音乐与我们的生活有着相当密切的关系,而单片机对语音的控制如录放音、合成机辨识也广泛应用在现实生活中。
语音处理大致可以分为A/D、编码处理、存储、解码处理以及D/A等。
然而,通过麦克风输入所生成的WAVE文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然很不可能实现的,而凌阳的SPCE061A所采用的解决办法即SACM_LIB,该库将A/D、编码、解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API,要实现某功能,用户只需了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可。
语音识别API[2]介绍:
BSR_InitRecognizer(intAudioSource);初始化识别器
BSR_Train(intWordID,intTrainMode);语音训练
BSR_DeleteSDGroup(intSDGroupNo);清除内存
BSR_PauseRecognizer();暂停识别,但不释放中断等资源
BSR_ResumeRecognizer();恢复被暂停的识别
BSR_GetRecognizerScore();获得识别结果的可信度,返回值从-4096到4096,数值越大表示输入语音与特征模型的匹配度越高
BSR_EnableCPUIndicator();开启CPU状态监测功能。
开启该功能后,IOA0和IOA1将发出每16ms电平变化一次的方波
BSR_DisableCPUIndicator();关闭CPU状态监测功能
BSR_ExportSDWord(intCommandID);使用函数库时,会自动创建一个100Word的数组BSR_SDModel[100],可以把某条训练命令的特征模型数据导出到这个数组中
BSR_ImportSDWord(intCommandID);可以把BSR_SDModel数组中的数据导入为某条语音命令的特征模型
unsignedintBSR_SDModel[];配合BSR_ExportSDWord(intCommandID)与BSR_ImportSDWord(intCommandID)函数使用,此数组的作用相当于一个暂时的存储区
SACM_480采用混合编码方式,压缩比比较大,存储容量大,音质介于A2000和S240之间,适用于语音播放,如电子词典词库等,所以本文采用了该算法,以下就SACM_480算法具体介绍其API函数的格式、功能、参数、返回值、备注。
其相关API函数如下所示:
1)API格式[2]:
C:
intSACM_S480_Initial(intInit_Index)
ASM:
R1=[Init_Index]
CallF_SACM_S480_Initial
功能说明:
SACM_480语音播放之前的初始化。
参数:
Init_Index=0:
手动方式Init_Index=1:
自动方式。
返回值:
0:
语音模块初始化失败。
1:
语音模块初始化成功。
备注:
该函数用于对定时器、中断和DAC等的初始化。
2)API格式[2]:
C:
voidSACM_S480_ServiceLoop(void)
ASM:
CallF_SACM_S480_ServiceLoop
功能说明:
从资源中获取SACM_S480语音资料,并将其填入解码队列中。
参数:
无
返回值:
无
备注:
播放语音文件中数据,当出现FFFFFFH数据时便停止播放。
3)API格式[2]:
C:
intSACM_S480_Play(intSpeech_Index,intChannel,intRamp_Set)
ASM:
R1=[Speech_Index]
R2=[Channel]
R3=[Ramp_Set]
CallSACM_S480_Play
功能说明:
播放资源中SACM_480语音。
参数:
Speech_Index:
语音索引号。
Channel:
1.通过DAC1通道播放。
2.通过DAC2通道播放。
3.通过DAC1和DAC2双通道播放。
Ramp_Set:
0.禁止音量增/减调节。
1.仅允许音量增调节。
2.仅允许音量减调节。
3.允许音量增/减调节。
返回值:
无
备注:
⑴SACM_S480的数据率有4.8Kbps\7.2Kbps两种,可在同一模块的几种算法中自动选择一种。
⑵Speech_Index是定义在resource.inc文件中资源表的偏移地址。
⑶中断服务子程序中F_FIQ_Service_SACM_S480必须放在TMA_FIQ中断向量上。
4)API格式[2]:
ASM:
CallF_FIQ_Service_SACM_S480
功能说明:
用作SACM_S480语音背景程序的中断服务子程序。
通过前台子程序(自动方式的SACM_S480_ServiceLoop及手动方式SACM_S480_Decode)进行语音信息编码,然后将其送入DAC通道播放。
参数:
无
返回值:
无
备注:
SACM_S480语音背景子程序只有汇编指令形式,且应该将此子程序安置
在TMA_FIQ中断源上。
3系统总体设计方案
用61板来控制机器人,使用了I0B7-IOB15资源,另外使用了扬声器,参看图3-1,如下:
图3-1系统的总体框图
61板与机器人连接图,参看图3-2,如下:
图3-261板与机器人连接图
系统主要由61板与机器人驱动电路组成。
整个系统的主控板是61板,用来驱动电路驱动电机。
在主控板61板的控制下完成跳两首舞曲、走步、转向、转头、发射飞盘等动作。
另外为了使机器人智能化,增添了特定人语音识别的功能,通过各种命令的使用来操作机器人。
4系统的硬件设计
4.1SPCE061A最小系统
SPCE061A最小系统中,含有SPCE061A芯片外围的基本模块,其主要由晶体输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等组成,参看图4-1。
在OSC32O、OSC32I端口接上晶体振荡器和谐振电容,在VCOIN端口接上相对应的电容和电阻后即可工作。
在其他不用的VDD端口和GND端口也不能悬空应该接上0.1uF的耦合电容以提高抗干扰能力。
图4-1SPCE061A最小系统
4.2SPCE061A的时钟
凌阳16位SPCE061A单片机最高CPU时钟频率(CPUCLK)可达到49.152MHz,为数字信号处理奠定了坚实的基础。
而取得CPU时钟频率(CPUCLK)的过程大致可分为三个阶段。
第一阶段,先通过晶体振荡电路得到了一个32768Hz的实时频率(RTC)。
第二阶段,锁相环对实时频率(RTC)进行倍频,得到系统时钟频率Fosc。
第三阶段,对系统时钟频率Fosc进行分频,最终得到CPU时钟频率(CPUCLK)。
其过程参看图4-2,如下:
图4-2SPCE061A的时钟
4.2.1时钟电路
日常生活中的钟表、实时时钟延时以及其他与时间相关产品所采用的是32768Hz的实时时钟。
在SPCE061A时钟电路中使用的是晶体振荡器,采用频率为32768Hz外接晶体,SPCE061A时钟电路的连线图可参看图4-3。
图4-3SPCE061A时钟电路连接图
4.2.2锁相环
锁相环(PhaseLockLoop)是将32768Hz的实时时钟(RTC)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz的系统时钟Fosc参看图4-4,如下:
图4-4PLL倍频电路框图
SPCE061A片内集成了PLL电路,要使芯片内PLL电路正常工作只需外接简单的电路即可,参看图4-5,如下:
图4-5PLL外围电路
4.2.3系统时钟
将经过PLL电路倍频得到的系统时钟频率Fosc,对其分频便可得到CPU时钟频率(CPUCLK),参看图4-6。
可以通过对P_SystemClock单元的编程完成对系统时钟频率Fosc和CPU时钟频率(CPUCLK)的定义。
32768HzRTC振荡器有两种工作方式[3]:
强振模式和自动弱振模式。
处于强振模式时,RTC振荡器始终运行在高耗能的状态下。
处于自动弱振模式时,系统在上电复位(poweronreset)后的前7.5秒内处于强振模式,然后自动切换到弱振模式以降低功耗。
图4-6分频电路框图
在SPCE061A内,P_SystemClock单元(参看表4·1)控制着系统时钟频率Fosc和CPU时钟频率(CPUCLK)。
第0~2位用来控制CPUCLK(参看表4·2)。
第5~7位用来控制Fosc(参看表4·3)。
Fosc的预设值为24.576MHz,上电复位或系统从备用状态(睡眠状态)被唤醒后,CPUCLK的预设值为Fosc/8。
另外,在睡眠状态(即b2~b0同时被置为1)下,通过设置该单元的第4位可以打开或关闭32768Hz实时时钟。
表4·1设置P_SystemClock单元[3]
b15-b8
b7-b5
b4
b3
b2
b1
b0
---
PLL频率选择
32768Hz睡眠状态
32768Hz方式选择
CPU时钟选择
1:
在睡眠状态下,32768Hz时钟仍处于工作状态(预设)
0:
在睡眠状态下,32768Hz时钟被关闭
1:
32768Hz时钟处于强振模式
0:
327
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 识别 机器人 设计 毕业论文