首页 数字语音信号处理实验

数字语音信号处理实验

举报
开通vip

数字语音信号处理实验语音信号处理实验2015年10月28日语音信号处理实验实验学时数:8实验学分:0.5实验项目数:41、目的与基本要求实验为研究型(设计型)实验,共安排4个,为了真正达到研究设计型实验的目的,采用开放实验的办法,将自主学习和研究设计型实验结合起来,统一安排。自主学习内容由学生自主学习参考教材的内容,并采用多种渠道,如查阅最新语音信号处理方面的科技文献、资料,作出学习报告。目的是培养学生的自学能力和科技文献的检索和查阅能力,同时可以有助于学生了解和掌握语音信号处理领域的最新技术进展和应用情况,将理论知识和实际应用结合起...

数字语音信号处理实验
语音信号处理实验2015年10月28日语音信号处理实验实验学时数:8实验学分:0.5实验项目数:41、目的与基本要求实验为研究型( 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 型)实验,共安排4个,为了真正达到研究设计型实验的目的,采用开放实验的办法,将自主学习和研究设计型实验结合起来,统一安排。自主学习内容由学生自主学习参考教材的内容,并采用多种渠道,如查阅最新语音信号处理方面的科技文献、资料,作出学习报告。目的是培养学生的自学能力和科技文献的检索和查阅能力,同时可以有助于学生了解和掌握语音信号处理领域的最新技术进展和应用情况,将理论知识和实际应用结合起来,促进学生学习的积极性和主动性。通过开放实验,目的使学生进一步理解数字语音信息处理的基本方法,提高学生自主分析、发现及解决问题的能力,锻炼学生论文写作能力,为实际的应用打下扎实的基础。2、研究设计型实验的内容1)研究设计型实验1:基于MATLAB的语音信号时域特征分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时过零率、短时能量、短时自相关特征的分析结果,并借助时域分析方法检测所分析语音信号的基音周期。2)研究设计型实验2:基于MATLAB分析语音信号频域特征要求:按所学相关语音处理的得知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的短时谱、倒谱、语谱图的分析结果,并借助频域分析方法检测所分析语音信号的基音周期或共振峰。3)研究设计型实验3:基于MATLAB进行语音信号的LPC分析要求:按所学相关语音处理的知识,通过网上学习、资料查阅,自己设计程序,给出某一语音信号的LPC分析结果,包括LPC谱、LPCC谱的分析结果,并借助LPC分析方法检测所分析语音信号的基音周期和共振峰。4)研究设计型实验4:基于VQ的特定人孤立词语音识别研究要求:按所学相关语音处理的知识,通过网上学习、资料查阅,借助MATLAB工具,自己设计基于VQ的码本训练程序和识别程序(尽量选用所学HMM或DTW方法设计识别程序),能识别特定人的语音,分析所设计系统的特性。实验一基于MATLAB的语音信号时域特征分析(2学时)1、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在与方便有效的提取并 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示语音信号所携带的信息。语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。2、实验原理及实验结果1)短时能量(1)加矩形窗a=wavread('C:\Users\Administrator\Desktop\shiyan.wav');subplot(6,1,1),plot(a);N=32;fori=2:6h=linspace(1,1,2.^(i-2)*N);%形成一个矩形窗,长度为2.^(i-2)*NEn=conv(h,a.*a);%求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2)legend('N=32');elseif(i==3)legend('N=64');elseif(i==4)legend('N=128');elseif(i==5)legend('N=256');elseif(i==6)legend('N=512');endEnd(2)加汉明窗a=wavread('beifeng.wav');subplot(6,1,1),plot(a);N=32;fori=2:6h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*NEn=conv(h,a.*a);%求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2)legend('N=32');elseif(i==3)legend('N=64');elseif(i==4)legend('N=128');elseif(i==5)legend('N=256');elseif(i==6)legend('N=512');endend2)短时平均过零率a=wavread('C:\Users\Administrator\Desktop\shiyan.wav');n=length(a);N=320;subplot(3,1,1),plot(a),title('shiyan');h=linspace(1,1,N);En=conv(h,a.*a);%求卷积得其短时能量函数Ensubplot(3,1,2),plot(En),title('卷积得其短时能量函数En');fori=1:n-1ifa(i)>=0b(i)=1;elseb(i)=-1;endifa(i+1)>=0b(i+1)=1;elseb(i+1)=-1;endw(i)=abs(b(i+1)-b(i));%求出每相邻两点符号的差值的绝对值endk=1;j=0;while(k+N-1) 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。二、实验原理(自己补充)1)滤波器频率响应对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器。其功能就是得到一个特定频率或消除一个特定频率,滤波器是一种对信号有处理作用的器件或电路。主要作用是:让有用信号尽可能无衰减的通过,对无用信号尽可能大的。滤波器的类型:巴特沃斯响应(最平坦响应),贝赛尔响应,切贝雪夫响应。滤波器冲激响应的傅里叶变换就是该滤波器的频率响应。2)快速卷积卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即一个域中的卷积相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。其中表示f的傅里叶变换。这一定理对拉普拉斯变换、双边拉普拉斯变换等各种傅里叶变换的变体同样成立。在调和分析中还可以推广到在局部紧致的阿贝尔群上定义的傅里叶变换。利用卷积定理可以简化卷积的运算量。对于长度为n的序列,按照卷积的定义进行计算,需要做2n-1组对位乘法,其计算复杂度为;而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度为。这一结果可以在快速乘法计算中得到应用。信号的离散傅里叶变换有限长序列的离散傅里叶变换公式为:MATLAB函数:fft功能是实现快速傅里叶变换,fft函数的格式为:返回向量x的不连续fourier变换。若是一个N=12的有限序列,利用MATLAB计算它的离散傅里叶变换并画出图形,然后再对进行离散傅里叶反变换求出并画出其波形。频率分辨率与DFT参数的选择在DFT问题中,频率分辨率是指在频率轴上所得到的最小频率间隔,即最小频率间隔反比于数据的长度N。若在中有两个频率分别为和的信号,对用矩形窗截断时,要分辨出这两个频率,N必须满足通过下面实验,验证上面的结论:设一序列中含有两种频率成分,,采样频率取为,表示为根据上面的结论,要区分这两种频率成分,必须满足。取时,计算的DFT;取时,计算的DFT参考程序1)短时谱cleara=wavread('shiyan.wav');subplot(2,1,1),plot(a);title('originalsignal');gridN=256;h=hamming(N);form=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱');grid2)语谱图[x,fs,nbits]=wavread('shiyan..wav')specgram(x,512,fs,100);xlabel('时间(s)');ylabel('频率(Hz)');title('语谱图');3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('shiayn.wav',[4000,4350]);N=300;h=linspace(1,1,N);form=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加矩形窗时的倒谱')subplot(2,1,2)plot(c);title('加矩形窗时的复倒谱')(2)加汉明窗时的倒谱和复倒谱cleara=wavread('shiyan.wav',[4000,4350]);N=300;h=hamming(N);form=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title('加汉明窗时的倒谱')subplot(2,1,2)plot(c);title('加汉明窗时的复倒')实验三基于MATLAB的LPC分析一、实验目的线性预测分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音处理领域中得到了广泛的应用。语音线性预测的基本思想是:一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。采用线性预测分析不仅能够得到语音信号的预测波形,而且能够提供一个非常好的声道模型。如果将语音模型看作激励源通过一个线性时不变系统产生的输出,那么可以利用LP分析对声道参数进行估值,以少量低信息率的时变参数精确地描述语音波形及其频谱的性质。此外,LP分析还能够对共振峰、功率谱等语音参数进行精确估计,LP分析得到的参数可以作为语音识别的重要参数之一。由于语音是一种短时平稳信号,因此只能利用一段语音来估计模型参数。此时有两种 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 :一种是将长的语音序列加窗,然后对加窗语音进行LP分析,只要限定窗的长度就可以保证分析的短时性,这种方案称为自相关法;另一种方案不对语音加窗,而是在计算均方预测误差时限制其取和区间,这样可以导出LP分析的自协方差法。本实验要求掌握LPC原理,会利用已学的知识,编写程序估计线性预测系数以及LPC的推演参数,并能利用所求的相关参数估计语音的端点、清浊音判断、基因周期、共振峰等。2、实验原理LPC分析为线性时不变因果稳定系统V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计。如果利用P个取样值来进行预测,则称为P阶线性预测。假设用过去P个取样值的加权之和来预测信号当前取样值,则预测信号为:(1)其中加权系数用表示,称为预测系数,则预测误差为:(2)要使预测最佳,则要使短时平均预测误差最小有:(3)(4)令(5)最小的可表示成:(6)显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。通过LPC分析,由若干帧语音可以得到若干组LPC参数,每组参数形成一个描绘该帧语音特征的矢量,即LPC特征矢量。由LPC特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值。三、实验结果我们使用的原始语音为“shiyan”,采样频率为11000Hz,运行程序见附录。在这里我们取第30帧进行观察,线性预测阶数为12,看到图3.1所示的原始语音帧的波形,预测语音帧波形和它们之间预测误差的波形。图3.2为原始语音帧和预测语音帧的短时谱和LPC谱的波形图3.1原始语音帧和预测误差的波形图3.2原始语音帧和预测语音帧的短时谱和LPC谱的波形图3.3原始语音和预测误差的倒谱波形图3.4预测误差倒频谱三、实验程序MusicSource=wavread(‘shiyan’');Music_source=MusicSource';N=256;%windowlength,N=100--1000;Hamm=hamming(N);%createHammingwindowframe=input('请键入想要处理的帧位置=');%originiscurrentframeorigin=Music_source(((frame-1)*(N/2)+1):((frame-1)*(N/2)+N));Frame=origin.*Hamm';%%ShortTimeFourierTransform%[s1,f1,t1]=specgram(MusicSource,N,N/2,N);[Xs1,Ys1]=size(s1);fori=1:Xs1FTframe1(i)=s1(i,frame);endN1=input('请键入预测器阶数=');%N1ispredictor'sorder[coef,gain]=lpc(Frame,N1);%LPCanalysisusingLevinson-Durbinrecursionest_Frame=filter([0-coef(2:end)],1,Frame);%estimateframe(LP)FFT_est=fft(est_Frame);err=Frame-est_Frame;%error%FFT_err=fft(err);subplot(2,1,1),plot(1:N,Frame,1:N,est_Frame,'-r');grid;title('原始语音帧vs.预测后语音帧')subplot(2,1,2),plot(err);grid;title('误差');pausefLength(1:2*N)=[origin,zeros(1,N)];Xm=fft(fLength,2*N);X=Xm.*conj(Xm);Y=fft(X,2*N);Rk=Y(1:N);PART=sum(coef(2:N1+1).*Rk(1:N1));G=sqrt(sum(Frame.^2)-PART);A=(FTframe1-FFT_est(1:length(f1')))./FTframe1;%inversefilterA(Z)subplot(2,1,1),plot(f1',20*log(abs(FTframe1)),f1',(20*log(abs(1./A))),'-r');grid;title('短时谱');subplot(2,1,2),plot(f1',(20*log(abs(G./A))));grid;title('LPC谱');pausetemp=FTframe1-FFT_est(1:length(f1'));%notmovehigherfrequncepitch1=log(abs(temp));pLength=length(pitch1);result1=ifft(pitch1,N);%movehigherfrequncepitch1((pLength-32):pLength)=0;result2=ifft(pitch1,N);%directdorealcepstrumwitherrpitch=fftshift(rceps(err));origin_pitch=fftshift(rceps(Frame));subplot(211),plot(origin_pitch);grid;title('原始语音帧倒谱(直接调用函数)');subplot(212),plot(pitch);grid;title('预测误差倒谱(直接调用函数)');pausesubplot(211),plot(1:length(result1),fftshift(real(result1)));grid;title('预测误差倒谱(根据定义编写,没有去除高频分量)');subplot(212),plot(1:length(result2),fftshift(real(result2)));grid;title('预测误差倒谱(根据定义编写,去除高频分量)');实验四基于VQ的特定人孤立词语音识别研究一、实验目的矢量量化(VectorQuantization)是一种极其重要的信号压缩方法,是自70年代末才发展起来的。它广泛应用于语音编码、语音识别与合成、图象压缩等领域。VQ在语音信号处理中占有十分重要的地位。许多重要的研究课题中,特别是低速语音编码和语音识别的研究中,VQ都起着非常重要的作用。量化可以分为两大类:一类是标量量化,另一类是矢量量化。标量量化是将取样后的信号值逐个地进行量化,而矢量量化是将若干个取样信号分成一组,即构成一个矢量,然后对此矢量一次进行量化。当然,矢量量化压缩数据的同时也有信息的损失,但这仅取决于量化的精度。矢量量化是标量量化的发展,可以说,凡是要用量化的地方都可以应用矢量量化。本实验要求掌握矢量量化的原理,会利用已学的相关语音特征,构建语音特征矢量,然后利用VQ技术,编写训练VQ码表的程序,并在此基础上利用所学的语音识别技术,编程实现基于矢量量化的特定人孤立词语音识别,要注意的是识别过程中语音端点如何检测,从识别的实时性角度出发,建议能利用VC技术实现。2、实验原理1矢量量化1)基本原理矢量量化的过程是:将语音信号波形的K个样点的每一帧,或者有K个参数的每一参数帧,构成K维空间中的一个矢量,然后对这个矢量进行量化。通常所说的标量量化,也可以说是K=1的一维矢量量化。矢量量化的过程与标量量化相似。在标量量化时,在一维的零至无大值之间设置若干个量化阶梯,当某输入信号的幅度值落在某相邻的两个量化阶梯之间时,就被量化为两阶梯的中心值。而在矢量量化时,将K维无限空间划为M个区域边界,然后将输入矢量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。2)、失真测度设计矢量量化器的关键是编码器的设计,而译码器的工作仅是一个简单的查表过程。在编码的过程中,需要引入失真测度的概念。失真是将输入信号矢量用码书的重构矢量来表征时的误差或所付出的代价。而这种代价的统计平均值(平均失真)描述了矢量量化器的工作特性。在矢量量化器的设计中,失真测度的选择是很重要的。失真测度选用的合适与否,直接影响系统的性能。要使所选择的失真测度有实际意义,必须具备以下几个条件:在主观评价上有意义,即最小的失真应该对应与好的主观语言质量;易于处理,即在数学上易于实现,这样可以用于实际的矢量量化器的设计;平均失真存在并且可以计算。2LBG算法算法是由Linde,Buzo和Gray在1980年首次提出的,常称为LBG算法。它是标量量化器中Lioyd算法的多维推广。整个算法实际上就是反复迭代的过程,既用初始码书寻找最佳码书的迭代过程。它由对初始码书进行迭代优化开始,一直到系统性能满足要求或者不再有明显的改进为止。这种算法既可以用于已知信号源概率分布的场合,也可以用于未知信号源概率分布的场合,但此时要知道它的一系列输出值(称为训练序列)。由于通常语音信号的概率分布随着各种应用场合的不同,不可能事先统计过,因而无法知道它的概率分布;3语音识别;语音识别是研究使机器能够准确地听出人的语音内容的;运用语音识别技术,人们设计了各种语音识别系统;这种系统存在的问题最少,因为单词之间有停顿,可以;不管用何种语音识别方法,主要过程由两部分组成,一;要实现上面的隐马尔可夫模型,模型的输入信号必须取;三、实验结果;就算法模型方面而言,需要有进一步的突破;就强健性方面而言.3语音识别语音识别是研究使机器能够准确地听出人的语音内容的问题,即准确的识别所说的语音。语音识别是近二三十几年发展起来的新兴学科,在计算机、信息处理、通信与电子系统、自动控制等领域中有着广泛的应用。运用语音识别技术,人们设计了各种语音识别系统。有的已经应用于实际,有的还处在研究阶段。其中对孤立词的识别,研究的最早也最成熟,目前,对孤立词的识别无论是小词汇量还是大词汇量,无论是与讲话者有关还是与讲话者无关,在实验室中的正识率已经达到95%以上。这种系统存在的问题最少,因为单词之间有停顿,可以使识别问题简单化;且单词之间的端点检测比较容易;单词之间的协同发音影响也可以减至最低;对孤立词的发音都比较认真。由于此系统本身用途广泛,且其许多技术对其他类型系统有通用性并易于推广,所以稍加补充一些知识就可用于其他类型系统(如在识别部分加用适当语义信息等,则可用于连续语音识别中)。采用矢量量化技术主要用于减少计算量,应用于特征处理可减少特征的类型从而减少计算量,也可以推广应用到摸板的归并压缩。其主要工作就是聚类,即在特征空间中合理的拟定一组点(称为一组聚类中心或码本),每个中心称为码字。于是特征空间中任一点均可按最小距离准则用码本之一来代表。不管用何种语音识别方法,主要过程由两部分组成,一是训练,一是识别。在进行训练时,用观察的序列训练得到参考模型集,每一个模型对应于摸板中的一个单词。在进行识别时,为每一个参考模型计算出产生测试观察的概率,且测试信号(即输入信号)按最大概率被识别为某个单词。三、实验结果实验程序:1、mfcc.mfunctionccc=mfcc(x)bank=melbankm(24,256,8000,0,0.5,'m');bank=full(bank);bank=bank/max(bank(:));fork=1:12n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw=1+6*sin(pi*[1:12]./12);w=w/max(w);xx=double(x);xx=filter([1-0.9375],1,xx);xx=enframe(xx,256,80);fori=1:size(xx,1)y=xx(i,:);s=y'.*hamming(256);t=abs(fft(s));t=t.^2;c1=dctcoef*log(bank*t(1:129));c2=c1.*w';m(i,:)=c2';enddtm=zeros(size(m));fori=3:size(m,1)-2dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);enddtm=dtm/3;ccc=[mdtm];ccc=ccc(3:size(m,1)-2,:);2、vad.mfunction[x1,x2]=vad(x)x=double(x);x=x/max(abs(x));FrameLen=240;FrameInc=80;amp1=10;amp2=2;zcr1=10;zcr2=5;maxsilence=8;%6*10ms=30msminlen=15;%15*10ms=150msstatus=0;count=0;silence=0;tmp1=enframe(x(1:end-1),FrameLen,FrameInc);tmp2=enframe(x(2:end),FrameLen,FrameInc);signs=(tmp1.*tmp2)<0;diffs=(tmp1-tmp2)>0.02;zcr=sum(signs.*diffs,2);amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),2);amp1=min(amp1,max(amp)/4);amp2=min(amp2,max(amp)/8);x1=0;x2=0;forn=1:length(zcr)goto=0;switchstatuscase{0,1}ifamp(n)>amp1x1=max(n-count-1,1);status=2;silence=0;count=count+1;elseifamp(n)>amp2|...zcr(n)>zcr2status=1;count=count+1;elsestatus=0;count=0;endcase2,ifamp(n)>amp2|...zcr(n)>zcr2count=count+1;elsesilence=silence+1;ifsilence1dela=abs(sumd(k)-sumd(k-1))/sumd(k);endk=k+1;chushi=xchushi;endreturn4、testvq.mclear;disp('这是一个简易语音识别系统,请保证已经将您的语音保存在相应文件夹中')disp('正在训练您的语音模版指令,请稍后...')fori=1:10fname=sprintf('D:\\matlab\\work\\dtw1\\海儿的声音\\%da.wav',i-1);x=wavread(fname);[x1x2]=vad(x);m=mfcc(x);m=m(x1:x2-5,:);ref(i).code=codebook(m);enddisp('语音指令训练成功,恭喜!¡')disp('正在测试您的测试语音指令,请稍后...')fori=1:10fname=sprintf('D:\\matlab\\work\\dtw1\\海儿的声音\\%db.wav',i-1);x=wavread(fname);[x1x2]=vad(x);mn=mfcc(x);mn=mn(x1:x2-5,:);%mn=mn(x1:x2,:)test(i).mfcc=mn;endsumsumdmax=0;sumsumdmin=0;disp('对训练过的语音进行测试')forw=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);fori=1:10forp=1:aforj=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin;%×ÜʧÕæendendsumdmin=min(sumd)/a;sumdmin1=min(sumd);sumdmax(w)=max(sumd)/a;sumsumdmin=sumdmin+sumsumdmax;sumsumdmax=sumdmax(w)+sumsumdmax;disp('正在匹配您的语音指令,请稍后...')fori=1:10if(sumd(i)==sumdmin1)switch(i)case1fprintf('您输入的语音指令为:%s;识别结果为%s\n','前','前');case2fprintf('您输入的语音指令为:%s;识别结果为%s\n','后','后');case3fprintf('您输入的语音指令为:%s;识别结果为%s\n','左','左');case4fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','右','右');case5fprintf('您输入的语音指令为:%s;识别结果为%s\n','东','东');case6fprintf('您输入的语音指令为:%s;识别结果为%s\n','南','南');case7fprintf('您输入的语音指令为:%s;识别结果为%s\n','西','西');case8fprintf('您输入的语音指令为:%s;识别结果为%s\n','北','北');case9fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','上','上');case10fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','下','下');otherwisefprintf('error');endendendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10;disp('对没有训练过的语音进行测试')disp('正在测试你的语音,请稍后...')fori=1:10fname=sprintf('D:\\matlab\\work\\dtw1\\º£¶ùµÄÉùÒô\\%db.wav',i-1);x=wavread(fname);[x1x2]=vad(x);mn=mfcc(x);mn=mn(x1:x2-5,:);%mn=mn(x1:x2,:)test(i).mfcc=mn;endforw=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);fori=1:10forp=1:aforj=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin;%×ÜʧÕæendendsumdmin=min(sumd);z=0;fori=1:10if(((sumd(i))/a)>delamax)||z=z+1;endenddisp('正在匹配您的语音指令,请稍后...')ifz<=3fori=1:10if(sumd(i)==sumdmin)switch(i)case1fprintf('您输入的语音指令为:%s;识别结果为%s\n','前','前');case2fprintf('您输入的语音指令为:%s;识别结果为%s\n','后','后');case3fprintf('您输入的语音指令为:%s;识别结果为%s\n','左','左');case4fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','右','右');case5fprintf('您输入的语音指令为:%s;识别结果为%s\n','东','东');case6fprintf('您输入的语音指令为:%s;识别结果为%s\n','南','南');case7fprintf('您输入的语音指令为:%s;识别结果为%s\n','西','西');case8fprintf('您输入的语音指令为:%s;识别结果为%s\n','北','北');case9fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','上','上');case10fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','下','下');otherwisefprintf('error');endendendelsefprintf('您输入的语音无效¡£¡\n')endendcase6fprintf('您输入的语音指令为:%s;识别结果为%s\n','南','南');case7fprintf('您输入的语音指令为:%s;识别结果为%s\n','西','西');case8fprintf('您输入的语音指令为:%s;识别结果为%s\n','北','北');case9fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','上','上');case10fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','下','下');otherwisefprintf('error');endendendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10;disp('对没有训练过的语音进行测试')disp('正在测试你的语音,请稍后...')fori=1:10fname=sprintf('D:\\matlab\\work\\dtw1\\º£¶ùµÄÉùÒô\\%db.wav',i-1);x=wavread(fname);[x1x2]=vad(x);mn=mfcc(x);mn=mn(x1:x2-5,:);%mn=mn(x1:x2,:)test(i).mfcc=mn;endforw=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);fori=1:10forp=1:aforj=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin;%×ÜʧÕæendendsumdmin=min(sumd);z=0;fori=1:10if(((sumd(i))/a)>delamax)||z=z+1;endenddisp('正在匹配您的语音指令,请稍后...')ifz<=3fori=1:10if(sumd(i)==sumdmin)switch(i)case1fprintf('您输入的语音指令为:%s;识别结果为%s\n','前','前');case2fprintf('您输入的语音指令为:%s;识别结果为%s\n','后','后');case3fprintf('您输入的语音指令为:%s;识别结果为%s\n','左','左');case4fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','右','右');case5fprintf('您输入的语音指令为:%s;识别结果为%s\n','东','东');case6fprintf('您输入的语音指令为:%s;识别结果为%s\n','南','南');case7fprintf('您输入的语音指令为:%s;识别结果为%s\n','西','西');case8fprintf('您输入的语音指令为:%s;识别结果为%s\n','北','北');case9fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','上','上');case10fprintf('您输入的语音指令为ª:%s;识别结果为%s\n','下','下');otherwisefprintf('error');endendendelsefprintf('您输入的语音无效¡£¡\n')endend加矩形窗加汉明窗
本文档为【数字语音信号处理实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
拍拍£宝贝
有多年的行政人事工作经验,现负责公司员工招聘,筛选,面试,培训等管理
格式:doc
大小:331KB
软件:Word
页数:0
分类:企业经营
上传时间:2018-05-30
浏览量:2