ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:203.14KB ,
资源ID:26948285      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26948285.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DSP语音钥匙.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DSP语音钥匙.docx

1、DSP语音钥匙DSP课程实验报告基于DSP的语音钥匙学 院:电子信息工程学院小组成员:庄裕林 12213089丁玮光 12301093指导教师:高海林目录1.设计任务书2.设计内容3.设计方案,算法原理说明4.程序设计,调试与结果分析5.实验遇到的问题及解决办法6.感想与体会7.参考文献1.设计任务书 语音信号处理是利用数字信号处理技术对语音信号进行处理的一门学科,其核心技术包括语音合成、语音识别、语音测评等,是现代人机交互的重要方式之一,具有广泛的应用前景。近年来随着互联网和通信的发展,信息检索也呈现多样化,如文字检索、语音检索和基于内容的图像检索,其中语音检索将成为跨领域资源整合的纽带,而

2、语音检索的关键在于进行语音匹配与识别。 本实验设计一个基于DSP处理系统的语音钥匙,实验内容如图1-1所示。图1-1 设计的任务要求分为基础要求和发挥部分。基本部分:利用Matlab将采集到的一段语音进行仿真处理,实现基于语音相关匹配的较为简单的语音钥匙的功能。在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。未开启,将指示灯D1进行3Hz闪烁(快闪),并进行相应的语音提示。发挥部分:利用Matlab将采集到的一段语音进行仿真处理,实现基于语音特征值匹配的较为复杂的语音钥匙的功能

3、。此语音钥匙安全性更高。在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。未开启,将指示灯D1进行3Hz闪烁(快闪),并进行相应的语音提示。2.设计内容1、理解语音信号的基本特征,学会利用Matlab对语音信号进行处理的基本方法与流程2、学会利用Matlab对语音信号的预处理的方法和去噪的方法、信号相关算法仿真;3、掌握利用CCS编程环境编写语音信号处理算法(C代码),并在BJTUDSP5502实验系统上实现。4、设计合理的结果测试方式和方法,验证所设计系统的正确性;5、按照给定

4、的模板撰写实验报告,并参加统一的验收答辩。如参加争优环节需另外提前报名,通过公开答辩方式通过验收。3.设计方案,算法原理说明3.1语音信号的获取 本次实验通过话筒录入声音(当然也可以事先用windowds录音机事先录好声音)。3.2语音信号的预处理语音信号的预处理模块一般包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。在不同的系统中对各子模块会有不同的要求,如在嵌入式语音识别系统中一般要求有防混叠滤波电路、A/D转换电路和采样滤波电路等,而在计算机上实验时则可由音频采集卡完成,无需实验者亲自动手。3.2.1语音信号的采样 通过DMA实现信号的采集与传输。DMA(Direct Memor

5、y Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。 一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。DMA请求 CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。DMA响应 DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输

6、出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。DMA传输 DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输 在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。DMA结束 当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次

7、DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。 由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高3.2.2语音信号的分帧语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数R(xl,x2)都随时间而发生较大的变化。但研究发现,语音信号在短时间内频谱特性保持平稳,即具有短时平稳特性。因此,在实际处理时可以将语音信号分成很小的时间段(约1030ms),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号

8、分成若干帧的过程称为分帧。分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。一般取帧长20ms,帧移为帧长的1/31/2。在本系统中帧长取240,帧移取803.2.3语音信号的预加重对于语音信号的频谱,通常是频率越高幅值越小,在语音信号的频率增加两倍时,其功率谱的幅度下降6dB。因此必须对高频进行加重处理,一般是将语音信号通过一个一阶高通滤波器1-0.9375z-1,即为预加重滤波器。其目的是滤除低频干扰,特别是50Hz到60Hz的工频干扰,将对语音识别更为有用的高频部分进行频谱提升。在计算短时能量之前将语音信号通过预加重滤波器还可起到消除

9、直流漂移、抑制随机噪声和提升清音部分能量的效果。3.2.4语音信号的加窗为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的Gibbs效应。用的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning)。其窗函数如下,式中的N为窗长,一般等于帧长。窗口的选择非常重要,不同的窗口将使能量的平均结果不同。矩形窗的谱平滑,但波形细节丢失;而汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。因此,在语音的时域处理方法中,一般选择矩形窗,而在语音的频域处理方法中,一般选择汉明窗或汉宁窗。本系统中的端点检测采用时域方法故加矩形窗,计算MFCC系数时加汉明窗。3.2.5语音信

