语音钥匙 DSP_第1页
语音钥匙 DSP_第2页
语音钥匙 DSP_第3页
语音钥匙 DSP_第4页
语音钥匙 DSP_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、DSP课程实验报告基于DSP的语音钥匙目 录1.设计任务书22.设计内容33.方案的设计、原理33.1语音钥匙的概述33.2语音信号的预处理33.2.1 语音信号的采集3语音信号的分帧4语音信号的预加重4语音信号的加窗4语音信号的端点检测5语音信号的短时能量5语音信号的短时过零6语音信号的双门限断点检测73.3 相关法93.4 特征参数的提取93.4.1 LPC和LPCC系数93.4.1 MFCC系数93.5 DTW算法114 程序设计、调试与结果分析134.1 语音信号相关法的MATLAB的实现134.2 语音信号相关法的C语言的实现134.3 语音信号DTW算法的MATLAB及C语言的实现

2、135.实验总结及个人体会136、参考文献131. 设计任务书 语音信号处理是利用数字信号处理技术对语音信号进行处理的一门学科,其核心技术包括语音合成、语音识别、语音测评等,是现代人机交互的重要方式之一,具有广泛的应用前景。近年来随着互联网和通信的发展,信息检索也呈现多样化,如文字检索、语音检索和基于内容的图像检索,其中语音检索将成为跨领域资源整合的纽带,而语音检索的关键在于进行语音匹配与识别。 本实验设计一个基于DSP处理系统的语音钥匙,实验内容如图1-1所示。图1-1 设计的任务要求分为基础要求和发挥部分。基本部分:利用Matlab将采集到的一段语音进行仿真处理,实现基于语音相关匹配的较为

3、简单的语音钥匙的功能。在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。未开启,将指示灯D1进行3Hz闪烁(快闪),并进行相应的语音提示。发挥部分:利用Matlab将采集到的一段语音进行仿真处理,实现基于语音特征值匹配的较为复杂的语音钥匙的功能。此语音钥匙安全性更高。在CCS编译环境下利用C语言编写语音钥匙程序,并在BJTUDSP5502实验系统平台上实现。若语音钥匙开启,将指示灯D1进行1Hz闪烁(慢闪),并进行相应的语音提示。未开启,将指示灯D1进行3Hz闪烁(快闪),并进行

4、相应的语音提示。2. 设计内容1、理解语音信号的基本特征,学会利用Matlab对语音信号进行处理的基本方法与流程2、学会利用Matlab对语音信号的预处理的方法和去噪的方法、信号相关算法仿真;3、掌握利用CCS编程环境编写语音信号处理算法(C代码),并在BJTUDSP5502实验系统上实现。4、设计合理的结果测试方式和方法,验证所设计系统的正确性;5、按照给定的模板撰写实验报告,并参加统一的验收答辩。如参加争优环节需另外提前报名,通过公开答辩方式通过验收。3.方案的设计、原理3.1语音钥匙的概述语音技术,包括语音识别、语音合成、关键词检出、说话人识别与确认、口语对话系统等,是现代人机交互的重要

5、方式之一,具有广泛的应用前景。其中语音识别技术,尤其是连续语音识别技术,是最基础、最重要的部分,而且已经逐步走向成熟与实用。语音识别(Speech Recognition)是指让机器听懂人说的话,即在各种情况下,准确的识别语音的内容,从而根据其信息,执行人的各种意图或执行特定的任务,其最终目标是实现人与机器进行自然语言通信。利用DSP可以对语音信号进行实时采集、提取语音特征向量、进行语音识别。语音识别系统对语音特征参量的提取可以采用FFT等算法,不同的参数表示不同的频谱包络。利用DSP技术来实现语音识别其实就是要利用DSP处理器强大的数据处理功能对表征语音的各种形式的信息进行处理和分析,以对语

6、音进行描述、辨认、分类和解释。无论是早期的孤立词识别系统还是当代的连续语音和非特定人识别系统,它们的系统基本结构框图都可以用下图来进行简单描述。其主要过程包括语音信号的预处理(端点检测等)、特征提取、建立参考模板库、相似性度量和识别决策等几个功能模块,其流程如图3-1所示。图3-1从图3-1可以看出语音识别系统的本质就是一种模式识别系统,它也包括特征提取、模式匹配、参考模式库等基本单元。由于语音信号是一种典型的非平稳信号,加之呼吸气流、外部噪音、电流干扰等使得语音信号不能直接用于提取特征,而要进行前期的预处理。预处理过程包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。经过预处理的语音数

