机械人的语音识别技术.docx
《机械人的语音识别技术.docx》由会员分享,可在线阅读,更多相关《机械人的语音识别技术.docx(23页珍藏版)》请在冰豆网上搜索。
机械人的语音识别技术
机械人的语音识别技术
摘要
1897年,M•G•马可尼所完成的无线通信实验就是在固定站与一艘拖船之间进行的,距离为為海里。
标志着通信进入了一个新的时期,随着社会的进步,科技进展也日趋兴盛起来。
电于技术和智能自动化的进展更是为人们的日常生活和工业生产提供了极大的方便。
人们能够通过一系列的信息传递来直接或间接的控制机械的运转。
让机械能够听懂人类的语言而且能够依照人的口头命令行动,从而实现人际交流一直以来都是人类的一个梦想。
本文所研究的机械人语音识别和控制,对于服务于机械人的应用领域具有重要的现实意义。
通过单片性能够很方便的实现语音控制技术,本次设计是利用凌阳单片机SPCE061A的语音识别控制特性,按照语音识别的大体原理,对智能机械人进行语音控制,使其按照人的指令做出左转、右转、前进、后退、跳舞、发射飞碟等相应的动作。
由于材料等各方面的限制,只能以理论的形式出现。
关键词:
语音识别,语音控制(嵌入式语音的识别技术),智
能机械人,语音紧缩算法
1绪论.3
本次课题的由来
设计目的及任务及设计理念
声控机械人的进展前景
整体方案的计划
2嵌入式语音的识别技术11
模式匹配原理的引入
语音识别技术总括
3软件设计.20
主程序的设计
语音紧缩算法的研究
关键模块的设计
4功能的实现..29
机械人预想功能的整体实现
5设计总结.30
1绪论
设计课题由来
单片机在现实生活中愈来愈多的被应用于工业生产和生活娱乐
当中。
自从人类能够利用机械以来,就有一个梦想,那就是能够与机械人进行语言交流,让机械人依照人的指令去完成相应的操作。
语音识别技术就是让机械人通过语音识别把语音信号转变成相应的文木或命令的高新技术。
语音识别技术所涉及的领域包括:
信号处置、模式识别、概率论和信息论、发声机理和人工智能等等。
都属于电子信息专业的大体课程。
随着社会的进步和日趋进展,智能自动化系统逐渐被应用到服务行业。
于是“机械人”也就应运而生了,可是此刻机械人的进展还处在一个不成熟的阶段,它还不能象人们想象的那样做出各类各样的动作来服务于人类。
随着社会的进展,人们的物质文化生活水平也有了较大的提高,为了知足人们愈来愈高的要求,机械人的深切和普及也愈来愈受到人们的关注。
人有五官,机械人的视觉一一电子摄象已经随着安全防护的进展有了必然的进展,平常咱们在楼宇监控系统能够看到简单的机械人视觉系统(电子摄象及处置),数码相机等。
声音的控制除咱们平常所碰到的声控灯,咱们很难再找到别的。
语音一一这种人类最简单、最自然、最方便和最有效的互换信息的方式,在机械人上的应用还较少。
基于单片机和外围接口技术,咱们能够大致画出语音控制的大体框图。
屮央处理系统
S7
图最原始的机械人语音控制
用语音控制来操作机械人代替烦琐的键盘输入。
和机械通话实现人机对话是十分诱人的,具有广漠的进展前景,是机械人人工智能的重要
扌小志O
图改良的机械人语音识别框图
设计的目的及任务
咱们想象中的理想机械人应该是能够象人类一样听懂自然语言,能够在燥声情形下,必然的频率范围内。
语言是由不同的人的声带所发出的,人们辨别它主如果通过声波的变换来判断的,这就是咱们平常所说的音变。
如此就使大体模型的音界变的不甚明确,于是在明确的电脑语言处置下就变的比较困难。
在人们普通的对话中,有时候人类自己也很难辨别对方模糊的语音,不同的词语听起来会超级相似,这就是咱们平常所说的语音的模糊性。
在语音的控制方而,第一要对燥声环境,非特定人,语音模糊和音变等一系列事实的困难进行过滤和处置,这就需要大量的数据处置,如此分派给听觉的时刻就超级有限。
于是普通的单片机就不能专门好的知足如此一系列复杂的要求,这就需要在已有语音识别技术的研究基础上,配合功能壮大的凌阳16位单片机SPCE061A,对机械人的语音识别和特定命令对应行为能力的结合进行实现,是一个实践性和操作性要求较强的实用性课题。
机械人语音识别是语音识别在机械人领域的应用,它的最终目的是让机械人听懂人们口述的语言,进而对口述语言中包括的要求或询问做岀正确的动作反映或语言反映,从而形成一个良好的,自然的“人机通信系统”。
以进一步推动服务机械人的进展和应用。
因此,研究机械人的语音识别,
对于服务机械人的普及与应用意义重大。
未来科技的进展趋势是在以人为木的前提下,更多地实现机械设备的自动化和智能化,让机械为人服务,代替人们进行繁重的体力劳动和高危险工程。
借助机械之力进行社会建设已经成了一个必然的选择。
随之而来的进展与和谐生活的命题必然会将人机交流的重要性提到一个新的高度,成为服务型机械人投入社会的关键所在。
设计理念:
在整个设计进程中,咱们本着一切向能实现理想机械人的方向靠拢。
可是木次设计还缺乏必然的实践。
声控机械人的进展前景
机械人是多学科交叉的产物,集成了运动学与动力学、机械设计与制造、运算机硬件与软件、控制与传感器、模式识别与人工智能等学科领域的先进理论与技术。
同时,它又是一类典型的自动化机械,是专用自动机械、数控机械的延伸与进展。
当前,社会需求和技术进步都对机械人向智能化进展提出了新的要求。
语音信号处置技术就是利用数字信号处置技术对于因信号进行处置,处置的目的利用取得的某些参数进行高效传输、存储、语音增强、语音合成和语音识别。
我国的语音识别系统的研究起步比较晚,可是也取得了专门好的成绩,研究水平也从实验室慢慢走向实用,从1987年开始执行国家863计划后,国家863智能运算机专家组为语音识别技术研究专门理想,每两年转动一次。
我国PC机语音识别技术的研究水平己经大体上与国外同步,在汉语语音识别技术上还有自己的特点和优势,可是独立开发的专用汉语语音识别芯片仍是较少,多数都是与国外研究机构合作开发研制的。
能够说,语音识别的研究已经取得了全世界范围的重视,是引领未来科学进展方向的关键技术之一。
因此,研究机械人的语音识别,开发实用的机械人语音识别系统,对于服务机械人的普及与应用意义重大。
整体方案的计划
木课题是基于SPCE061A的智能机械人语音识别的实现,最终目的是形成一个较好的人机交流环境,使机械人能够听懂通过训练的人的口头命令,并能够依照命令进行相应的动作。
由多带通滤波器及现行匹配电路组成的专用ICo专用IC是以8位或16位单片机为计算核心,外加A/D转换,D/A转换及存储器。
由DSP组成的语音识别系统,一般由定点16位DSP,外加A/D转换,D/A转换,和ROM、RAM、FALSH等存储器组成。
由人工神经网络组成的语音识别专用芯片。
SOC是将MCU或DSP、A/D、D/A、RAM、ROM和预放、功放等电路集成在一个芯片上,只要加上极少的电源供电等外围电路,就可以够实现语音识别、语音合成及语音回放等功能。
SPCE061A是一种集成度很高的单片机,它将MCU、A/D、D/A、RAM、ROM集成在一块芯片上,同时具有16*16位的乘法运算和内积运算功能,CPU最高时钟频率可达到49MHz*
木课题的主要实现进程是:
外部语音命令通过转换装置输入到系统内部,通过语音识别程序的处置转化为机械人可识别的触发命令然后触发相应子程序进行相关动作。
动作的实现方式是:
凌阳61板向控制不同端口送高低电平以控制置于机械人内部不同位置的电机的运转,挪用延时,按照需要使各个部份电机彼此配合,完成要求的动作,从而实现机械人的语音控制。
木设计综合考虑SPCE061A单片机的特性和机械人行动模式来进行设计,具体模块如图所示。
整个设计分为主控模块、语音模块、电机模块等,各个模块别离完成,然后进行结合,实现机械人的语音识别。
具体进程是:
第一进行机械人的语音训练,咱们这次设计采用的是特定人语音识别,每一个命令发布者都必需在发布命令之前对机械人进行命令的语音训练。
如此做有一个益处,非特定人不能命令机械人进行动作。
整个硬件设计部份以维持机械人外部灵活性为前提,在机械人各个部份内置电机,利用三极管的通断特性来设计电路,完成硬件电路的设计和组装。
具体电路如下:
左右腿、脖子电机驱动模块(摘抄)
加速及发射电机
VCC
MOTOR
输入/输出接口
嵌入式语音的识别技术
模式匹配原理的引入
嵌入式语音识别系统都采用了模式匹配的原理,语音识别一般分为两个步骤。
第一步是系统“学习”或“训练”阶段。
这一阶段的任务是成立识别大体单元的声学模型和进行文法分析的语言模型,即构建参考模式库。
第二是“识别”或“测试”阶段。
按照识别系统的类型选择能够知足要求的一种识别方式,采用语音分析方式分析岀这种识别方式所需求的语音特征参数,依照必然的准则和测度与参考模式的模型进行比较,通过裁决得出结果。
库
特征提取
通过预处置后的语音信号,要对其进行特征提取,即特征参数分析。
该进程就是从原始语音信号中抽取能够反映语音木质的特征参数,形成特征矢量序列。
目前语音识别所用的特征参数主要有两种类型:
线性预测倒谱系数(LPCC)和美尔频标倒谱系数(MFCC)。
LPCC系数主要模拟人的发声模型,为考虑人耳的听觉特性。
它对元音有较好的描述能力,而对辅音描述能力差。
其长处是计算量小,比较完全地去掉了语音产生进程中的鼓励信息,易于实现。
MFCC系数考虑到了人听觉特性,并具有很高的抗噪声能力,但因为提取MFCC参数要在频域处置,计算傅立叶变换将花费大量宝贵的计算资源。
因此,嵌入式语音识别系统中一般都选用LPCC系数。
语音特征提取是分帧提取的,每帧特征参数一般组成一个矢量,因此,语音特征是一个矢量序列。
该序列的数据率一般可能太高,不便于其后的进一步处置,为此,有必要采用很有效的数据紧缩技术方式对数据进行紧缩。
矢量量化就是一种专门好的数据紧缩技术。
参考模式库
参考模式库是将一个或多个说话者的多次重复的语音参数通过训练取得的。
它是声学参数模板。
成立参考模式库是在系统利用前取得并存储起来的。
参考模式库的成立进程称为训练进程。
模式匹配
模式匹配是将输入的待识别的语音特征参数同训练取得的参考语音模式进行一一比较分析,取得最优匹配的参考模式即是识别结果。
目前常常利用的语音识别算法主要有:
动态时刻规整(DTW)、隐马尔可夫(HMM)理论、矢量量化(VQ)技术。
语音信号识别技术
语音识别的进程就是将用麦克风或电话捕捉到的声波信号转化成一组词语的进程。
被准确识别的词语可以得出最后的结果,进入响应,如指挥与控制系统,数据输入和文件的预备工作。
也能够作为输入,为进一步的语言加工服务,以达到发言被理解的目的。
矢量量化的大体原理
将若干个标量数搦组成一个矢量(或是从一帧语音数据中提取的特征矢量)在多维空间给与整体量化,从而能够在信息量损失较小的情形下紧缩数据量。
矢虽:
量化有效地应用了矢疑中%元素之间的相关性,因此能够比标量量化有更好的紧缩效果。
当给矢量量化器输入一个任意矢量形€卅进行矢量量化时,矢量量化器第一判断它属于哪个子空间的代表矢量打・。
也就是说,矢量量化进程就是用Y}代表X,的进程,或说把X,量化成了与Y。
Yj=Q(XN5j5JgSN
式中,e(x,)——量化器函数。
矢量量化器和码书的设计
矢量量化器和码书设计方式是采用递推算法,那个算法就是LBG算法。
整个算法实际上就是最佳设计和最佳码书两个条件的反复迭代进程,即由初始码书寻觅最佳码书的迭代进程。
它从对初始码书进行迭代优化开始,一直到系统性能知足要求或再也不有明显的改良为止。
隐马尔可夫模型
隐马尔可夫模型(HiddenMarkovModels,简称为HMM),作为语音信号的一种统计模型,今天正在语音处置的各个领域中取得普遍的应用。
大约100年前,数学家和工程师们就已经明白马尔可夫链了。
可是,只是在近三十几年里,它才被用到语音信号处置中来,其主要原因在于那时缺乏一种能使该模型参数与语音信号处置达到最佳匹配的有效方式。
直到20世纪60年代后期,才有人提出了这种匹配方式,而有关它的理论基础,是在1970年前后由Baum等人成立起来的,随后由CMU的Baker和IBM的Jelinek等人将其应用到语音识别当中。
由于Bell实验室Rabiner等人在20世纪80年代中期对HMM的深切浅出的介绍,才逐渐使HMM为世界各国从事语音信号处置的研究人员所了解和熟悉,进而成为公认的一个研究热点。
近几十年来,隐马尔可夫模型技术无论是在理论上或是实践上都有许多进展。
其大体理论和各类实用算法是现代语音识别等的重要基础之一。
HMM的大体参数
对于语音识别,HMM能够用下而六个模型参数来概念,即:
M={S,0,A,Bn,F}
S:
模型中状态的有限集合,即模型由几个状态组成。
设有N个状态,S={S,i二1,2,…,N}。
记t时刻模型所处状态为5,,显然耳丘(厲,…,几)。
0:
输出的观测值符号的集合,即每一个状态对应的可能的观察值数量。
记M个观察值为0“…,0-记t时刻观察到的观察值为0八其中otu(0|,…,0“)。
A:
状态转移概率的集合。
所有转移概率能够组成一个转移概率矩
阵,即:
ai\ain
A二・・・・・・
an\ann
其中知是从状态Si到状态Sj转移时的转移概率,lWi,jWN且有0W呦W1,工aij=1o
B:
输岀观测值概率的集合°B={切(k)},其中如(k)是从状态5,到状态耳转移时观测值符号k的输岀概率。
按照B可将HMM分为持续型HMM和离散型HMM等。
为®伙)=1(离散型HMM)
k
jxbjj(k)dk=1(持续型HMM)
开:
系统初始状态概率的集合,兀={街},碣表示初始状态是耳的概率,即:
£=P[S]=q],(lGMN)工©T
F:
系统终了状态的集合。
这里需要说明的是,严格地说Markov模型是没有终了状态的,只是在语音识别里用的Markov模型要设定终了状态。
如此,能够记一个HMM为M二{S,0,A,B,n,F},为了便于表示,常常利用下面的形式表示一个HW,即简写为M二{A,B,兀}。
所以形象地说,HMM能够分为两部份,一个是Markov链,由n、A描述,产生的输出为状态序列。
另一个是一个随机进程,由B描述,产生的输出为观察值序列,T为观察值时刻长度。
隐马尔可夫模型的大体算法
欲使所成立的HMM对于实际应用有效,下面三个问题必需加以解决:
(1)识别问题:
给定观察符号序列0二ol,o2,・・・,oT和模型M二{A,B,n},如何快速有效地计算观察符号序列的输出概率P(O|M);
(2)寻觅与给定观察字符序列对应的最佳的状态序列:
给定观察字符号序列和输出该符号序列的模型M二{A,B,兀},如何有效地肯定与之对应的最佳的状态序列。
即估量岀模型产生观察字符号序列时最有可能通过的路径。
它能够被以为是所有可能的路径中,概率最大的路径。
这种算法的指导思想就是概率最大的路径是最有可能通过的路径,即最佳的状态序列路径;
(3)模型训练问题:
实际上是一个模型参数估量问题,即对于初始模型和给定用于训练的观察符号序列0二ol,。
2,…,oT如何调整模型M二{A,B,兀}的参数,使得输出概率P(0M)最大网。
下面结合讨论这三个问题的解法,介绍HMM的大体算法。
前向■•后向算法
前向-后向算法(Forward-Backward,简称为F~B算法)是用来计算给定一个观察值序列0二ol,。
2,…,oT和一个模型M={A,B,兀}时,由模型M产生出0的概率P(0M)的。
设S1是初始状态,
SN是终了状态,则前向-后向算法能够介绍如下:
1.前向算法
前向算法即按输出观察值序列的时刻,之前向后递推计算输岀概
率。
第一说明下列符号的概念:
0=ol,o2»…,oT
输岀的观察符号序列
P(0|M)
给定模型M时,输出符号序列0的概率
aij
从状态Sj到状态Sj的转移概率
big)
从状态S,到状态Sj发生转移时输岀o,的概率
40)
输出部分符号序列ol,o2,-,ot并且到达状态S)的
概率,即前向概率
由上面符号的概念,则40)可由下而的递推公式计算取得:
(1)初始化陽
(1)=1,^(;)=0()/1)
(2)递推公式吗(丿')=工%(恥心©)(t二1,2,…,T;
i,j=l,2,…,N)
(3)最后结果P(O|M)=吟(N)
t时刻的勺(刀等于t-1时刻的所有状态的g(処b")之和,固然若是当状态S:
到状态S畀殳有转移时s=0o如此在t时刻对所有状态©(j二1,2,…,N)的吐力都计算一次,则每一个状态的前向概率都更新了一次,然后进入t+1时刻的递推动程。
2.后向算法
与前向算法类似,后向算法即按输出观察值序列的时刻,从后向
前递推计算出概率的方式。
第一说明下列符号的概念:
0=ol,o2,…,oT
输出的观察符号序列
P(O|M)
给定模型M时,输岀符号序列0的概率
勺
从状态S,到状态S)的转移概率
爲@)
从状态S,到状态Sj发生转移时输出ot
的概率
0卫)
从状态S’.开始到状态S”结束输出部分符号序列ot+1,ot+2,…,oT的概率,即后向概率。
A⑴可由下面的递推公式计算取得:
(1)初始化q(n)=i,07U)=o("n)
(2)递推公式A(0=2阳(jgbij(q+J
(t=T,T+l,…,1;i,j二1,2,…,N)
(3)最后结果P(0M)=±0&)隔=炕
(1)
/-I
按照概念的前向和后向概率,有如下关系成立:
P(OM)二££4(恥岛©+J阳(丿),1GST-1
r-1;-1
维特比(Viterbi)算法
如何有效地肯定与之对应的最佳的状态序列。
这能够由另一个HMM的大体算法Viterbi算法来解决。
Viterbi算法解决了给定一个观察值序列。
二即乞,…®和一个模型M二{A,B,n}时,在最佳意义上肯定一个状态序列Sr”?
...宀的问题。
这里讨论的最佳意义上的状态序列,是指使P(S,0/M)最大时肯定的状态序列。
即HMM输出一个观察值序列O=og,...,a时,可能通过的状态序列Sr”%…肠路径有多种,这里而使输出概率最大的状态序列就是咱们的所求。
Viterbi算法能够叙述如下:
(1)初始化°;)
(1)=丿J=0(jHl)
(2)递推公式at(j)=maxat_{(j)q旳丿(q)(t二1,2,…,T;
i,j二1,2,…,N)
(3)最后结果几卫,0/必)=钟)
在那个递推公式中,每一次使久力最大的状态i组成的状态就是所求的最佳状态序列。
所以利用Viterbi算法求取最佳状态序列的步骤如下:
(1)给每一个状态预备一个数组变量煮丿),初始化时令初始状态S1的数组变量兔⑴为1,其他状态的数组心力为0;
(2)按照t时刻输出的观察符号ot计算
«;(;)=max
=rnaxfa;.!
⑴®九(q),%⑵仙仇j9),…,ai-i(N)伽如@)}
(j二1,2,…,N)
当状态S,到状态S,没有转移时勺=0;设计一个符号数组变量,称为最佳状态序列寄放器,利用那个最佳状态序列寄放器把每一次使①(刀最大的状态i保留下来;
(3)tHT时转移到
(2),不然执行(4);
(4)把这时的终了状态寄放器幻⑴)内的值掏出,贝山
Pmax(S,O/M)=ar(N)
输出最佳状态序列寄放器的值,即为所求
的最佳状态序列。
软件设计
主程序的设计
语音识别系统功能的实现大部份是由软件来完成的。
因此,语音
识别系统的软件设计是十分复杂的。
木次程序的设计是依托c语言
和汇编语言一路完成的
主程序流程图。
在主程序中开始是对RAM存储器进行清除,这为
寄存提取的语音信号的特征矢量和模板库做预备。
播放第一条提示音是为了提示用户系统的语音训练己启动,此刻能够进行训练。
训练第
-是此系统的触发名称,即系统的名字。
接下来就是依次对各条命令
进行训练。
在训练进程中,如训练成功,则有语音提示进行下一条的训练:
如出现训练失败也会提示用户继续训练此条语音。
直到全数命令训练完毕后,系统将预备进行语音识别。
识别初始化是肯定语音输入来源于A/D转换器的MIC通道。
播放开始识别的提示音是为了让用户明确此刻能够向系统下达命令了。
系统接到命令后就开始进行识别,如识别成功,则系统会按命令执行,如识别失败,系统也会通过语音提示用户。
系统的主程序是依托挪用各子程序来完成的,而系统的子程序主要有语音训练程序、语音识别程序、语音播放程序及机械人运动程序。
其中语音部份主要依托语音紧缩程序来完成。
语音紧缩算法的研究
紧缩编码的目的是通过对资料的紧缩,达到高效率存储和转换资料的结果,即在保证必然声音质量的条件下,以最小的资料率来表达和传送声音信息。
紧缩编码是必要的,实际应用中,未经紧缩编码的音频资料量专门大,直接进行传播或存储是不现实的,所以要通过对信号趋势的预测和冗余信息处置,进行资料的紧缩,如此就可以够利用较少的资源成立更多的信息。
常常利用的紧缩编码有波形编码、参数编码和混合编码。
用于SPCE系列芯片语音功能的语音紧缩与解紧缩算法有SACM_A2000,SACM_S480,和SACM_S240,其对应的语音紧缩编码率类型别离为16Kb/s,20Kb/s,24Kb/s;418Kb/s,712Kb/s;214Kb/s。
木设计用到的紧缩算法有SACM_A2000和SACM_S480。
SACM_A2000算法
SACM_A2000属于波形编码,该紧缩算法紧缩比较小(8:
1),所以具有高质量、高码率的特点,适用于高保真音乐和语音。
SACM_S480算法
SACM_S480属于混合编码,该紧缩算法紧缩比较大,为80:
3,其存储容量大,音质介于A2000和S240之间,适用于语音播放。
此算法具体实现进程如下:
在PC机上录好提示语音,经紧缩工具紧缩处置后存储到单片机
ROM里,SPCE061A将提示语音解紧缩后送D/A还原语音,提示操作结果。
采用SACM(SunplusAudioCodingmethod,音频编码算法)将PC机上己录制的8K,16位音频文件紧缩为二进制文件,再加入用户程序,存储在程序存储器中,播放时将其解紧缩,并以8K的频率送D/A还原作声音。
N
播放完成
Y
语音播放程序包括播放程序和中断服务程序。
播放程序初始化
A/D,按时器TimerA和音量,从ROM里掏岀预先紧缩好的语音数据,解紧缩后存在播放队列里。
中断服务程序按时地从播放序列中读数据,送D/A转换后驱动喇叭发音。
播放程序如下:
SACM_S480_Initial(Init_Index);〃初始化A/D,Timer,
SACM_S480_Vo1ume(Volumn_Index);〃初始化音量
SACM_S480_Play(Speech_Index,Channel,Ramp_Set);//播放一条语音
while((SACM_S480_Status()&0x0001)=1)
主播放函数SACM_