10、号的端点检测 语音端点检测是指用计算机数字处理技术从包含语音的一段信号中找出字、词的起始点及结束点,从而只存储和处理有效语音信号。对汉语来说,还可进一步找出其中的声母段和韵母段所处的位置。语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音识别系统的优劣。进行端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。端点检测最常见的方法是短时能量短时过零率双门限端点检测,近年来在此基础上发展出的动态窗长短时双门限端点检测方法也被广泛使用。 3.2.5.1语音信号的短时能量语音和噪声的主要区别在它们的能量上。语音段的能量比噪声段的大,语音段的能量是噪

11、声段能量叠加语音声波能量的和。对第n帧语音信号的短时能量En的定义为: (3-1)xn为原样本序列在窗函数所切取出的第n段短时语音,N为帧长。因为在计算时使用的是信号的平方,故将En作为一个度量语音幅度值变化的函数有一个缺陷,即对高电平非常敏感。因此在许多场合会将En用下式来代替: (3-2)这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。3.2.5.2语音信号的短时过零短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。过零率就是样本改变符号次数,定义语音信号寿(m)的短时

12、过零率Zn为: (3-3) 清音的能量多集中在较高的频率上,它的平均过零率要高于浊音,故短时过零率可以用来区分清音、浊音以及无声。在实际应用时并不能通过式3-3直接计算过零率,因为在无声段噪声使语音波形在0值附近来回摆动,导致计算出的过零率和有声段的区别并不十分明显。比较简单的解决方法是设定一个差的阈值,使不仅xn(m)*xn(m-1) 。在本系统中经多次试验取定=0.01。3.2.5.3语音信号的双门限断点检测双门限端点检测顾名思义需要两级检测,即短时能量检测和短时过零率检测。在开始检测之前需要设定4个门限,即分别为短时能量和短时过零率各设置一个高门限和一个低门限:EHigh、ELow和ZH

13、igh、ZLow。整个语音端点检测分为四部分:静音段、过度段、语音段、结束段。在静音段中如果能量或过零率有一个超过了其低门限,则认为进入了过度段。在过度段中,由于参数数值较小,还不能确定是否真的进入语音段,只有两个参数的其中一个超越了高门限才被认为是进入语音段。当参数降至低门限则认为进入结束。此外,还有两种可能会引起端点检测的误判:一是短时噪音引起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声,重新回到静音段,本系统设为20ms;二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率,本系统所训练和识别的都为单字,故无需

14、设置此门限。在双门限端点检测中4个门限的设定至关重要,门限设定的好坏将直接影响端点检测的结果。门限值的设置还没有一个通用可靠的方法,需要根据经验和特定环境进行调整。常见的方法有最大值乘上某个比率、中位值乘上某个比率、最小值乘上某个常数、前三帧平均值乘上某个常数等。本系统中EHigh,ELow,ZHigh,ZLow的取值分别为:EHigh=max(min(amp)*10,mean(amp)*0.2,max(amp)*0.1); ZHigh=max(round(max(zcr)*0.1),5); ELow=min(min(amp)*10,mean(amp)*0.2,max(amp)*0.1); Z

15、Low=max(round(mean(zcr)*0.1),3);3.3语音匹配3.3.1相关法 经过处理的语音信号都有相应的临界带特征矢量,通过相关法计算前后两次声音的特征矢量的相关性,由相关性来判断两次语音信号的相似性。 (3-4)衡量X与Y的相关程度,(3-13)被称为相关系数。显然,当的值越大,说明X和Y越相关(相似),当的值越小(越接近于零),说明X和Y越不相关(不相似)。尤其是,当时,与(是各分量为1的列向量,常称为1向量,表示为)线性相关,当时,与正交,即最不相关。3.3.2特征值法经过预处理的语音数据就可以进行特征参数提取,特征参数的好坏将直接影响系统的性能和效率,对特征参数的要

16、求包括:提取的特征参数能有效地代表语音特征,具有很好的区分性;各阶参数之间有良好的独立性;特征参数要计算方便,最好有高效的计算方法,以保证语音识别的实时实现。3.3.2.1 LPC和LPCC系数LPC(Linear Prediction Coefficient,线性预测系数)模拟人发音器官的声管模型,是一种基于语音合成的参数模型。在语音识别系统中很少直接使用LPC系统,而是由LPC系数推出的另一种参数LPCC。LPCC(Linear Prediction Cepstrum Coefficient,线性预测倒谱系数)是LPC在倒谱域中的表示。该特征是基于语音信号为自回归信号的假设,利用线性预测分