7、据就可以进行特征参数提取。在训练阶段,将特征参数进行一定的处理之后,为每个词条得到一个模型,保存为模板库。在识别阶段,语音信号经过相同的通道得到语音参数,生成测试模板,与参考模板进行匹配,如果匹配分数大于临界值,灯1Hz闪烁,播放“正确”;否则,灯3Hz闪烁,播放“错误”。其中语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音识别系统的优劣,在端点检测技术中,比较常用的是方法是:1.基于短时幅值和短时平均过零率的端点检测 2.基于倒谱特征的端点检测 3.基于熵的端点检测。在语音识别的过程中,其实质就是解决一个语音输入与一个语音模版之间的正确匹配的问

8、题,常见的语音识别方法有:1.动态时间归整技术(DTW) 2.矢量量化技术(VQ) 3. 隐马尔可夫模型(HMM) 4. 基于段长分布的非齐次隐马尔可夫模型(DDBHMM) 5. 人工神经元网络(ANN) 6.相关法 此次试验中,我们使用的是DTW和相关法。3.2语音信号的预处理语音信号的预处理模块一般包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。在不同的系统中对各子模块会有不同的要求,如在嵌入式语音识别系统中一般要求有防混叠滤波电路、A/D转换电路和采样滤波电路等,而在计算机上实验时则可由音频采集卡完成,无需实验者亲自动手。3.2.1 语音信号的采集在Matlab环境中语音信号的采

9、集可使用wavrecord(n,fs,ch,dtype)函数录制,也可使用Windows的“录音机”程序录制成.wav文件然后使用wavread(file) 函数读入。为了进行批量的的训练和识别处理,本系统的训练语音和识别语音全部使用“录音机”程序预先录制。如图3-2所示为数字0的训练语音00.wav的信号波形图,第(I)幅图为完整的语音波形,第(II)、(III)幅图分别为语音的起始部分和结束部分的放大波形图。图3-2 语音00.wav的信号波形图语音信号的分帧语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数R(xl,x2)都随时间而发生较大的变化。但研究发现,语音信号在短时

10、间内频谱特性保持平稳,即具有短时平稳特性。因此,在实际处理时可以将语音信号分成很小的时间段(约1030ms),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号分成若干帧的过程称为分帧。分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。一般取帧长20ms,帧移为帧长的1/31/2。在Matlab环境中的分帧最常用的方法是使用函数enframe(x,len,inc),其中x为语音信号,len为帧长,inc为帧移。在本系统中帧长取240,帧移取80语音信号的预加重对于语音信号的频谱,通常是频率越高幅值越小,在语音

