语音信号处理实验报告实验二
语音信号处理实验报告实验二
语音信号处理实验报告实验二一、实验目的本次语音信号处理实验的目的是深入了解语音信号的特性,掌握语音信号处理的基本方法和技术,并通过实际操作和数据分析来验证和巩固所学的理论知识。
具体而言,本次实验旨在:1、熟悉语音信号的采集和预处理过程,包括录音设备的使用、音频格式的转换以及噪声去除等操作。
2、掌握语音信号的时域和频域分析方法,能够使用相关工具和算法计算语音信号的短时能量、短时过零率、频谱等特征参数。
3、研究语音信号的编码和解码技术,了解不同编码算法对语音质量和数据压缩率的影响。
4、通过实验,培养我们的动手能力、问题解决能力和团队协作精神,提高我们对语音信号处理领域的兴趣和探索欲望。
二、实验原理(一)语音信号的采集和预处理语音信号的采集通常使用麦克风等设备将声音转换为电信号,然后通过模数转换器(ADC)将模拟信号转换为数字信号。
在采集过程中,可能会引入噪声和干扰,因此需要进行预处理,如滤波、降噪等操作,以提高信号的质量。
(二)语音信号的时域分析时域分析是对语音信号在时间轴上的特征进行分析。
常用的时域参数包括短时能量、短时过零率等。
短时能量反映了语音信号在短时间内的能量分布情况,短时过零率则表示信号在单位时间内穿过零电平的次数,可用于区分清音和浊音。
(三)语音信号的频域分析频域分析是将语音信号从时域转换到频域进行分析。
通过快速傅里叶变换(FFT)可以得到语音信号的频谱,从而了解信号的频率成分和分布情况。
(四)语音信号的编码和解码语音编码的目的是在保证一定语音质量的前提下,尽可能降低编码比特率,以减少存储空间和传输带宽的需求。
常见的编码算法有脉冲编码调制(PCM)、自适应差分脉冲编码调制(ADPCM)等。
三、实验设备和软件1、计算机一台2、音频采集设备(如麦克风)3、音频处理软件(如 Audacity、Matlab 等)四、实验步骤(一)语音信号的采集使用麦克风和音频采集软件录制一段语音,保存为常见的音频格式(如 WAV)。
语音信号处理实验报告
语音信号处理实验报告——语音信号分析实验一.实验目的及原理语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理,并且语音合成的音质好坏和语音识别率的高低,都取决于对语音信号分析的准确性和精确性。
贯穿语音分析全过程的是“短时分析技术”。
因为从整体来看,语音信号的特性及表征其本质特征的参数均是随时间变化的,所以它是一个非平稳态过程,但是在一个短时间范围内(一般认为在10~30ms的时间内),其特性基本保持不变,即相对稳定,可将其看做一个准稳态过程,即语音信号具有短时平稳性。
所以要将语音信号分帧来分析其特征参数,帧长一般取为10ms~30ms。
二.实验过程1.2. 仿真结果(1) 时域分析男声及女声(蓝色为时域信号,红色为每一帧的能量,绿色为每一帧的过零率)x 104-0.6-0.4-0.200.20.40.60.81x 105-0.4-0.200.20.40.60.811.2某一帧的自相关函数-1-0.8-0.6-0.4-0.200.20.40.60.813. 频域分析①一帧信号的倒谱分析和FFT 及LPC 分析对应的倒谱系数:119.2,-7.6895,……对应的LPC 预测系数:1,-0.1,-0.02,-0.4,-0.27,……②男声和女声的倒谱分析③浊音和清音的倒谱分析原语音波形一帧语音波形一帧语音的倒谱④浊音和清音的FFT分析和LPC分析(红色为FFT图像,绿色为LPC图像)三.实验结果分析1.时域分析实验中采用的是汉明窗,窗的长度对能否由短时能量反应语音信号的变化起着决定性影响。
这里窗长合适,En能够反应语音信号幅度变化。
同时,从图像可以看出,En可以作为区分浊音和清音的特征参数。
短时过零率表示一帧语音中语音信号波形穿过横轴(零电平)的次数。
从图中可以看出,短时能量和过零率可以近似为互补的情况,短时能量大的地方过零率小,短时能量小的地方过零率较大。
《语音信号处理》实验2-基音周期估计
华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
语音信号处理实验二
课程名称:语音信号处理实验项目:语音修正的短时自相关的实现实验地点:起点机房专业班级://///学号:///////////学生姓名: /////////指导教师: ////////2012年 10月 23日一.实验目的1.熟悉语音修正自相关的意义。
2.充分理解取不同窗长时的语音的修正自相关的变化情况。
3.熟悉Matlab编程语音在语音信号处理中的作用。
4.能够实现程序的重新编制。
二.实验原理对于语音来说,采用短时分析方法,语音短时自相关函数为但是,在计算短时自相关时,窗选语音段为有限长度N,而求和上限为N-1-k,因此当k增加时可用于计算的数据就越来越少了,从而导致k增加时自相关函数的幅度减小。
为了解决这个问题,提出了语音修正的短时自相关。
修正的短时自相关函数,其定义如下:三.实验要求1.实验前自己用Cool Edit 音频编辑软件录制声音,并把它保存为.txt文件。
2.编程时间不同矩形窗长N=320,160,70的短时修正自相关。
3.用Matlab画出短时修正自相关的图形。
4.写出实验报告,分析实验结果。
四.实验条件计算机 Matlab软件五.实验步骤1.用Cool Edit 读入浊音语音,设置采样率为8kHz,16位,单声道。
2.将读入的语音wav文件保存为txt文件。
3.读入Matlab中,并且对照取不同矩形窗长N的短时修正自相关函数,画出图形。
六.实验程序及数据fid=fopen('zhuoyin.txt','rt')b=fscanf(fid,'%f');b1=b(1:320);N=160;A=[];for k=1:160;sum=0;for m=1:N;sum=sum+b1(m)*b1(m+k-1); endA(k)=sum;endfor k=1:160A1(k)=A(k)/A(1);endfigure(1)subplot(3,1,1)plot(A1);ylabel('R(k)')legend('N=160')axis([0,320,-1,1]);b2=b(1:200);N=100;B=[];for k=1:100;sum=0;for m=1:N;sum=sum+b2(m)*b2(m+k-1); endB(k)=sum;endfor k=1:100B1(k)=B(k)/B(1);endfigure(1)subplot(3,1,2)plot(B1);ylabel('R(k)')legend('N=100')axis([0,320,-1,1]);L=1;b3=b(1:140);N=70;C=[];for k=1:70;for m=1:N;sum=sum+b3(m)*b3(m+k-1); endC(k)=sum; endfor k=1:70C1(k)=C(k)/C(1); endfigure(1)subplot(3,1,3) plot(C1);ylabel('R(k)') legend('N=70')axis([0,320,-1,1]);050100150200250300-101R (k )N=160050100150200250300-101R (k )N=10050100150200250300-101R (k )N=70七.思考题1.在相同的实验环境下,用Matlab 程序实现语音的短时自相关的图形,并与修正的自相关进行比较,加深对修正自相关的理解。
实验二 语音信号的时域分析
实验二 语音信号的时域分析1 实验目的通过Matlab 编程实现语音信号的时域波形图,并观察清音、浊音信号的时域特点。
掌握语音信号的时域分析技术,如短时平均能量、短时平均幅度、短时平均过零率分析、短时平均自相关、短时平均幅度差。
2 实验原理语音信号的时域分析就是分析和提取语音信号的时域参数。
时域分析通常用于最基本的参数分析及应用,此方法表示语音信号比较直观,物理意义明确,实现起来比较简单,运算量少。
3 实验过程1)观察浊音信号波形图2)观察清音信号波形图3)计算语音信号的短时能量、短时平均幅度并画图120()N n n m E x m -==∑10|()|N n n m M x m -==∑4)计算信号的短时平均过零率并画图 11{|sgn[()]sgn[(1)]|}2N n n m Zn x m x m -==--∑ 5)计算语音信号的短时自相关函数并画图10()()()N k n n n m R k x m x m k --==+∑6)计算语音信号的短时平均幅度差函数并画图10()|()()|N k n n nm F k x m x m k --==-+∑一.短时能量[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav') x=x(:,1);c=x;x=x';N=256;M=N/2;k=1:N;w=0.54-0.46*cos(2*pi/N*k);Fn=fix((L-N)/M)+1;y=[];for i=1:Fnbeg=(i-1)*M+1;ed=beg+N-1;temp=x(beg:ed);temp=temp.*w;y=[y;temp];endEn=[];k=0;for i=1:Fnx=y(i,:);temp=sum(x.*x,2);En=[En,temp];endEn=sum(y.*y,2);subplot(211);plot(c);subplot(212);plot(En);xlabel('time');ylabel('amplitude');title('picture');二.短时自相关函数[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav') x=x(:,1);x=x';N=256;M=N/2;k=1:N;w=0.54-0.46*cos(2*pi/N*k);Fn=fix((L-N)/M)+1;y=[];for i=1:Fnbeg=(i-1)*M+1;ed=beg+N-1;temp=x(beg:ed);temp=temp.*w;y=[y;temp];endZn=sum(abs(sign(y(2:N))-sign(y(1:N-1))),2)*0.5N=256;K=128;for i=1:Fnr=[];x=y(i,:);for k=1:Kr(k)=sum(x(1:N-k).*x(k+1:N),2);endendplot(r);三.短时平均过零率[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav') x=x(:,1);c=x;x=x';N=256;M=N/2;k=1:N;w=0.54-0.46*cos(2*pi/N*k);Fn=fix((L-N)/M)+1;y=[];for i=1:Fnbeg=(i-1)*M+1;ed=beg+N-1;temp=x(beg:ed);temp=temp.*w;y=[y;temp];endfor i=1:Fnx=y(i,:);Zn1=[0];for k=2:NZ=0.5*abs(sign(x(k))-sign(x(k-1)));Zn1=Zn1+Z;endZn=[Zn,Zn1];endsubplot(211);plot(c);subplot(212);plot(Zn);xlabel('time');ylabel('amplitude');title('picture');四.短时平均幅度[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav') x=x(:,1);c=x;x=x';N=256;M=N/2;w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1;y=[];for i=1:Fnbeg=(i-1)*M+1;ed=beg+N-1;temp=x(beg:ed);temp=temp.*w;y=[y;temp];endEn=[];k=0;for i=1:Fnx=y(i,:);temp=sum(abs(x),2);En=[En,temp];endEn=sum(y.*y,2);subplot(211);plot(c);subplot(212);plot(En);xlabel('time');ylabel('amplitude');title('picture');五.短时平均幅度差函数[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav') x=x(:,1);x=x';N=256;M=N/2;k=1:N;w=0.54-0.46*cos(2*pi/N*k);Fn=fix((L-N)/M)+1;y=[];for i=1:Fnbeg=(i-1)*M+1;ed=beg+N-1;temp=x(beg:ed);temp=temp.*w;y=[y;temp];endZn=sum(abs(sign(y(2:N))-sign(y(1:N-1))),2)*0.5N=256;K=128;for i=1:Fnr=[];x=y(i,:);for k=1:KF1(k)=abs(x(M)-x(M+k));endendplot(F1);。
DSP实验二 语音信号分析与处理,南京理工大学紫金学院实验报告,信号与系统
实验二语音信号分析与处理学号姓名注:1)此次实验作为《数字信号处理》课程实验成绩的重要依据,请同学们认真、独立完成,不得抄袭。
2)请在授课教师规定的时间内完成;3)完成作业后,请以word格式保存,文件名为:学号+姓名4)请通读全文,依据第2及第3 两部分内容,认真填写第4部分所需的实验数据,并给出程序内容。
1. 实验目的(1) 学会MATLAB的使用,掌握MATLAB的程序设计方法(2) 掌握在windows环境下语音信号采集的方法(3) 掌握MATLAB设计FIR和IIR滤波器的方法及应用(4) 学会用MATLAB对语音信号的分析与处理方法2. 实验内容录制一段自己的语音信号,对录制的语音信号进行采样,画出采样后语音信号的时域波形和频谱图,确定语音信号的频带范围;使用MATLAB产生白噪声信号模拟语音信号在处理过程中的加性噪声并与语音信号进行叠加,画出受污染语音信号的时域波形和频谱图;采用双线性法设计出IIR滤波器和窗函数法设计出FIR滤波器,画出滤波器的频响特性图;用自己设计的这两种滤波器分别对受污染的语音信号进行滤波,画出滤波后语音信号的时域波形和频谱图;对滤波前后的语音信号进行时域波形和频谱图的对比,分析信号的变化;回放语音信号,感觉与原始语音的不同。
3. 实验步骤1)语音信号的采集与回放利用windous下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav格式保存,如wql.wav),时间控制再2秒之内,利用MATLAB提供的函数wavread 对语音信号进行采样,提供sound函数对语音信号进行回放。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率nbits表示采样位数。
Wavread的更多用法请使用help命令自行查询。
2)语音信号的频谱分析利用fft函数对信号进行频谱分析3)受白噪声干扰的语音信号的产生与频谱分析4)据语音信号的频带情况,设计FIR和IIR两种滤波器5)用滤波器对受污染语音信号进行滤波FIR滤波器fftfilt函数对信号进行滤波,IIR滤波器用filter函数对信号进行滤波6)比较滤波前后信号的波形与频谱7)回放滤波后的语音信号4. 实验数据及实验程序实验数据1)原始语音信号的时域波形和频谱图00.51 1.52 2.53 3.54 4.5x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25声音波形图00.51 1.52 2.53 3.54 4.5x 104100200300400500600声音频谱图2)带限白噪声信号的时域波形和幅频特性00.51 1.52-1-0.500.511.5窄带噪声波形图00.51 1.52-1-0.50.511.5窄带噪声频谱图3)受污染语音信号的时域波形和频谱图0246x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25混合信号波形图0246x 1040100200300400500600混合信号频谱图4)滤波器的频响特性图 FIR 滤波器的频响特性图00.10.20.30.40.50.60.70.80.91-8000-6000-4000-2000Normalized Frequency (⨯π rad/sample)P h a s e (d e g r e e s )0.10.20.30.40.50.60.70.80.91-300-200-1000100Normalized Frequency (⨯π rad/sample)M a g n i t u d e (d B )246x 104-0.3-0.2-0.100.10.20.30.40.50.60.70246x 1040.20.40.60.811.21.4IIR 滤波器的频响特性图0100200300400500600-300-250-200-150-100-5050低通滤波器幅度谱图5)滤波后语音信号的时域波形和频谱图00.51 1.52 2.53 3.54 4.5x 1041002003004005006000246x 104-0.1-0.050.050.10.15恢复信号波形图0246x 104100200300400500600恢复信号频谱图6)滤波前后的语音信号时域波形对比图和频谱对比图0246x 104-0.2-0.15-0.1-0.0500.050.10.150.20.25信号波形图0246x 104-0.1-0.0500.050.10.15恢复信号波形图0246x 104100200300400500600信号频谱图0246x 104100200300400500600恢复信号频谱图实验程序: 1)实验主程序 clc;clear;close%[x,fs,bits]=wavread('录音的名字'); [x,fs,bits]=wavread('录音的名字.wav'); %x=wavread('录音的名字'); sound(x,fs,bits);plot(x);title('声音波形图') figure(2)%y=fft(x,4096); y=fft(x);plot(abs(y));title('声音频谱图')fh=0.9;fl=0.25;n=1;length(x);y1=fh*sinc(fh*(n-5000))-fl*sinc(fl*(n-5000)); figure(5)subplot(1,2,1);plot(y1);title('窄带噪声波形图') y2=fft(y1);subplot(1,2,2);plot(abs(y2));title('窄带噪声频谱图') y3=y1+x; figure(6)subplot(1,2,1);plot(y1+x);title('混合信号波形图') y4=fft(y3);subplot(1,2,2);plot(abs(y4));title('混合信号频谱图')wp=0.5;ws=0.55; detaw=ws-wp; n=ceil(8*pi/detaw); wc=(wp+ws)/2;b1=fir1(n-1,wc/pi,hanning(n));freqz(b1,1,41856)f1=fftfilt(b1,y3);plot(f1)f2=fft(f1);plot(abs(f2))f11=filter (bz,az, y3);figure(8)subplot(1,2,1);plot(f11);title('恢复信号波形图')f22=fft(f11);subplot(1,2,2);plot(abs(f22));title('恢复信号频谱图') sound(f11,fs,bits);figure(9)subplot(1,2,1);plot(x);title('信号波形图')subplot(1,2,2);plot(f11);title('恢复信号波形图') figure(10)subplot(1,2,1);plot(abs(y));title('信号频谱图') subplot(1,2,2);plot(abs(f22));title('恢复信号频谱图') 2)FIR滤波器子程序fh=0.9;f1=0.25;n=1:length(x);h=fh*sinc(fh*(n-5000))-f1*sinc(f1*(n-5000));figure(4)subplot(1,2,1);plot(h);p=fft(h);subplot(1,2,2);plot(abs(p));3)IIR滤波器子程序fs=44100;rp=3;rs=20;wp1=0.5;wss1=0.55;op1=2*fs*tan(wp1/2);os1=2*fs*tan(wss1/2);[N,wc]=buttord(op1,os1,rp,rs,'s')[z,p,k]=buttap(N);[ba,aa]=zp2tf(z,p,k);[b,a]=lp2lp(ba,aa,wc);[bz,az]=bilinear(b,a,fs);H=freqz(bz,az);ma=20*log10(abs(H));figure(7)plot(ma);title('低通滤波器幅度谱图')。
语音信号处理实验报告
实验一基于 MATLAB 的语音信号时域特征分析操作:报告:一. 实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。
二. 实验内容1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。
在 5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。
我们将每个短时的语音称为一个分析帧。
一般帧长取 10~30ms。
我们采用一个长度有限的窗函数来截取语音信号形成分析帧。
通常会采用矩形窗和汉明窗。
1.1 给出了这两种窗函数在帧长 N=50图时的时域波形。
这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB),会导致泄漏现象;汉明窗的主瓣宽 8*pi/N ,旁瓣峰值低(-42.7dB),可以有效的克服泄漏现象,具有更平滑的低通特性。
因此在语音频谱分析时常使用汉明窗,在计算短时能量和平均幅度时通常用矩形窗。
2. 短时能量由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著。
因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。
定义短时能量为:在用短时能量反映语音信号的幅度变化时,不同的窗函数以及相应窗的长短均有影响。
hamming 窗的效果比矩形窗略好。
lpc
语音信号处理实验报告实验二:语音信号的LPC分析学院:电子与信息学院专业:信息工程提交日期:2014./实验三:语音信号的LPC 分析1、 实验内容线性预测分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音处理领域中得到了广泛的应用。
语音线性预测的基本思想是:一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。
通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。
采用线性预测分析不仅能够得到语音信号的预测波形,而且能够提供一个非常好的声道模型。
如果将语音模型看作激励源通过一个线性时不变系统产生的输出,那么可以利用LP 分析对声道参数进行估值,以少量低信息率的时变参数精确地描述语音波形及其频谱的性质。
此外,LP 分析还能够对共振峰、功率谱等语音参数进行精确估计,LP 分析得到的参数可以作为语音识别的重要参数之一。
2、 实验方法2.1线性预测分析的基本原理线性预测分析为线性时不变因果稳定系统V (z )建立一个全极点模型,并利用均方误差准则,对已知的语音信号s(n)进行模型参数估计。
如果利用P 个取样值来进行预测,则称为P 阶线性预测。
假设用过去P 个取样值()()(){}1,2,S n S n S n p ---的加权之和来预测信号当前取样值()S n,则预测信号()S n∧为:()()1pk k S n a n k ∧==-∑ (1)其中加权系数用k a 表示,称为预测系数,则预测误差为:()()()()()1pk k e n s n S n s n a n k ∧==-=--∑ (2)要使预测最佳,则要使短时平均预测误差最小有:()2min E e n ε⎡⎤==⎣⎦ (3)()20,(1)ke n k p a ⎡⎤∂⎣⎦=≤≤∂ (4)令()()(),,i k E s n i S n k φ=--⎡⎤⎣⎦(5)最小的ε可表示成:()()min 10,00,pk k a k εφφ==-∑ (6)显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。
数字语音信号处理实验报告
语音信号处理实验报告专业班级电子信息1203学生姓名钟英爽指导教师覃爱娜完成日期2015年4月28日电子信息工程系信息科学与工程学院实验一语音波形文件的分析和读取一、实验学时:2 学时二、实验的任务、性质与目的:本实验是选修《语音信号处理》课的电子信息类专业学生的基础实验。
通过实验(1)掌握语音信号的基本特性理论:随机性,时变特性,短时平稳性,相关性等;(2)掌握语音信号的录入方式和*.WAV音波文件的存储结构;(3)使学生初步掌握语音信号处理的一般实验方法。
三、实验原理和步骤:WAV 文件格式简介WAV 文件是多媒体中使用了声波文件的格式之一,它是以RIFF格式为标准。
每个WAV 文件的头四个字节就是“RIFF”。
WAV 文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV 文件标识段和声音数据格式说明段两部分。
常见的WAV 声音文件有两种,分别对应于单声道(11.025KHz 采样率、8Bit 的采样值)和双声道(44.1KHz 采样率、16Bit 的采样值)。
采样率是指声音信号在“模拟→数字”转换过程中,单位时间内采样的次数;采样值是指每一次采样周期内声音模拟信号的积分值。
对于单声道声音文件,采样数据为8 位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16 位的整数(int),高八位和低八位分别代表左右两个声道。
WAV 文件数据块包含以脉冲编码调制(PCM)格式表示的样本。
在单声道WAV 文件中,道0 代表左声道,声道1 代表右声道;在多声道WAV 文件中,样本是交替出现的。
WAV 文件的格式表1 wav文件格式说明表(1)选取WINDOWS 下MEDIA 中的任一WAV 文件,采用播放器进行播放,观察其播放波形,定性描述其特征;(2)录入并存储本人姓名语音文件(姓名.wav),根据WAV 文件的储格式,利用MATLAB 或C 语言,分析并读取文件头和数据信息;(3)将文件的通道数、采样频率、样本位数和第一个数据读取并示出来。
最新语音信号处理实验报告实验二
最新语音信号处理实验报告实验二实验目的:本实验旨在通过实际操作加深对语音信号处理理论的理解,并掌握语音信号的基本处理技术。
通过实验,学习语音信号的采集、分析、滤波、特征提取等关键技术,并探索语音信号处理在实际应用中的潜力。
实验内容:1. 语音信号采集:使用语音采集设备录制一段时长约为10秒的语音样本,确保录音环境安静,语音清晰。
2. 语音信号预处理:对采集到的语音信号进行预处理,包括去噪、归一化等操作,以提高后续处理的准确性。
3. 语音信号分析:利用傅里叶变换等方法分析语音信号的频谱特性,观察并记录基频、谐波等特征。
4. 语音信号滤波:设计并实现一个带通滤波器,用于提取语音信号中的特定频率成分,去除噪声和非目标频率成分。
5. 特征提取:从处理后的语音信号中提取关键特征,如梅尔频率倒谱系数(MFCC)等,为后续的语音识别或分类任务做准备。
6. 实验总结:根据实验结果,撰写实验报告,总结语音信号处理的关键技术和实验中遇到的问题及其解决方案。
实验设备与工具:- 计算机一台,安装有语音信号处理相关软件(如Audacity、MATLAB 等)。
- 麦克风:用于采集语音信号。
- 耳机:用于监听和校正采集到的语音信号。
实验步骤:1. 打开语音采集软件,调整麦克风输入设置,确保录音质量。
2. 录制语音样本,注意控制语速和音量,避免过大或过小。
3. 使用语音分析软件打开录制的语音文件,进行频谱分析,记录观察结果。
4. 设计带通滤波器,设置合适的截止频率,对语音信号进行滤波处理。
5. 应用特征提取算法,获取语音信号的特征向量。
6. 分析滤波和特征提取后的结果,评估处理效果。
实验结果与讨论:- 描述语音信号在预处理、滤波和特征提取后的变化情况。
- 分析实验中遇到的问题,如噪声去除不彻底、频率成分丢失等,并提出可能的改进措施。
- 探讨实验结果对语音识别、语音合成等领域的潜在应用价值。
结论:通过本次实验,我们成功实现了语音信号的基本处理流程,包括采集、预处理、分析、滤波和特征提取。
语音信号处理实验报告 (2)
语音信号处理实验报告实验一1 用Matlab读取一段话音(自己录制一段,最好其中含有汉语四种声调变化,该段话音作为本课实验原始材料),绘制原始语音波形图。
2. 用Matlab计算这段语音的短时平均过零率、短时平均能量和短时平均幅度,并将多个波形同步显示绘图。
3.观察各波形在不同音情况下的参数特点,并归纳总结其中的规律。
clc clc;[x,fs]=wavread('benpao.wav');figureplot(x);axis([0 length(x) min(x) max(x)]);title('原始语音波形')xlabel('时间')f=enframe(x,300,100);[m,n]=size(f);for i=1:menergy(i)=sum(f(i,1:n).^2);mn(i)=sum(abs(f(i,1:n)));endfigureplot(energy);axis([0 length(energy) min(energy) max(energy)]);title('短时能量')figureplot(mn);axis([0 length(mn) min(mn) max(mn)]);title('短时幅度')lingd=zeros(m);for x=1:mfor y=1:n-1temp=f(x,y)*f(x,y+1) ;if temp<= 0lingd(x)=lingd(x)+1;endend%temp1=num(x,1)/300;%count(x)=temp1;endfigureplot(lingd);%axis([0 length(lingd) min(lingd) max(lingd)]);title('短时过零率')子函数:function f=enframe(x,win,inc)%定义函数。
语音信号处理 实验报告
实验一、语音信号采集与分析一、实验目的:1)了解语音信号处理基本知识:语音信号的生成的数学模型。
2)在理论学习的基础上,进一步地理解和掌握语音信号的读入、回放、波形显示。
语音信号时域和频域分析方法。
二、实验原理一定时宽的语音信号,其能量的大小随时间有明显的变化。
其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。
短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。
这在语音识别中有重要意义。
FFT在数字通信、语音信号处理、图像处理、匹配滤波以及功率谱估计、仿真、系统分析等各个领域都得到了广泛的应用。
本实验通过分析加噪的语音信号频谱,可以作为分离信号和噪声的理论基础。
三、实验内容:Matlab编程实验步骤:1.新建M文件,扩展名为“.m”,编写程序;2.选择File/Save命令,将文件保存在F盘中;3.在Command Window窗中输入文件名,运行程序;程序一、用MATLAB对原始语音信号进行时域分析,分析短时平均能量及短时平均过零数。
程序二、用MATLAB对原始语音信号进行频域分析,画出它的时域波形和频谱给原始的语音信号加上一个高频余弦噪声,频率为5kHz。
画出加噪后的语音信号时域和频谱图。
程序1.a=wavread(' D:\II.wav'); %读取语音信号的数据,赋给变量x1,这里的文件的全路径和文件名由个人设计n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);%形成一个矩形窗,长度为NEn=conv(h,a.*a);%求卷积得其短时能量函数Ensubplot(3,1,2),plot(En);for i=1:n-1if a(i)>=0b(i)= 1;elseb(i) = -1;endif a(i+1)>=0b(i+1)=1;elseb(i+1)=-1;endw(i)=abs(b(i+1)-b(i));end%求出每相邻两点符号的差值的绝对值k=1;j=0;while (k+N-1)<nZm(k)=0;for i=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+160; %每次移动半个窗endfor w=1:jQ(w)=Zm(160*(w-1)+1)/640;%短时平均过零率endsubplot(3,1,3),plot(Q);实验结果打印粘贴到右侧:程序2:fs=22050; %语音信号采样频率为22050x1=wavread('D:\II.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号f=fs*(0:511)/1024;t=0:1/22050:(size(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同Au=0.03;d=[Au*cos(2*pi*5000*t)]'; %噪声为5kHz的余弦信号x2=x1+d;sound(x2,22050); %播放加噪声后的语音信号y2=fft(x2,1024); %对信号做1024点FFT变换figure(1)subplot(2,1,1);plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('time n');ylabel('幅值 n');subplot(2,1,2);plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('幅值 n');figure(2)subplot(2,1,1);plot(f,abs(x1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('幅值');subplot(2,1,2);plot(f,abs(y2(1:512)));title('加噪后的信号频谱');xlabel('Hz'); ylabel('幅值');实验结果打印粘贴到右侧:050010001500200025003000350040004500原始语音信号time n幅值 n加噪后的信号time n幅值 n020004000600080001000012000原始语音信号频谱Hz幅值加噪后的信号频谱Hz幅值四、实验分析加入噪声后音频文件可辨性下降,波形的平缓,频谱图上看,能量大部分集中在2000HZz到4000Hz之间。
语音信号信号处理实验报告
实验一 语音信号的端点检测一、实验目的1、掌握短时能量的求解方法2、掌握短时平均过零率的求解方法3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。
二、仪器设备HP 计算机、Matlab 软件三、实验原理3.1、短时能量3.1.1、原理:语音信号能量随时间有相当大的变化,特别是清音段的能量一般比浊音段的小得多。
语音信号的短时能量定义:3.1.2、短时能量序列反映了语音振幅或能量随着时间缓慢变化的规律。
从原始语音信号图中可以看到语音信号幅度随时间有相当大的变化,特别是清音段的幅度一般比浊音段的幅度小很多,语音信号的短时能量给出了反映这些幅度变化的一个合适的描述方法。
3.1.3、短时平均幅度函数和能量函数的作用(1)区分清/浊音。
En 、Mn 大,对应浊音; En 、Mn 小,对应清音。
其中Mn 是短时幅度差。
(2)在信噪比高的情况下,能进行有声/无声判决。
无声时,背景噪声的En 、Mn 小;有声时,En 、Mn 显著增大。
判决时可设置一个门限。
(3)大致能定出浊音变为清音的时刻,或反之。
3.2、短时过零率:3.2.1、定义:过零就是信号通过零值。
连续语音信号,考察其时域波形通过时间轴的情况;离散时间信号,相邻的 值改变符号则称为过零。
12()n N n w m nE x m +-==∑()()()01w x n w n x n m N =⋅≤≤-101() 0n N w n ≤≤-⎧=⎨⎩其它窄带信号,平均过零数作为信号频率的一种简单度量是很精确的,语音信号序列是宽带信号, 则不能简单用上面的公式,但是可以用短时平均过零数来得到频谱的粗略估计。
3.2.2、短时过零分析的意义:(1)、可以区分清音与浊音:浊音时具有较低的平均过零数,而清音时具有较高的平均过零数。
(2)、利用它可以从背景噪声中找出语音信号,可用于判断寂静无语音和有语音的起点和终点位置。
(3)、在背景噪声较小时用平均能量识别较为有效,而在背景噪声较大时用平均过零数识别较为有效。
语音信号实验二报告
实验二语音信号处理班级:08电子C班姓名:苏清法学号:0815241036(1)语音信号的采集:利用Windows下的录音机,录制一段话音。
然后在Matla软件平台下,利用函数wavread对语音信号进行采样,播放语音信号,并绘制原始语音信号;wavread函数调用格式:y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。
[y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。
y=wavread(file,N),读取前N点的采样值放在向量y中。
y=wavread(file,[N1,N2]),读取从N1点到N2点的采样值放在向量y中。
降采样:利用windows下的录音机录制的音频采样率是固定的fs(=22050),可以选择以下函数实现对语音信号的降采样。
y=x((1:N:length(x))); %对原始信号每隔N个点取一位,即采样率变为原来的1/Ny=resample(yn,L,M); %采样率变为原来的L/M倍y=downsample(yn,N); %%采样率变为原来的1/N倍改变采样率为原来的1/2倍,1/4倍,1/20倍,1/50倍,1/100倍等,分别画出降样前后的信号波形和频谱图,分析采样前后信号的变化Matlab程序如下:(2)重构原信号:降采样后,信号的采样率和采样点数同时变化。
如采样率变为原来的1/2,即对原始信号每隔一个点采样。
如果要恢复原始信号,即信号长度和采样率须变为原来同样大小。
所以,必须对降采样后信号进行插值重构。
对采样后的真实语音信号进行插值重构,滤波,恢复原始信号。
画出插值前后信号的波形以及频谱图,并将重构后信号与原始信号进行比较。
如,对采样率降为原来1/4的降采样后信号插值重构。
Matlab程序如下:(3)对原始信号加入噪声:对原始语音信号加入s=sin(2*pi*f*Ts*n)的噪声,采样后可知Fs = 16000,选择f = 2500,播放加入噪声信号的语音信号,并绘制噪声信号和含噪语音信号;设计频率已知的噪声信号或者用自然噪声信号加在原始语音信号上,构建带噪声信号。
语音信号处理实验报告.doc
语音信号处理实验班级:学号:姓名:实验一基于MATLAB的语音信号时域特征分析(2 学时)1)短时能量( 1)加矩形窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32;for i=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' );endend1-10.5 1 1.5 2 2.54 x 102N=32 0 0.5 1 1.5 2 2.55 x 10N=64 0 0.5 1 1.5 2 2.510 x 1050.5 1 1.5 2 2.5 N=128 020 x 10100.5 1 1.5 2 2.5 N=256 040 x 1020N=5120 0.5 1 1.5 2 2.5x 10( 2)加汉明窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32; 3 43 43 43 43 43 4for i=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' );endend1-10.5 1 1.5 2 2.52 x 101N=32 0 0.5 1 1.5 2 2.54 x 102N=64 0 0.5 1 1.5 2 2.54 x 102N=128 0 0.5 1 1.5 2 2.510 x 105N=256 0 0.5 1 1.5 2 2.520 x 1010N=5120 0.5 1 1.5 2 2.5x 102)短时平均过零率a=wavread('mike.wav');a=a(:,1);n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);En=conv(h,a.*a); %求卷积得其短时能量函数Ensubplot(3,1,2),plot(En);for i=1:n-1if a(i)>=0 3 43 43 43 43 43 4elseb(i) = -1;endif a(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)<nZm(k)=0;for i=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+N/2; % 每次移动半个窗endfor w=1:jQ(w)=Zm(160*(w-1)+1)/(2*N); %短时平均过零率endsubplot(3,1,3),plot(Q),grid;1-100.51 1.52 2.5 34x 10201000.51 1.52 2.5 34x 100.50204060801001201401601803)自相关函数N=240y=wavread('mike.wav');y=y(:,1);x=y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240;plot(j,R);grid;2.521.510.5-0.5-1-1.5050100150200250实验二基于 MATLAB 分析语音信号频域特征1)短时谱cleara=wavread('mike.wav');a=a(:,1);subplot(2,1,1),plot(a);title('original signal');gridN=256;h=hamming(N);for m=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱 ');gridoriginal signal10.5-0.5-100.51 1.52 2.5 34x 10短时谱10.500.20.40.60.81 1.2 1.4 1.6 1.8 22)语谱图[x,fs,nbits]=wavread('mike.wav')x=x(:,1);specgram(x,512,fs,100);xlabel('时间 (s)');ylabel('频率 (Hz)' );title('语谱图 ');语谱图50004000)zH3000(率频200010000.51 1.5 2时间 (s) 3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('mike.wav',[4000,4350]);a=a(:,1);N=300;h=linspace(1,1,N);for m=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( '加矩形窗时的复倒谱')加矩形窗时的倒谱1-1-2050100150200250300加矩形窗时的复倒谱105-5-10050100150200250300(2)加汉明窗时的倒谱和复倒谱 cleara=wavread('mike.wav',[4000,4350]);a=a(;,1);N=300;h=hamming(N);for m=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( '加汉明窗时的复倒谱')加汉明窗时的倒谱1-1-2-3050100150200250300加汉明窗时的复倒谱105-5-10050100150200250300实验三基于 MATLAB 的 LPC 分析MusicSource = wavread('mike.wav');MusicSource=MusicSource(:,1);Music_source = MusicSource';N = 256; % window length, N = 100 -- 1000;Hamm = hamming(N); % create Hamming windowframe = input( '请键入想要处理的帧位置= ' );% origin is current frameorigin = Music_source(((frame - 1) * (N / 2) + 1):((frame - 1) * (N / 2) + N));Frame = origin .* Hamm';%%Short Time Fourier Transform%[s1,f1,t1] = specgram(MusicSource,N,N/2,N);[Xs1,Ys1] = size(s1);for i = 1:Xs1FTframe1(i) = s1(i,frame);endN1 = input( '请键入预测器阶数= ' ); % N1 is predictor's order[coef,gain] = lpc(Frame,N1); % LPC analysis using Levinson-Durbin recursionest_Frame = filter([0 -coef(2:end)],1,Frame); % estimate frame(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('误差 ');pause%subplot(2,1,2),plot(f',20*log(abs(FTframe2)));grid;title('短时谱 ')%%Gain solution using G^2 = Rn(0) - sum(ai*Rn(i)),i = 1,2,...,P%fLength(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 ; % inverse filter A(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谱 ');pause%plot(abs(ifft(FTframe1 ./ (G ./ A))));grid;title('excited')%plot(f1',20*log(abs(FFT_est(1 : length(f1')) .* A / G )));grid;%pause%%find_pitch%temp = FTframe1 - FFT_est(1 : length(f1'));%not move higher frequncepitch1 = log(abs(temp));pLength = length(pitch1);result1 = ifft(pitch1,N);% move higher frequncepitch1((pLength - 32) : pLength) = 0;result2 = ifft(pitch1,N);%direct do real cepstrum with errpitch = 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('预测误差倒谱 (根据定义编写,去除高频分量 )');原始语音帧 vs. 预测后语音帧0.40.2-0.2-0.4050100150200250300误差0.20.1-0.1-0.2050100150200250300短时谱50-50-100010203040506070LPC 谱100806040010203040506070原始语音帧倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300实验四基于 VQ 的特定人孤立词语音识别研究1、mfcc.mfunction ccc = mfcc(x)bank=melbankm(24,256,8000,0,0.5,'m' );bank=full(bank);bank=bank/max(bank(:));for k=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);for i=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));for i=3:size(m,1)-2dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:) + 2*m(i+2,:);enddtm = dtm / 3;ccc = [m dtm];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;for n=1:length(zcr)goto = 0;switch statuscase {0,1}if amp(n) > amp1x1 = max(n-count-1,1);status = 2;silence = 0;count= count + 1;elseif amp(n) > amp2 | ...zcr(n) > zcr2status = 1;count = count + 1;elsestatus = 0;count= 0;endcase 2,if amp(n) > amp2 | ...zcr(n) > zcr2count = count + 1;elsesilence = silence+1;if silence < maxsilence count = count + 1;elseif count < minlenstatus = 0;silence = 0;count= 0;elsestatus = 3;endendcase 3,break;endendcount = count-silence/2;x2 = x1 + count -1;3、codebook.m%clear;function xchushi= codebook(m) [a,b]=size(m);[m1,m2]=szhixin(m);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m15,m16]=szhixin(m8);[m13,m14]=szhixin(m7);[m11,m12]=szhixin(m6);[m9,m10]=szhixin(m5);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);chushi(1,:)=zhixinf(m1);chushi(2,:)=zhixinf(m2);chushi(3,:)=zhixinf(m3);chushi(4,:)=zhixinf(m4);chushi(5,:)=zhixinf(m5);chushi(6,:)=zhixinf(m6);chushi(7,:)=zhixinf(m7);chushi(8,:)=zhixinf(m8);chushi(9,:)=zhixinf(m9);chushi(10,:)=zhixinf(m10);chushi(11,:)=zhixinf(m11);chushi(12,:)=zhixinf(m12);chushi(13,:)=zhixinf(m13);chushi(14,:)=zhixinf(m14);chushi(15,:)=zhixinf(m15);chushi(16,:)=zhixinf(m16);sumd=zeros(1,1000);k=1;dela=1;xchushi=chushi;while(k<=1000)sum=ones(1,16);for p=1:afor i=1:16d(i)=odistan(m(p,:),chushi(i,:));enddmin=min(d);sumd(k)=sumd(k)+dmin;for i=1:16if d(i)==dminxchushi(i,:)=xchushi(i,:)+m(p,:);sum(i)=sum(i)+1;endendendfor i=1:16xchushi(i,:)=xchushi(i,:)/sum(i); endif k>1dela=abs(sumd(k)-sumd(k-1))/sumd(k); endk=k+1;chushi=xchushi;endreturn4、 testvq.mclear;disp('这是一个简易语音识别系统,请保证已经将您的语音保存在相应文件夹中') disp('正在训练您的语音模版指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%da.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);m = mfcc(x);m = m(x1:x2-5,:);ref(i).code=codebook(m);enddisp('语音指令训练成功,恭喜!)?'disp('正在测试您的测试语音指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endsumsumdmax=0;sumsumdmin=0;disp('对训练过的语音进行测试')for w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=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('正在匹配您的语音指令,请稍后...')for i=1:10if (sumd(i)==sumdmin1)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10;disp('对没有训练过的语音进行测试')disp('正在测试你的语音,请稍后...')for i=1:10fname = sprintf(o£ ?ùμ ?éùò?\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endfor w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=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;for i=1:10if (((sumd(i))/a)>delamax)||z=z+1;endenddisp('正在匹配您的语音指令,请稍后...')if z<=3for i=1:10if (sumd(i)==sumdmin)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendelsefprintf( '您输入的语音无效?\n'£)?endend(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)。
语音信号处理实验报告2
实验二语音信号的频域特性一、实验目的(1)结合汉语语音信号的各类音素和复元音的特点分析其频域性质;(2)熟悉语音信号的各类音素和复元音的频域参数;(3)熟悉声音编辑软件PRAAT的简单使用和操作。
二、实验记录与思考题1.观察语音信号的频域特点, 总结其规律。
浊音段:其谱线结构是与浊音信号中的周期信号密切相关。
具有与基音及其谐波对应的谱线。
频谱包络中有几个凸起点, 与声道的谐振频率相对应。
这些凸起点为共振峰。
清音段:2.清音的频谱无明显的规律, 比较平坦。
总结清音/b/p/m/f/d/t/n/l/g/k/h/j/q/x/z/c/s/zh/ch/sh/r/共21个的语谱图的规律, 给出辅音的能量集中区;语谱图中的花纹有横杠、乱纹和竖直条。
横杠是与时间轴平行的几条深黑色带纹, 它们是共振峰。
从横杠对应的频率和宽度可以确定相应的共振峰频率和带宽。
在一个语音段的语谱图中, 有没有横杠出现是判断它是否是浊音的重要标志。
竖直条是语谱图中出现于时间轴垂直的一条窄黑条。
每个竖直条相当于一个基音, 条纹的起点相当于声门脉冲的起点, 条纹之间的距离表示基音周期, 条纹越密表示基音频率越高。
b, p……清音的语谱图为乱纹。
辅音的能量集中区为: 高频区4./r/、/m/、/n/、/l/ 从这几个音素的的基频、共振峰频率分析宽带语谱图和窄带语谱图的不同之处, 请解释原因;语谱图中的花纹有横杠、乱纹和竖直条等。
横杠是与时间轴平行的几条深黑色带纹, 它们是共振峰。
从横杠对应的频率和宽度可以确定相应的共振峰频率和带宽。
在一个语音段的语谱图中, 有没有横杠出现是判断它是否是浊音的重要标志。
竖直条(又叫冲直条)是语谱图中出现与时间轴垂直的一条窄黑条。
每个竖直条相当于一个基音, 条纹的起点相当于声门脉冲的起点, 条纹之间的距离表示基音周期。
条纹越密表示基音频率越高。
宽带语谱图的时域分辨率高、可以看见语谱图上的纵的线条;窄带语谱图的频域分辨率高、语谱图上横的线条明显。
语音信号实验二
语音信号实验二端点检测一、 实验目的1.掌握语音信号端点检测的短时能量分析效果与窗长的关系;2.掌握语音信号端点检测的短时过零分析效果与窗长、零阈的关系;。
二、 实验原理1.短时能量分析短时平均能量窗序列是沿着平方值的序列逐段移动,窗口的长度对短时平均能量的影响a.N 很大,等效于带宽很窄的低通滤波器,E n 随时间的变化很小,不能反映语音信号的幅度变化,波形的变化细节就看不出来;b.N 太小时,滤波器的通带变宽,短时能量随时间有急剧的变化,不能得到平滑的能量函数。
窗口的长与短,是相对于语音信号的基音周期的。
∑∑+-=∞-∞=-=-=nN n m m n m n w m x m n w m x E 122)]()([)]()([在一个语音帧内,应含有l~ 7个基音周期。
基音周期变化范围很大,从女性儿童的2 ms到老年男子的14 ms(基音频率为500Hz~70Hz)。
在10 kHz取样频率下,N折衷选择为100~200(10~ 20 ms持续时间)。
短时过零分析过零就是信号通过零值。
过零数是样本改变符号的次数。
单位时间内的过零数称为平均过零数。
语音信号x(n)的短时平均过零数定义浊音和清音语音的典型平均过零数a.发浊音时声道有若干个共振峰,语音能量约集中于3kHz以下。
浊音时具有较低的平均过零数.b.发清音时多数能量出现在较高频率上。
清音时具有较高的平均过零数。
高低没有精确的数值关系。
c.过零分布浊音和清音的过零分布与高斯分布均很吻合。
浊音短时平均过零数的均值为14过零/10 ms;)(*)]1(sgn[)](sgn[) ()]1(sgn[)](sgn[nwnxnxm nwmxmxZmn--=---=∑∞-∞=清音短时平均过零数的均值为49过零/10 ms。
这两种分布有交叠区域,很难区分是清音还是浊音。
这种方法在区分特征时仍然是十分有用的。
平均窗选持续时间是15 ms。
3(1).短时平均过零数可用于清音和浊音的大分类上高平均过零数对应于清音,低平均过零数对应于浊音;清音和浊音的变化非常明显。
语音信号处理实验二
实验二 语音信号的时域分析一、 实验目的在理论学习的基础上,进一步理解和掌握语音信号短时能量、短时过零了分析的意义及基于matlab 的实现方法。
二、 实验原理语音是一时变的、非平稳的随机过程,但由于一段时间内(10-30ms)人的声带和声道形状的相对稳定性,可认为其特征是不变的,因而语音的短时谱具有相对稳定性。
在语音分析中可以利用短时谱的这种平稳性,将语音信号分帧。
10~30ms 相对平稳,分析帧长一般为20ms 。
语音信号的分帧是通过可移动的有限长度窗口进行加权的方法来实现的。
几种典型的窗函数有:矩形窗、汉明窗、哈宁窗、布莱克曼窗。
语音信号的能量分析是基于语音信号能量随时间有相当大的变化,特别是清音段的能量一般比浊音段的小得多。
定义短时平均能量[][]∑∑+-=∞-∞=-=-=nN n m m n m n w m x m n w m x E 122)()()()(下图说明了短时能量序列的计算方法,其中窗口采用的是直角窗。
过零就是信号通过零值。
对于连续语音信号,可以考察其时域波形通过时间轴的情况。
而对于离散时间信号,如果相邻的取样值改变符号则称为过零。
由此可以计算过零数,过零数就是样本改变符号的次数。
单位时间内的过零数称为平均过零数。
语音信号x (n )的短时平均过零数定义为()[]()[]()()[]()[]()n w n x n x m n w m x m x Z m n *--=---=∑∞-∞=1sgn sgn 1sgn sgn式中,[]∙sgn 是符号函数,即()[]()()()()⎩⎨⎧<-≥=0101sgn n x n x n x短时平均过零数可应用于语音信号分析中。
发浊音时,尽管声道有若干个共振峰,但由于声门波引起了谱的高频跌落,所以其语音能量约集中干3kHz 以下。
而发清音时.多数能量出现在较高频率上。
既然高频率意味着高的平均过零数,低频率意味着低的平均过零数,那么可以认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信工程学院12级1班 罗恒 2012101032
实验二 基于MATLAB 的语音信号频域特征分析
一、 实验要求
要求根据已有语音信号,自己设计程序,给出其倒谱、语谱图的分析结果,并根据频域分析方法检测所分析语音信号的基音周期或共振峰。
二、 实验目的
信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
三、 实验设备
1.PC 机;
2.MATLAB 软件环境;
四、 实验内容
1.上机前用Matlab 语言完成程序编写工作。
2.程序应具有加窗(分帧)、绘制曲线等功能。
3.上机实验时先调试程序,通过后进行信号处理。
4.对录入的语音数据进行处理,并显示运行结果。
5.依次给出其倒谱、语谱图的分析结果。
6. 根据频域分析方法检测所分析语音信号的基音周期或共振峰。
五、 实验原理及方法
1、短时傅立叶变换
由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:
其中w(n -m)是实窗口函数序列,n 表示某一语音信号帧。
令n -m=k',则得到
()()()jw jwm n m X e x m w n m e ∞-=-∞=
-∑
于是可以得到
假定
则可以得到
同样,不同的窗口函数,将得到不同的傅立叶变换式的结果。
由上式可见,短时傅立叶变换有两个变量:n 和ω,所以它既是时序n 的离散函数,又是角频率ω的连续函数。
与离散傅立叶变换逼近傅立叶变换一样,如令ω=2πk/N ,则得离散的短时傅立叶吧如下:
2、语谱图
水平方向是时间轴,垂直方向是频率轴,图上的灰度条纹代表各个时刻的语音短时谱。
语谱图反映了语音信号的动态频率特性,在语音分析中具有重要的实用价值。
被成为可视语言。
语谱图的时间分辨率和频率分辨率是由窗函数的特性决定的。
时间分辨率高,可以看出时间波形的每个周期及共振峰随时间的变化,但频率分辨率低,不足以分辨由于激励所形成的细微结构,称为宽带语谱图;而窄带语谱图正好与之相反。
宽带语谱图可以获得较高的时间分辨率,反映频谱的快速时变过程;窄带语谱图可以获得较高的频率分辨率,反映频谱的精细结构。
两者相结合,可以提供带两与语音特性相关的信息。
语谱图上因其不同的灰度,形成不同的纹路,称之为“声纹”。
声纹因人而异,因此可以在司法、安全等场合得到应用。
3、复倒谱和倒谱
复倒谱()n x 是x(n)的Z 变换取对数后的逆Z 变换,其表达式如下: ^1[ln [()]]Z Z x n x -=
倒谱c(n)定义为x(n)取Z 变换后的幅度对数的逆Z 变换,即 (')'()(')(')jw jw n k n k X e w k x n k e
∞--=-∞=
-∑()()()jw jwn jwk n k X e e
w k x n k e ∞-=-∞=-∑()()()jw jwk n k X e w k x n k e ∞=-∞=
-∑()()jw jwn jw n n X e e X e -=2/2/()()()(),(01)j k N n n j km N m X e X k x m w n m e k N ππ∞-=-∞==
-≤≤-∑。