17、析获得倒谱系数。LPCC的优点是计算量小,易于实现,对元音有较好的描述能力,缺点是对辅音描述能力较差。3.3.2.2 MFCC系数LPC模型是基于发音模型建立的,LPCC系数也是一种基于合成的系数,这种参数没有充分利用人耳的听觉特性。实际上,人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的,基本上是一个对数的关系。近年来,一种能够比较充分利用人耳的这种特殊感知特性的系数得到了广泛应用,这就是Mel尺度倒谱系数(Mel-scaled Cepstrum Coefficients,简称MFCC)。大量研究表明,MFCC系数能够比LPCC参数更好地提高系统的识别性能。MFCC系数

18、的计算是以“bark”为其频率基准的,它和线性频率的转换关系是: (3-5)MFCC系数也是按帧计算的,首先要通过FFT得到该帧信号的功率谱S(n),转换为Mel频率下的功率谱。这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:Hm(n) m=0,1,M-1; n=0,1,N/2-1 (3-6)M为滤波器的个数,通常取24,与临界带的个数一样;N为一帧语音信号的点数,为了计算FFT的方便,通常取256。滤波器在频域上为简单的三角形,其中心频率fm在Mel频率轴上是均匀分布的。如图3-7所示为Mel尺度滤波器组,包含24个滤波器,语音信号帧长取为256个点,语音信号的采样频率为8KHz,

19、。图3-1 Mel 尺度滤波器组带通滤波器的系数事先计算好,在计算MFCC系数是直接使用。MFCC系数的计算过程如下:预处理:确定每一帧语音采样序列的长度(如N=256),并对每帧序列s(n)进行预加重、分帧和加窗处理;计算离散功率谱:对预处理的每帧进行离散FFT变换得到其频谱,再取模的平方作为离散功率谱S(n);将功率谱通过滤波器组:计算S(n)通过M个Hm(n)后所得的功率值,即计算S(n)和Hm(n)在各离散频率点上的乘积之和,得到M个参数Pm,m=0,1,M-1;取对数:计算Pm的自然对数,得到Lm,m=0,1,M-1;离散余弦变换:对Lm计算其离散余弦变换,得到D m,m=0,1,M

20、-1,舍去代表直流成份的D0,取D1,D2,Dk作为MFCC参数。具体流程可以用框图3-8表示为:图3-2 MFCC系数计算流程图 3.3.2.3 DTW算法在孤立词语音识别中,最为简单有效的方法是采用DTW动态时间规整算法,设参考模板特征矢量序列为A=a1,a2,aj),输入语音特征矢量序列为B=b1,b2,bk),jk。DTW算法就是要寻找一个最佳的时间规整函数,使得语音输入B的时间轴k映射到参考模板A的时间轴j上总的累计失真最小。 将己经存入模板库的各个词条称为参考模板,一个参考模板可以表示为R(1),R(2),R(M),m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,

21、因此M为该模式包含的语音帧总数,R(m)为第m帧语音的特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T(1),T(2),T(N),n为测试语音帧标号,模板中共包含N帧音,T(n)为第n帧音的特征矢量。为了比较它们的相似度,可以计算它们之间的失真DT,R,这里采用欧氏距离中的中的绝对平均误差: (3-7)此失真度的主要优点是计算简单、硬件容易实现。失真越小相似度越高。为了计算这一失真,应从T和R中各个对应帧之间的失真算起。将各个对应帧之间的失真累计起来就可以得到两模式间的总失真。很容易想到的办法是当两模式长度相等时,直接以相等的帧号相匹配后累加计算总失真,而当两个模式长度不等时则利用

22、线性扩张或线性压缩的方法使两模式具有相等长度,随后进行匹配计算失真度。但由于人类发音具有随机的非线性变化,这种方法效果不可能是最佳的。为了达到最佳效果,可以采用动态时间规整的方法。图3-3如图所示,横坐标对应“1”这个字音的一次较短的发音,经过分帧和特征矢量计算后共得到一个长度为43帧的语音序列,而纵坐标对应“1”这个字音的一次较长的发音,该语音特征序列共有56帧。为了找到两个序列的最佳匹配路径,现把测试模式的各个帧号n=1N(N=43)在一个二维直角坐标系中的横轴上标出,把参考模式的各帧号m=1M(M=56)在纵轴上标出。 通过这些表示帧号的整数坐标画一些纵横线即可形成一个网格,网格中何一个