11、信号的频率增加两倍时,其功率谱的幅度下降6dB。因此必须对高频进行加重处理,一般是将语音信号通过一个一阶高通滤波器1-0.9375z-1,即为预加重滤波器。其目的是滤除低频干扰,特别是50Hz到60Hz的工频干扰,将对语音识别更为有用的高频部分进行频谱提升。在计算短时能量之前将语音信号通过预加重滤波器还可起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。预加重滤波器在Matlab中可由语句x=filter(1-0.9375,1,x)实现。语音信号的加窗为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的Gibbs效应。用的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(H

12、anning)。其窗函数如下,式中的N为窗长,一般等于帧长。矩形窗: 汉明窗(Hamming):汉宁窗(Hanning):WR =1 (0nN-1)0 (Other)WHM =0.5-0.46cos(2n/(N-1) (0nN-1)0 (Other) WHN =0.5-0.5cos(2n/(N-1) (0nN-1)0 (Other)(3-1)(3-2)(3-3)窗口的选择非常重要,不同的窗口将使能量的平均结果不同。矩形窗的谱平滑,但波形细节丢失;而汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。因此,在语音的时域处理方法中,一般选择矩形窗,而在语音的频域处理方法中,一般选择汉明窗或

13、汉宁窗。在Matlab中要实现加窗即将分帧后的语音信号乘上窗函数,如加汉明窗即为x=x.*hamming(N)。本系统中的端点检测采用时域方法故加矩形窗,计算MFCC系数时加汉明窗。语音信号的端点检测语音端点检测是指用计算机数字处理技术从包含语音的一段信号中找出字、词的起始点及结束点,从而只存储和处理有效语音信号。对汉语来说,还可进一步找出其中的声母段和韵母段所处的位置。语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音识别系统的优劣。进行端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。端点检测最常见的方法是短时能量短时过零率双门限端点

14、检测,近年来在此基础上发展出的动态窗长短时双门限端点检测方法也被广泛使用。 语音信号的短时能量语音和噪声的主要区别在它们的能量上,如图3-3(III) 和图3-4(III)所示。语音段的能量比噪声段的大,语音段的能量是噪声段能量叠加语音声波能量的和。对第n帧语音信号的短时能量En的定义为: (3-4)xn为原样本序列在窗函数所切取出的第n段短时语音,N为帧长。因为在计算时使用的是信号的平方,故将En作为一个度量语音幅度值变化的函数有一个缺陷,即对高电平非常敏感。因此在许多场合会将En用下式来代替: (3-5)这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。本系统中窗函数为WR(

15、见式3-1),N为240。图3-3(I)和图3-4(I)分别为数字0的训练语音00.wav和数字4的训练语音40.wav的波形,图3-3(III)和图3-4(III)分别为它们的短时能量。图3-3 语音00.wav的时域分析参数图3-4 语音40.wav的时域分析参数.2语音信号的短时过零短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。过零率就是样本改变符号次数,定义语音信号寿(m)的短时过零率Zn为: (3-6)1 (x0)-1 (x0)sgnx= (3-7)清音的能量多集中在较高的频

16、率上,它的平均过零率要高于浊音,故短时过零率可以用来区分清音、浊音以及无声。图3-3(II)和图3-4(II)分别为数字0的训练语音00.wav和数字4的训练语音40.wav的短时过零率。从图中可以看到清音s的过零率明显高于其后的i音,有声段过零率明显高于无声段,但在鼻音阶段过零率迅速滑落到无声水平而能量值则是缓慢下滑。在实际应用时并不能通过式3-6直接计算过零率,因为在无声段噪声使语音波形在0值附近来回摆动,导致计算出的过零率和有声段的区别并不十分明显。比较简单的解决方法是设定一个差的阈值,使不仅xn(m)*xn(m-1)<0,还要|xn(m) - xn(m-1)| > 。在本系

17、统中经多次试验取定=0.01。3.2.5.2语音信号的双门限断点检测双门限端点检测顾名思义需要两级检测,即短时能量检测和短时过零率检测。在开始检测之前需要设定4个门限,即分别为短时能量和短时过零率各设置一个高门限和一个低门限:EHigh、ELow和ZHigh、ZLow。整个语音端点检测分为四部分:静音段、过度段、语音段、结束段。在静音段中如果能量或过零率有一个超过了其低门限,则认为进入了过度段。在过度段中,由于参数数值较小,还不能确定是否真的进入语音段,只有两个参数的其中一个超越了高门限才被认为是进入语音段。当参数降至低门限则认为进入结束。此外,还有两种可能会引起端点检测的误判:一是短时噪音引

18、起的误判,此时则需要引入最小语音长度门限进行噪声判定,即语音段时间小于一定数值则认定为是噪声,重新回到静音段,本系统设为20ms;二是语音中字与字的时间空隙引起的误判,此时需要设定最大静音长度门限来降低识别的错误率,本系统所训练和识别的都为单字,故无需设置此门限。在双门限端点检测中4个门限的设定至关重要,门限设定的好坏将直接影响端点检测的结果。门限值的设置还没有一个通用可靠的方法,需要根据经验和特定环境进行调整。常见的方法有最大值乘上某个比率、中位值乘上某个比率、最小值乘上某个常数、前三帧平均值乘上某个常数等。本系统中EHigh,ELow,ZHigh,ZLow的取值分别为:EHigh=max(

19、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); ZLow=max(round(mean(zcr)*0.1),3);图3-5和图3-6分别是数字0的训练语音00.wav和数字4的训练语音40.wav的端点检测结果,红线之间的部分为检测出的语音有声段。图3-5 语音00.wav的端点检测结果图3-6 语音40.wav的端点检测结果3.3 相关法 经过处理的语音信号都有相应的临界带特征矢量,通过相关法计

20、算前后两次声音的特征矢量的相关性,由相关性来判断两次语音信号的相似性。 (3-13)衡量X与Y的相关程度,(3-13)被称为相关系数。显然,当的值越大,说明X和Y越相关(相似),当的值越小(越接近于零),说明X和Y越不相关(不相似)。尤其是,当时,与(是各分量为1的列向量,常称为1向量,表示为)线性相关,当时,与正交,即最不相关。3.4 特征参数的提取经过预处理的语音数据就可以进行特征参数提取,特征参数的好坏将直接影响系统的性能和效率,对特征参数的要求包括:(1) 提取的特征参数能有效地代表语音特征,具有很好的区分性;(2) 各阶参数之间有良好的独立性;(3) 特征参数要计算方便,最好有高效的

21、计算方法,以保证语音识别的实时实现。3.4.1 LPC和LPCC系数LPC(Linear Prediction Coefficient,线性预测系数)模拟人发音器官的声管模型,是一种基于语音合成的参数模型。在语音识别系统中很少直接使用LPC系统,而是由LPC系数推出的另一种参数LPCC。LPCC(Linear Prediction Cepstrum Coefficient,线性预测倒谱系数)是LPC在倒谱域中的表示。该特征是基于语音信号为自回归信号的假设,利用线性预测分析获得倒谱系数。LPCC的优点是计算量小,易于实现,对元音有较好的描述能力,缺点是对辅音描述能力较差。3.4.1 MFCC系数

22、LPC模型是基于发音模型建立的,LPCC系数也是一种基于合成的系数,这种参数没有充分利用人耳的听觉特性。实际上,人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的,基本上是一个对数的关系。近年来,一种能够比较充分利用人耳的这种特殊感知特性的系数得到了广泛应用,这就是Mel尺度倒谱系数(Mel-scaled Cepstrum Coefficients,简称MFCC)。大量研究表明,MFCC系数能够比LPCC参数更好地提高系统的识别性能。MFCC系数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是: (3-8)MFCC系数也是按帧计算的,首先要通过FFT得到该帧信

23、号的功率谱S(n),转换为Mel频率下的功率谱。这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:Hm(n) m=0,1,M-1; n=0,1,N/2-1 (3-9)M为滤波器的个数,通常取24,与临界带的个数一样;N为一帧语音信号的点数,为了计算FFT的方便,通常取256。滤波器在频域上为简单的三角形,其中心频率fm在Mel频率轴上是均匀分布的。如图3-7所示为Mel尺度滤波器组,包含24个滤波器,语音信号帧长取为256个点,语音信号的采样频率为8KHz,。图3-7 Mel 尺度滤波器组带通滤波器的系数事先计算好,在计算MFCC系数是直接使用。MFCC系数的计算过程如下:(1) 预处

24、理:确定每一帧语音采样序列的长度(如N=256),并对每帧序列s(n)进行预加重、分帧和加窗处理;(2) 计算离散功率谱:对预处理的每帧进行离散FFT变换得到其频谱,再取模的平方作为离散功率谱S(n);(3) 将功率谱通过滤波器组:计算S(n)通过M个Hm(n)后所得的功率值,即计算S(n)和Hm(n)在各离散频率点上的乘积之和,得到M个参数Pm,m=0,1,M-1;(4) 取对数:计算Pm的自然对数,得到Lm,m=0,1,M-1;(5) 离散余弦变换:对Lm计算其离散余弦变换,得到D m,m=0,1,M-1,舍去代表直流成份的D0,取D1,D2,Dk作为MFCC参数。具体流程可以用框图3-8

25、表示为:图3-8 MFCC系数计算流程图在Matlab环境中计算M个滤波器的系数可以调用语音工具箱voicebox中的函数melbankm(m,n,fs)来实现,其中m为滤波器的个数,n为语音帧长,fs为采样频率。计算mfcc系数的函数为melcepst(s,fs),s为语音信号。3.5 DTW算法在孤立词语音识别中,最为简单有效的方法是采用DTW动态时间规整算法,设参考模板特征矢量序列为A=a1,a2,aj),输入语音特征矢量序列为B=b1,b2,bk),jk。DTW算法就是要寻找一个最佳的时间规整函数,使得语音输入B的时间轴k映射到参考模板A的时间轴j上总的累计失真最小。 将己经存入模板库

