于基语音识别的智能小车设计毕业设计.docx
《于基语音识别的智能小车设计毕业设计.docx》由会员分享,可在线阅读,更多相关《于基语音识别的智能小车设计毕业设计.docx(30页珍藏版)》请在冰豆网上搜索。
于基语音识别的智能小车设计毕业设计
基于语音识别的智能小车
摘 要
随着计算机技术、模式识别和信号处理技术及声学技术等的发展,使得能满足各种需要的语音识别系统的实现成为可能。
近二三十年来,语音识别在计算机、信息处理、通信与电子系统、自动控制等领域中有着越来越广泛的应用。
本设计是语音识别在控制领域的一个很好实现,它将原本需要手工操作的工作用语音来方便地完成。
语音识别按说话人的讲话方式可分为孤立词(IsolatedWord)识别、连接词(ConnectedWord)识别和连续语音(ContinuousSpeech)识别。
从识别对象的类型来看,语音识别可以分为特定人(SpeakerDependent)语音识别和非特定人(SpeakerIndependent)语音识别。
本设计采用的识别类型是特定人孤立词语音识别。
本系统分上位机和下位机两大方面。
上位机利用PC上MATLAB强大的数学计算能力,进行语音输入、端点监测、特征参数提取、匹配、串口控制等工作,根据识别到的不同语音通过PC串口向下位机发送不同的指令。
下位机是单片机控制的一个小车,单片机收到上位机传来的指令后,根据不同的指令控制小车完成不同的动作。
该设计对语音识别的现有算法进行了验证和实现,并对端点检测和匹配算法进行了些许改进。
本设计达到了预期目标,实现了所期望的功能效果。
关键词:
MATLAB,语音识别,端点检测,LPC,单片机,电机控制
SMARTCARGASEDSPEECHRECOGNITION
ABSTRACT
Withthedevelopmentofcomputertechnology,patternrecognition,signalprocessingtechnologyandacoustictechnologyetc,thespeechrecognitionsystemthatcanmeetthevariousneedsofpeopleismorepossibletoachieve.Thepastthreedecades,thevoicerecognitioninthefieldofcomputer,informationprocessing,communicationsandelectronicsystems,automaticcontrolhasincreasinglywiderangeofapplications.
Speechrecognitionbythespeaker'sspeechcanbedividedintoisolatedword(IsolatedWord)identification,conjunctions(ConnectedWord)andcontinuousspeechrecognition(ContinuousSpeech)identification.Identifyingthetypeofobjectfromthepointofview,thevoicerecognitioncanbedividedintoaspecificperson(SpeakerDependent)speechrecognitionandnon-specific(SpeakerIndependent)speechrecognition.Thisdesignusestheidentificationtypeisaspecificpersonisolatedwordspeechrecognition.
Thisdesignisofagoodimplementationofspeechrecognitioninthecontrolfield,itdoestheworkthatwouldotherwiserequiremanualoperationbythevoiceofpeopleeasily.Thissystemincludestwomajoraspects:
thehostsystemandtheslavesystem.ThehostsystemusetheMATLABonthecomputerwhichhaspowerfulmathematicalcomputingabilitytodotheworkofvoiceinput,endpointmonitoring,featureextraction,matching,identificationandserialcontrol,thenitsenddifferentcommandsthroughthePCserialporttoslavesystemaccordingdifferentrecognisedvoice.Theslavesystemisacarcontrolledbyasingle-chipmicro-controller.Itcontrolsthecardodifferentactionsaccordingdifferentinstructionsreceived.
ThedesignischeckingandrealizationoftheexistingspeechrecognitionalgorithmandItheendpointdetectionandmatchingalgorithmswereslightimproved.Thisdesignachievedtheexpectedgoalsandachievedthedesiredfunctionaleffect.
KEYWORDS:
MATLAB,SpeechRecognition,ExtremePointsTest,LPC,ChipMicrocomputer,MotorDrive
目 录
前 言
随着计算机技术、模式识别和信号处理技术及声学技术等的发展,使得能满足各种需要的语音识别系统的实现成为可能。
近二三十年来,语音识别在计算机、信息处理、通信与电子系统、自动控制等领域中有着越来越广泛的应用。
语音命令控制可广泛用于家电语音遥控、玩具、智能仪器及移动电话等便携设备中。
使用语音作为人机交互的途径对于使用者来说是最自然的一种方式,同时设备的小型化也要求省略键盘以节省体积。
当今,语音识别产品在人机交互应用中已经占到越来越大的比例。
语音识别按说话人的讲话方式可分为孤立词(IsolatedWord)识别、连接词(ConnectedWord)识别和连续语音(ContinuousSpeech)识别。
孤立词识别是指说话人每次只说一个词或短语,每个词或短语在词汇表中都算作一个词条,一般用在语音电话拨号系统中。
连接词语音识别支持一个小的语法网络,其内部形成一个状态机,可以实现电话语音查询、航空定票等系统。
连续语音识别是指对说话人以日常自然的方式发音,通常特指用于语音录入的听写机。
从识别对象的类型来看,语音识别可以分为特定人(SpeakerDependent)语音识别和非特定人(SpeakerIndependent)语音识别。
特定人是指只针对一个用户的语音识别,非特定人则可用于不同的用户。
实际上,非特定人语音识别的初始识别率往往都比较低,一般都要求用户花一定的时间对系统进行训练,将系统的参数进行一定的自适应调整,才能使识别率达到满意的程度。
本设计采用的识别类型是特定人孤立词语音识别。
本设计是语音识别在控制领域的一个很好实现,它将原本需要手工操作的工作用语音来方便地完成。
本系统分上位机和下位机两大方面。
上位机利用PC上MATLAB强大的数学计算能力,进行语音输入、端点监测、特征参数提取、匹配、串口控制等工作,根据识别到的不同语音通过PC串口向下位机发送不同的指令。
下位机是单片机控制的一个小车,单片机收到上位机传来的指令后,很据不同的指令控制小车完成不同的动作。
该设计对语音识别的现有算法进行了验证和实现,并对端点检测和匹配算法进行了些许改进。
为了更方便的进行上位机的操作,本设计用MATLAB的GUI设计了一个图形界面。
上面设置了串口选择框、录音开始按钮、语音识别结果框等。
下位机采用STC2C5A60S2单片机作为控制中心,采用L298专用驱动芯片搭建双桥,进行点击的正反转调速等控制。
本设计达到了预期目标,实现了所期望的功能效果。
第1章系统总体设计方案介绍
本系统分上位机和下位机两大方面。
上位机利用PC上MATLAB强大的数学计算能力,进行语音的输入、端点监测、特征参数提取、匹配、识别、串口控制等工作,根据识别到的不同语音通过PC串口向下位机发送不同的指令。
下位机是单片机控制的一个小车,单片机收到上位机传来的指令后,很据不同的指令控制小车完成不同的动作。
PC机和小车之间通过串口无线传输模块进行数据传输。
总体框图如图1-1所示:
PC机(语音识别)
无线发射
语音输入
电机
单片机控制中心
驱动电路
无线接收
图1-1系统总体框图
第2章上位机设计
上位负责语音的识别,并根据识别到的不同结果向下位机(小车)发送不同的指令。
上位机的设计基于MATLAB平台,利用MATLAB强大的数学计算能力,进行语音的输入、预处理、端点监测、特征参数提取、匹配、识别、串口控制等工作。
§2.1语音识别简介
§2.1.1语音识别发展
随着时代的发展,人们越来越注重生活的品质。
便捷时尚成为当代人们的追求目标。
随着计算机技术、模式识别和信号处理技术及声学技术等的发展,使得能满足各种需要的语音识别系统的实现成为可能。
近二三十年来,语音识别在计算机、信息处理、通信与电子系统、自动控制等领域中有着越来越广泛的应用。
语音命令控制可广泛用于家电语音遥控、玩具、智能仪器及移动电话等便携设备中。
使用语音作为人机交互的途径对于使用者来说是最自然的一种方式,同时设备的小型化也要求省略键盘以节省体积。
当今,语音识别产品在人机交互应用中已经占到越来越大的比例。
§2.1.2语音识别的分类
语音识别按说话人的讲话方式可分为孤立词(IsolatedWord)识别、连接词(ConnectedWord)识别和连续语音(ContinuousSpeech)识别。
孤立词识别是指说话人每次只说一个词或短语,每个词或短语在词汇表中都算作一个词条,一般用在语音电话拨号系统中。
连接词语音识别支持一个小的语法网络,其内部形成一个状态机,可以实现简单的家用电器的控制,而复杂的连接词语音识别系统可以用于电话语音查询、航空定票等系统。
连续语音识别是指对说话人以日常自然的方式发音,通常特指用于语音录入的听写机。
显然,连续非特定人语音识别的难度要大得多,因为不仅有说话人口音的问题,还有协同发音、断字断句、搜索等问题,除了考虑语音的声学模型外还要涉及到语言模型,如构词法、文法等。
从识别对象的类型来看,语音识别可以分为特定人(SpeakerDependent)语音识别和非特定人(SpeakerIndependent)语音识别。
特定人是指只针对一个用户的语音识别,非特定人则可用于不同的用户。
实际上,非特定人语音识别的初始识别率往往都比较低,一般都要求用户花一定的时间对系统进行训练,将系统的参数进行一定的自适应调整,才能使识别率达到满意的程度。
非特定人大词表连续语音识别是近几年研究的重点,也是研究的难点。
目前的连续语音识别大多是基于HMM(隐马尔可夫模型)框架,并将声学、语言学的知识统一引入来改善这个框架,其硬件平台通常是功能强大的工作站或PC机。
§2.2声音录入
本设计利用PC上的话筒口进行声音录入。
通过MATLAB的wavrecord函数进行声音录入。
wavrecord是MATLAB的专有声音录入函数,他有一下三种调用方式:
(1)y=wavrecord(n,Fs)
(2)y=wavrecord(n,Fs,ch)
(3)y=wavrecord(n,Fs,'dtype')
其中n代表声音录入的总采样数。
Fs代表声音的采样率。
ch代表声音录入采用的通道数,当ch为1时为单声道,当ch为2时为立体声。
’dtype’代表采样数据的存储类型,MATLAB提供四种存储类型如下:
(1)'double'(defaultvalue),16bits/sample
(2)'single',16bits/sample
(3)'int16',16bits/sample
(4)'uint8',8bits/sample
本设计单次采样总数为50000点,采样率为22000HZ。
即:
y=wavrecord(50000,22000);
§2.3声音的预处理
§2.3.1欲加重处理
预加重的目的在于滤除低频干扰,尤其是50Hz或60Hz的工频干扰,将对于语音识别更为有用的高频部分的频谱进一步提升。
在计算短时能量之前应用该滤波器,还可以起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。
§2.3.2分帧处理
在计算各个系数之前要先将语音信号作分帧处理。
语音信号是瞬时变化的,但在10~20ms内是相对稳定的.我设定的采样频率为11025所以我们对预处理后的语音信号S1(n)以1024点为一帧进行处理,帧移为512个采样点。
§2.4端点检测
所谓端点检测,就是在实时输入的声音信号中,区分背景噪声和环境噪声,准确地判断出声音信号的开始点和结束点。
在语音识别系统中,正确、有效地进行端点检测不仅可以减少计算量和缩短处理时间,而且能排除无声段的噪声干扰、提高语音识别的正确率。
研究表明,即使是在安静的环境下,语音识别系统一半以上的错误可能主要来基于MTLAB编写的语音端点检测程序。
除此之外,在语音合成、编码等系统中,高效的端点检测也直接影响甚至决定着系统的主要性能。
因此,端点检测的效率、质量在语音处理系统中显得至关重要。
§2.4.1过零率
过零率(ZeroCrossingRate)是在每个音框中,音讯通过零点的次数。
一般而言,噪声的过零率大于气音的过零率,而气音的过零率又大于有声音的过零率。
一半情况下,噪声的波形和声音波形相比幅度非常小,为了排除噪声对过零率产生的影响,我将声音的原始谱向上平移,使得噪声的过零点影响大大减小。
如下,图2-1展示了没有平移前的过零谱图,图2-2展示了平移后的过零谱图。
可以看出,平移后,话音可以很容易从噪音中区分开来。
图2-1平移前的过零谱
图2-2平移后的过零谱
§2.4.2音量
能量或者音量代表声音的大小,可由声音讯号的震幅来类比,又称为能量(Energy)或强度(Intensity)等。
话音的能量远比噪声的能量要大,故可用能量来区分是静音还是由话音。
这里将每帧的幅度绝对值之和作为每一帧的总能量大小。
音量谱如图2-3所示:
图2-3音量谱
§2.4.3过零率和音量积谱
通常利用短时能量来检测浊音,用过零率来检测清音,两者配合实现可靠的端点检测。
端点检测算法常用的是由语音能量和过零率组合的有双门限法,以及短时能量和过零率的乘积构成的能频值法。
图2-4展示了过零谱、音量谱和过零率和能量成绩构成的谱线。
图2-4过零音量积谱
§2.4.4用过零率和音量积谱来检测端点
端点检测算法常用的是由语音能量和过零率组合的有双门限法,以及短时能量和过零率的乘积构成的能频值法。
这里采用的是第二种方法,通过能量和过零率的乘积构成的能频值来判断语音的端点。
这里我对端点进行了两级判断。
首先根据过零率和音量积设定一个较高的门限TH,若谱大于TH,则可确定2个端点A、B,并可认为这2个端点之间是语音信号,这样相当于完成初判。
再根据背景噪声的过零率和音量积设定一个比TH稍低的门限TL,如果信号的能量大于TL,则所对应的端点C、D之间仍是语音信号,至此完成了第二级判断。
判断结果如图2-5所示:
图2-5端点检测出的语音波形
§2.5特征参数提取
§2.5.1特征参数概述
对于特征参数,有多种参数可供选取。
常见的有三种:
(1)线形预测系数特征矢量(LPC)
(2)LPC倒谱特征矢量(LPCC)
(3)Mel倒谱系数(MFCC)
1.线性预测系数(LPC)
这里我采用最简单的一种线形预测系数特征矢量(LPC)。
线性预测(LinearPrediction)分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音信号处理领域中得到了广泛的应用。
基本思想是:
一个语音信号的抽样值可以用过去的若干个抽样值的线性组合来逼近。
语音信号是一种典型的时变信号,然而如果把观察时间缩短到十毫秒至几十毫秒,则可以得到一系列近似稳定的信号。
人的发音器官可以用若干段前后连接的声管进行模拟,这就是所谓的声管模型。
由于发音器官不可能毫无规律地快速变化,因此语音信号是准稳定的(quasisteady)。
全极点线性预测模型(LPC)可以对声管模型进行很好的描述,这里信号的激励源是由肺部气流的冲击引起的,声带可以有周期振动也可以不振动,分别对应浊音(Vowel)和清音(Consonant),而每段声管则对应一个LPC模型的极点。
一般情况下,极点的个数在12~16之间,就可以足够清晰地描述语音信号的特征了。
LPC是语音分析的重要手段,它能很好地进行谱估计,即可作为语音特征的参数。
因此仅用12个LPC系数就能很好地表示复杂语音信号的特征,这就大大降低了信号的冗余度并有效地减少了计算量和存储量,使之成为语音识别和语音压缩的基础。
………………………………2.1
上式表示p个方程构成的方程组,未知数为p个。
求解该方程组,就可以得到系统的线性预测系数。
由基于自相关的递推求解公式求解,也就是所谓的Durbin算法得:
………………………………………………………………2.2
………………………………………………2.3
……………………………………………………………………2.4
……………………………………………2.5
………………………………………………………2.6
公式中,上标
表示第
次迭代,每次迭代只计算和更新
直到
时,结束迭代。
在MATLAB中利用lpc函数计算LPC系数,其语法为:
a=lpc(x,n);
这里x为一帧语音信号,n为计算LPC参数的阶数。
通常x为240点或256点的数据,n取10~12,对语音识别来说就已经足够。
2.线性预测倒谱系数(LPCC)
在语音识别系统中,很少直接使用LPC系数,而是由LPC系数推导出另一种参数:
线性预测倒谱系数(LPCC)。
倒谱实际上是一种同态信号处理方法,标准的倒谱系数计算流程需要进行FFT变换,对数操作和相位校正等步骤,运算比较复杂。
在实际运作中大多数语音识别系统都会采用倒谱参数来作为有关距离的度量。
LPC倒谱系数是描述说话人声道特性的,广泛应用于声纹识别。
在实际计算中,当序列x(n)为最小相位的情况下,可以利用序列x(n)及其倒谱系数c(n)的递推关系来简化计算。
序列x(n)及其复倒谱系数c(n)的递推公式如下:
…………………………………2.7
LPCC参数是一种非常重要的参数,它不是由原始信号x(n)得到,而是由LPC系数
得到的。
由2.6式可得LPC到LPCC的直接递推关系。
…………………………………………………………………2.8
…………………………………………2.9
………………………………………………2.10
3.Mel尺度倒谱系数(MFCC)
LPC模型是基于发音模型建立的,LPCC系数也是一种基于合成的参数。
这种参数没有充分利用人耳的听觉特性。
实际上,人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的,基本上是一个对数的关系。
近年来,一种能够比较充分利用人耳这种特殊的感知特性的参数得到了广泛的应用,这就是Mel尺度倒谱参数(Mel-scaledCepstrumCoefficient),或称Mel频率倒谱系数,简称为MFCC。
大量的研究表明,MFCC参数能够比LPCC参数更好地提高系统的识别性能。
从目前使用的情况来看,在大词汇量语音识别应用中已逐渐取代原本常用的线性预测编码导出的倒频谱参数,原因是它考虑了人类发声与接收声音的特性,具有更好的鲁棒性。
由于语音信号在时域上的变化快速而不稳定,所以通常都将它转换到频域上来观察,此时它的频谱会随着时间作缓慢的变化。
所以通常将加窗后的帧经过快速傅立叶变换(FFT),求出每帧的频谱参数。
再将每帧的频谱参数通过一组N个(N一般为20~30个)三角形带通滤波器所组成的Mel频率滤波器,将每个频带的输出取对数,求出每一个输出的对数能量(logenergy)Ek,k=1,2,...N。
再将此N个参数进行余弦变换(cosinetransform)求出L阶的Mel-scalecepstrum参数。
MFCC参数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是:
…………………………………………………2.11
MFCC参数也是按帧计算的。
首先要通过FFT得到该帧信号的功率谱
,转换为Mel频率下的功率谱。
这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:
…………………………2.12
MFCC参数的计算通常采用如下的流程:
(1)首先确定每一帧语音采样序列的点数。
对每帧序列
进行预加重
处理后再经过离散FFT变换,取模的平方得到离散功率谱
。
(2)计算
通过M个
后所得的功率值,即计算
和
在各离散频率点上乘积之和,得到M个参数
,
。
(3)计算
的自然对数,得到
,
。
(4)对
计算其离散余弦变换,得到
,
。
(5)舍去代表直流成分的
,取
作为MFCC参数。
§2.5.2用MATLAB实现LPC系数的计算
本系统使用的特征参数是线性预测系数(LPC)。
在MATLAB中利用lpc函数计算LPC系数,其语法为:
a=lpc(x,n);
这里x为一帧语音信号,n为计算LPC参数的阶数。
通常x为240点或256点的数据,n取10~12,对语音识别来说就已经足够。
§2.6语音识别中的模式匹配
§2.6.1DTW算法原理
目前,语音识别的匹配主要应用HMM和DTW两种算法。
DTW算法由于没有一个有效地用统计方法进行训练的框架,也不容易将低层和顶层的各种知识用到语音识别算法中,因此在解决大词汇量、连续语音、非特定人语音识别问题时较之HMM算法相形见绌。
HMM是一种用参数表示的,用于描述随机过程统计特性的概率模型。
而对于孤立词识别,HMM算法和DTW算法在相同条件下,识别效果相差不大,又由于DTW算法本身既简单又有效,但HMM算法要复杂得多。
它需要在训练阶段提供大量的语音数据,通过反复计算才能得到参数模型,而DTW算法的训练中几乎不需要额外的计算。
鉴于此,DTW更适合本系统的要求。
在孤立词语音识别中,最为简单有效的方法是采用DTW(D