23、节点(n,m)表示测试模式中的某一帧和参考模式中的某一帧的交汇点。动态时间规整算法可以归结为寻找一条通过此网格中若干交叉点的路径,路径通过的交叉点即为参考模式和测试模式中进行失真计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢可能有变化,但是各部分的先后顺序不可能改变,因此所选的路径必定从左下角出发,在右上角结束。为了描述这条路径,假设路径通过的所有格点依次为(n1 ,m1 ),(ni ,mj ),(nN ,mM ),其中(n1 ,m1 )=(1,1),(nN ,mM )=(N,M)。路径可以用函数m = Oslash;(n )描述,其中n =i,i=1,2,N,Ø(1

24、)=1,Ø(N)=M。为了使路径不至于过倾斜,可以约束斜率在0.52的范围内,如果路径已经通过了格点(n ,m ),那么下一个通过的格点(n ,m )只可能是下列三种情况之一:(n ,m )=(n +1,m)(n ,m )=(n +1,m +1)(n ,m )=(n ,m+1 )用r表示上述三个约束条件。求最佳路径的问题可以归结为满足约束条件r时,求最佳路径函数m =Ø(n ),使得沿路径的积累距离达到最小值,即:搜索该路径的方法如下:搜索从(n ,m )点出发,可以展开若干条满足的路径,假设可计算每条路径达到(n ,m )点时的总的积累距离,具有最小累积距离者即为

25、最佳路径。易于证明,限定范围的任一格点(n ,m )只可能有一条搜索路径通过。对于(ni,mi),其可达到该格点的前一个格点只可能是(n ,m )、(n ,m -1)和(n ,m -2),那么(n ,m )一定选择这3个距离之路径延伸而通过(n ,m ),这时此路径的积累距离为:D(n ,m )=dT(n ),R(m )+minD(n+1,m),D(n+1,m+1),D(n,m+1) 这样可以从(n ,m )=(1,1)出发搜索(n ,m ),对每一个(n ,m )都存储相应的距离,这个距离是当前格点的匹配距离与前一个累计距离最小的格点(按照设定的斜率在三个格点中进行比较)。搜索到(n ,m

26、)时,只保留一条最佳路径。如果有必要的话,通过逐点向前寻找就可以求得整条路径。这套DP算法便是DTW算法。 由于DTW不断地计算两矢量的距离以寻找最优的匹配路径,所以得到的是两矢量匹配时积累距离最小的规整函数,这就保证了它们之间存在最大的声学相似特性。 使用DTW算法为核心直接构造识别系统十分简单,首先通过训练得到词汇表中各参考语音的特征序列,直接将这些序列存储为模板。在进行识别时,将待识语音的特征序列依次与各参考语音特征序列进行DTW匹配,最后得到的总失真度最小且小于识别阈值的就认为是识别结果。该方法最显著的优点是识别率极高,大大超过目前多数的HMM语音识别系统和VQ语音识别系统。但其最明显

27、的缺点是由于需要对大量路径及这些路径中的所有节点进行匹配计算,导致计算量极大,随着词汇量的增大其识别过程甚至将达到难以接受的程度,因此无法直接应用于大、中词汇量识别系统。4.程序设计,调试与结果分析4.1相关法4.1.1主函数void main(void)/*硬件初始化*/ Initialize CSL library - This is REQUIRED ! CSL_init();/ The main frequency of system is 240MHz/ 该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数 PLL_setFreq(1, 0xC, 0, 1, 3,

28、3, 0);/EMIF初始化 Emif_Config();/ Open McBSP port 1 and get a McBSP type handle hMcbsp = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET); / Config McBSP port 1 by use previously defined structure Mcbsp_Config(hMcbsp);/I2C初始化 I2C_cofig();/CODEC寄存器初始化 inti_AIC();/*子函数初始化(主要是对数组进行初始化)*/ length_init(); / 对存储模板和采集

29、到的语音信号有效帧数的数组进行初始化/*训练三次、待识别语音录入一次*/ while(1) /*-端点检测变量初始化(每次均需要初始化)-*/ zero_rate=0;/过零率 ref_zero_rate=0;/根据前三帧得到的参考过零率 ave_energy=0;/平均能量 ref_ave_energy=0;/根据前三帧得到的参考能量 ref_repeat=0; start_repeat=0; end_repeat=0; start=0;/用来存开始的帧数 end=0;/用来存结束的帧数 allj=0;/*-为避免采集信号时界限不清,设置断点(比设置延时效果要好)-*/ printf(nn1

30、语言密钥设置n); printf(2相关法语言密钥识别n); printf(0退出nnn); printf(输入选项n); delay(1000); a=getchar(); switch(a) case 1: memset(SourData1,0,sizeof(SourData1); /为申请新的内存做准备 memset(SourData2,0,sizeof(SourData2); tip_start(); /延时函数 printf(请设置语音钥匙n); Voice_Mfcc(0); copyData(&SourData1(start-1)*DIV_FRAME,SourData2,length0*DIV_FRAME); shezhi=1; break; case 2: memset(SourData1,0,sizeof(SourData1); tip_start(); shezhi=0; printf(请说出语音钥匙n); Voice_Mfcc(3); xgxs=correlatio

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1