26、的各个词条称为参考模板,一个参考模板可以表示为R(1),R(2),R(M),m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模式包含的语音帧总数,R(m)为第m帧语音的特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为T(1),T(2),T(N),n为测试语音帧标号,模板中共包含N帧音,T(n)为第n帧音的特征矢量。为了比较它们的相似度,可以计算它们之间的失真DT,R,这里采用欧氏距离中的中的绝对平均误差: (3-10)此失真度的主要优点是计算简单、硬件容易实现。失真越小相似度越高。为了计算这一失真,应从T和R中各个对应帧之间的失真算起。将各个对应帧之间的失

27、真累计起来就可以得到两模式间的总失真。很容易想到的办法是当两模式长度相等时,直接以相等的帧号相匹配后累加计算总失真,而当两个模式长度不等时则利用线性扩张或线性压缩的方法使两模式具有相等长度,随后进行匹配计算失真度。但由于人类发音具有随机的非线性变化,这种方法效果不可能是最佳的。为了达到最佳效果,可以采用动态时间规整的方法。图3- 9如图所示,横坐标对应“1”这个字音的一次较短的发音,经过分帧和特征矢量计算后共得到一个长度为43帧的语音序列,而纵坐标对应“1”这个字音的一次较长的发音,该语音特征序列共有56帧。为了找到两个序列的最佳匹配路径,现把测试模式的各个帧号n=1N(N=43)在一个二维直

28、角坐标系中的横轴上标出,把参考模式的各帧号m=1M(M=56)在纵轴上标出。 通过这些表示帧号的整数坐标画一些纵横线即可形成一个网格,网格中何一个节点(n,m)表示测试模式中的某一帧和参考模式中的某一帧的交汇点。动态时间规整算法可以归结为寻找一条通过此网格中若干交叉点的路径,路径通过的交叉点即为参考模式和测试模式中进行失真计算的帧号。路径不是随意选择的,首先任何一种语音的发音快慢可能有变化,但是各部分的先后顺序不可能改变,因此所选的路径必定从左下角出发,在右上角结束。其次为了防止漫无目的的搜索,可以删去那些向n轴方向或者m轴方向过分倾斜的路径(例如,过分向n轴倾斜意味着R(m)压缩很大而T(n

29、)扩张很大,而实际语音中这种压、扩总是有限的)。为了引入这个限制,可以对路径中各通过点的路径平均斜率的最大值和最小值予以限制。通常最大斜率定为2,最小平均斜率定为12。路径的出发点可以选择(n,m)=(1,1)点,也可以选择(n,m)=(1,2)或(1,3)或(2,1)或(3,1)点出发。前者称为固定起点,后者称为松弛起点。同样,路径可在(n,m)=(N,M)点结束,也可以在(n,m)=(N,M-1)或(N,M-2)或(N-1,M)或(N-2,M)点结束。前者称为固定终点,后者称为松弛终点。 D=min(i)i=1MdTi,R(i) (3-11)式中,dTi,R(i) 是第i帧测试矢量Ti和第

30、j帧模板矢量Rj之间的距离测度,D则是处于最有时间规整情况下两矢量之间的匹配路径。实际中采用动态规划技术来加以具体实现的。动态规划是一种最优化算法。总代价函数的计算式为Dc(k)=dc(k)+min Dc(k-1) (3-12)式中,dc(k)为匹配点c(k) 本身的代价,min Dc(k-1)是在c(k)以前所有允许值(由路径限制而定)中的最小的一个。一次总代价函数是该点本身的代价与达到改点的最佳路径的代价之和。由于DTW不断地计算两矢量的距离以寻找最优的匹配路径,所以得到的是两矢量匹配时积累距离最小的规整函数,这就保证了它们之间存在最大的声学相似特性。使用DTW算法为核心直接构造识别系统十

31、分简单,首先通过训练得到词汇表中各参考语音的特征序列,直接将这些序列存储为模板。在进行识别时,将待识语音的特征序列依次与各参考语音特征序列进行DTW匹配,最后得到的总失真度最小且小于识别阈值的就认为是识别结果。该方法最显著的优点是识别率极高,大大超过目前多数的HMM语音识别系统和VQ语音识别系统。但其最明显的缺点是由于需要对大量路径及这些路径中的所有节点进行匹配计算,导致计算量极大,随着词汇量的增大其识别过程甚至将达到难以接受的程度,因此无法直接应用于大、中词汇量识别系统。4 程序设计、调试与结果分析4.1 语音信号相关法的MATLAB的实现Matlab仿真效果如下图,图中上部分为模板信号的时

32、域波形,下部分为测试信号的时域波形,相关系数为0.1441,代码如下 图3-10recorder01(0);fname=sprintf('train0%d.wav',0); x,fs,bits=wavread(fname,20000);M=240;L=length(x);LL=length(x)/M;Em=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=x(ii:ii+240); Em(ii)=sum(temp.*temp); endMn=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=

33、x(ii:ii+240); Mn(ii)=sum(abs(temp)/M; endZn=zeros(1,(LL-1)*240); for ii=2:(LL-1)*240,temp1=sign(x(ii:ii+240); temp=sign(x(ii-1:ii+240-1); Zn(ii)=sum(abs(temp1-temp); end inc =90;amp1 = 0.5; amp2 = 0.0005; zcr1 = 10; zcr2 = 2; minsilence = 10000; minlen = 10;status = 0;count = 0; silence = 0; amp=Em;

34、 zcr=Zn;amp1 = min(amp1, max(amp)/4); amp2 = min(amp2, max(amp)/8); for n=1:length(zcr) goto = 0; switch status case 0,1if amp(n) > amp1 x1 = max(n-count-1,1); status = 2; silence = 0; count = count + 1;elseif amp(n) > amp2 | zcr(n) > zcr2 status = 1; count = count + 1; else status = 0; cou

35、nt = 0;endcase 2,if amp(n) > amp2 |zcr(n) > zcr2count = count + 1; else silence = silence+1; if silence < minsilence %时间小于此不算噪声count = count + 1; elseif count < minlenstatus = 0; silence = 0; count = 0;else status = 3; end end case 3,break; end endcount = count-silence/2; x2 = x1 + count

36、 -1; y=x(x1:x2);fb=1000;fc=1200;As=100;Ap=1;Fs=8000;wc=2*pi*fc/Fs;wb=2*pi*fb/Fs;wdel=wc-wb;beta=0.112*(As-8.7);N=ceil(As-8)/2.285/wdel);wn=kaiser(N+1,beta);ws=(wb+wc)/2/pi;b=fir1(N,ws,wn);z=fftfilt(b,y);subplot(211);plot(y);axis(0 20000 -2 2);title('模板信号');recorder01(1);fname=sprintf('tr

37、ain0%d.wav',1);w,fs,bits=wavread(fname,20000);M=240;L1=length(w);LL1=length(w)/M;Em=zeros(1,(LL1-1)*240); for ii=1:(LL1-1)*240, temp=w(ii:ii+240); Em(ii)=sum(temp.*temp); endMn=zeros(1,(LL1-1)*240); for ii=1:(LL1-1)*240, temp=w(ii:ii+240); Mn(ii)=sum(abs(temp)/M; endZn=zeros(1,(LL1-1)*240); for

38、ii=2:(LL1-1)*240,temp1=sign(w(ii:ii+240); temp=sign(w(ii-1:ii+240-1); Zn(ii)=sum(abs(temp1-temp); end inc =90;amp1 = 0.5; amp2 = 0.0005; zcr1 = 10; zcr2 = 2; minsilence = 10000; minlen = 10;status = 0;count = 0; silence = 0; amp=Em; zcr=Zn;amp1 = min(amp1, max(amp)/4); amp2 = min(amp2, max(amp)/8);

39、for n=1:length(zcr) goto = 0; switch status case 0,1if amp(n) > amp1 x1 = max(n-count-1,1); status = 2; silence = 0; count = count + 1;elseif amp(n) > amp2 | zcr(n) > zcr2 status = 1; count = count + 1; else status = 0; count = 0;endcase 2,if amp(n) > amp2 |zcr(n) > zcr2count = count + 1; else silence = silence+1; if silence < minsilence %时间小于此不算噪声count = count + 1; elseif count < minlenstatus = 0; silence = 0; count = 0;else sta

温馨提示

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

评论

0/150

提交评论