语音信号处理实验报告.docx
- 格式:docx
- 大小:113.68 KB
- 文档页数:5
语音信号处理实验报告实验二一、实验目的本次语音信号处理实验的目的是深入了解语音信号的特性,掌握语音信号处理的基本方法和技术,并通过实际操作和数据分析来验证和巩固所学的理论知识。
具体而言,本次实验旨在:1、熟悉语音信号的采集和预处理过程,包括录音设备的使用、音频格式的转换以及噪声去除等操作。
2、掌握语音信号的时域和频域分析方法,能够使用相关工具和算法计算语音信号的短时能量、短时过零率、频谱等特征参数。
3、研究语音信号的编码和解码技术,了解不同编码算法对语音质量和数据压缩率的影响。
4、通过实验,培养我们的动手能力、问题解决能力和团队协作精神,提高我们对语音信号处理领域的兴趣和探索欲望。
二、实验原理(一)语音信号的采集和预处理语音信号的采集通常使用麦克风等设备将声音转换为电信号,然后通过模数转换器(ADC)将模拟信号转换为数字信号。
在采集过程中,可能会引入噪声和干扰,因此需要进行预处理,如滤波、降噪等操作,以提高信号的质量。
(二)语音信号的时域分析时域分析是对语音信号在时间轴上的特征进行分析。
常用的时域参数包括短时能量、短时过零率等。
短时能量反映了语音信号在短时间内的能量分布情况,短时过零率则表示信号在单位时间内穿过零电平的次数,可用于区分清音和浊音。
(三)语音信号的频域分析频域分析是将语音信号从时域转换到频域进行分析。
通过快速傅里叶变换(FFT)可以得到语音信号的频谱,从而了解信号的频率成分和分布情况。
(四)语音信号的编码和解码语音编码的目的是在保证一定语音质量的前提下,尽可能降低编码比特率,以减少存储空间和传输带宽的需求。
常见的编码算法有脉冲编码调制(PCM)、自适应差分脉冲编码调制(ADPCM)等。
三、实验设备和软件1、计算机一台2、音频采集设备(如麦克风)3、音频处理软件(如 Audacity、Matlab 等)四、实验步骤(一)语音信号的采集使用麦克风和音频采集软件录制一段语音,保存为常见的音频格式(如 WAV)。
通信工程学院12级1班罗恒2012101032实验一语音信号的低通滤波和短时分析综合实验一、实验要求1、根据已有语音信号,设计一个低通滤波器,带宽为采样频率的四分之一,求输出信号;2、辨别原始语音信号与滤波器输出信号有何区别,说明原因;3、改变滤波器带宽,重复滤波实验,辨别语音信号的变化,说明原因;4、利用矩形窗和汉明窗对语音信号进行短时傅立叶分析,绘制语谱图并估计基音周期,分析两种窗函数对基音估计的影响;5、改变窗口长度,重复上一步,说明窗口长度对基音估计的影响。
二、实验目的1.在理论学习的基础上,进一步地理解和掌握语音信号低通滤波的意义,低通滤波分析的基本方法。
2.进一步理解和掌握语音信号不同的窗函数傅里叶变化对基音估计的影响。
三、实验设备1.PC机;2。
MATLAB软件环境;四、实验内容1。
上机前用Matlab语言完成程序编写工作.2。
程序应具有加窗(分帧)、绘制曲线等功能。
3.上机实验时先调试程序,通过后进行信号处理。
4.对录入的语音数据进行处理,并显示运行结果。
5。
改变滤波带宽,辨别与原始信号的区别。
6。
依据曲线对该语音段进行所需要的分析,并且作出结论。
7.改变窗的宽度(帧长),重复上面的分析内容。
五、实验原理及方法利用双线性变换设计IIR滤波器(巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数Ha(s),然后由Ha(s)通过双线性变换可得所要设计的IIR滤波器的系统函数H(z)。
如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率Wp和Ws的转换,对ap和as指标不作变化。
边界频率的转换关系为∩=2/T tan(w/2).接着,按照模拟低通滤波器的技术指标根据相应设计公式求出滤波器的阶数N和3dB截止频率∩c ;根据阶数N查巴特沃斯归一化低通滤波器参数表,得到归一化传输函数Ha(p);最后,将p=s/ ∩c 代入Ha(p)去归一,得到实际的模拟滤波器传输函数Ha(s)。
语音信号处理实验四:均匀量化编码与解码一、实验目的:了解均匀量化编码与解码的基本原理,及整个量化过程和量化噪声与编码的关系;学会利用matlab软件编程利用原理对一语音信号进行编码和解码,并仿真。
二、实验原理:均匀量化PCM在输入信号幅度变化范围是已知的和幅度值在已知的范围内是均匀分布的这两个条件下效果是很好的。
均匀量化是把整个幅度分成等间隔的2^n段,把每个段内的值都量化成一个数值,把量化后的数值根据极性,断码和量化电平对量化后的信号进行编码。
最后解码是编码的逆过程。
三、实验程序:clc;clear all;[d,r]=wavread('so.wav');figure(1);subplot(3,1,1);plot(d);title('原始信号');m1=max(d);m2=min(d);t=linspace(m1,m2,256);l=length(d);S=zeros(length(d),2);T=zeros(length(d),8);for i=1:lfor k=1:length(t)-1;if(d(i)<=t(k) & d(i)>=t(k+1)) S(i,1)=t(k+1);S(i,2)=k;endendendsubplot(3,1,2);stem(S(:,1));title('量化后信号');for i=1:ltemp=S(i,2);T(i,:)=tentotwo(temp);endNew=zeros(1,length(T));mm=linspace(m1,m2,256);for i=1:length(T)temp(i)=twototen(T(i,:));new(i)=mm(temp(i));end subplot(3,1,3);plot(new);title('解码后信号');function y=tentotwo(x)y=zeros(1,8);for i=1:8if(mod(x,2)==0)y(8-i+1)=0;elsey(8-i+1)=1;endx=floor(x/2);endfunction y=twototen(x)l=length(x);y=0;for i=1:lif(x(i)==1)y=y+2^(8-i);endend上图为仿真结果四、实验总结:通过本次实验我收获很大。
实验目的:理解和掌握基于能量和过零率的语音端点检测的方法和原理实验原理:语音端点检测就是指从包含语音的一段信号中确定出语音地起始点和结束点。
基于能量和过零率的语音端点检测方法采用两级判决法。
第一级:先根据语音短时能量选取较高门限T1,进行一次粗判,得AB点;然后由背景噪声的平均能量确定一个较低门限T2,并从A点往左、B点往右分别找到短时能量包络与门限T2相交点C与D。
第二级:以短时平均过零率为标准,从C往左、D往右找到短时平均过零率低于门限T3(由背景噪声的平均过零率所确定)的两点E、F,即为语音段的起止点。
实验内容:主程序:clear all;S=wavread('song.wav');%¶ÁÈëÉùÒôÎļþfigure(1);subplot(4,1,1);plot(S);title('Ô-ʼÓïºÅÐźÅ');N=wavread('noise.wav');%¶ÁÈë±³¾°ÔëÉùplot(N);s=fra(100,45,S);%fen zhenLs=length(s);s2=s.^2;soundenergy=sum(s2,2)%ÇóÒ»Ö¡µÄÄÜÁ¿;subplot(4,1,2);plot(soundenergy);title('Ô-ʼÓïÒô¶ÌʱÄÜÁ¿');averagesoundenergy=sum(soundenergy)/Ls;soundzcr=zcro(s);%Çó¹ýÁãÂÊsubplot(4,1,3);plot(soundzcr);title('Ô-ʼÓïÒô¹ýÁãÂÊ');averagesoundzcr=sum(soundzcr)/Ls;n=fra(100,45,N);Ln=length(n);n2=n.^2;noiseenergy=sum(n2,2);averagenoiseenergy=sum(soundenergy)/Ln;noisezcr=zcro(n);averagenoisezcr=sum(noisezcr)/Ln;A=1;B=1;for i=1:Lsif (soundenergy(i)>10*averagenoiseenergy) T1=i;break;endendfor i=Ls:-1:1if (soundenergy(i)>A*averagenoiseenergy) T2=i;break;endendfor i=1:T1if(soundzcr(i)>B*averagenoisezcr)E=i;break;endendfor i=Ls:-1:1if(soundzcr(i)>B*averagenoisezcr)F=i;break;endendE=45*E;F=45*F;duandianjianche=S(E:F,:);subplot(4,1,4);plot(duandianjianche);求过零率函数:function f=zcro(x)f=zeros(size(x,1),1);for i=1:size(x,1)z=x(i,:);for j=1:(length(z)-1);if z(j)*z(j+1)<0f(i)=f(i)+1;endendend分帧函数:function f=fra(len,inc,x)fh=fix(((size(x,1)-len)/inc)+1); f=zeros(fh,len);i=1;n=1;while i<=fhj=1;while j<=lenf(i,j)=x(n);j=j+1;n=n+1;endn=n-len+inc;i=i+1;end实验结果:结果为:实验总结:。
实验一基于 MATLAB 的语音信号时域特征分析操作:报告:一. 实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。
二. 实验内容1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。
在 5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。
我们将每个短时的语音称为一个分析帧。
一般帧长取 10~30ms。
我们采用一个长度有限的窗函数来截取语音信号形成分析帧。
通常会采用矩形窗和汉明窗。
1.1 给出了这两种窗函数在帧长 N=50图时的时域波形。
这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB),会导致泄漏现象;汉明窗的主瓣宽 8*pi/N ,旁瓣峰值低(-42.7dB),可以有效的克服泄漏现象,具有更平滑的低通特性。
因此在语音频谱分析时常使用汉明窗,在计算短时能量和平均幅度时通常用矩形窗。
2. 短时能量由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著。
因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。
定义短时能量为:在用短时能量反映语音信号的幅度变化时,不同的窗函数以及相应窗的长短均有影响。
hamming 窗的效果比矩形窗略好。
语音信号处理实验报告专业:电子信息工程班级:电子信息二班姓名:学号:指导教师:杨立东目录实验一特征提取 (3)一、实验目的: (3)二、实验原理: (3)三、实验内容 (3)程序: (3)实验二基音周期估计 (9)一、实验目的 (9)二、实验原理 (9)三、实验内容 (10)程序: (10)实验三倒谱的获取与应用 (13)一、实验目的 (13)二、实验原理 (13)三、实验内容 (14)程序 (14)实验四 HMM的训练 (17)一、实验目的 (17)二、实验原理 (17)三、实验内容 (17)程序 (17)实验总结 (20)实验一语音信号的特征提取一、实验目的:1、了解语音信号处理基本知识,语音信号的生成的数学模型。
2、理解和掌握语音信号的特征提取。
二、实验原理:语音信号随时间变化的频谱特性可以用语谱图直观的表示,语谱图的纵坐标对应频率,横坐标对应时间,而图像的黑白度对应于信号的能量。
因此声道的谐振频率在图上就表示成为黑带,浊音部分则以出现条纹图形为其特征,这是因为此时的时域波形有周期性,而在浊音的时间间隔内图形显得很致密。
三、实验内容Matlab编程实验步骤:1.新建M文件,扩展名为“.m”,编写程序;2.选择File/Save命令,将文件保存在F盘新建文件夹中;3.运行程序;程序:语谱图clear all;[x,sr]=wavread('welcome.wav'); %sr为采样频率if (size(x,1)>size(x,2)) %size(x,1)为x的行数,size(x,2)为x的列数 x=x';ends=length(x);w=round(44*sr/1000); %窗长,取离44*sr/100最近的整数n=w; %fft的点数ov=w/2; %50%的重叠h=w-ov;% win=hanning(n)'; %哈宁窗win=hamming(n)'; %哈宁窗c=1;ncols=1+fix((s-n)/h); %fix函数是将(s-n)/h的小数舎去d=zeros((1+n/2),ncols);for b=0:h:(s-n)u=win.*x((b+1):(b+n));t=fft(u);d(:,c)=t(1:(1+n/2))';c=c+1;endtt=[0:h:(s-n)]/sr;ff=[0:(n/2)]*sr/n;imagesc(tt/1000,ff/1000,20*log10(abs(d)));colormap(gray);axis xyxlabel('时间/s');ylabel('频率/kHz');时间/s频率/k H z246810121416x 10-40246810时间/s频率/k H z0246810121416x 10-4246810预加重(高频提取)[x,sr]=wavread('mmm.wav'); %读数据ee=x(200:455); %选取原始文件e 的第200到455点的语音,也可选其他样点 r=fft(ee,1024); %对信号ee 进行1024点傅立叶变换 r1=abs(r); %对r 取绝对值 r1表示频谱的幅度值 pinlv=(0:1:255)*8000/512 %点和频率的对应关系 yuanlai=20*log10(r1) %对幅值取对数signal(1:256)=yuanlai(1:256);%取256个点,目的是画图的时候,维数一致 [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通滤波器 pha=angle(h1); %高通滤波器的相位 H1=abs(h1); %高通滤波器的幅值 r2(1:256)=r(1:256)u=r2.*h1' % 将信号频域与高通滤波器频域相乘 相当于在时域的卷积 u2=abs(u) %取幅度绝对值 u3=20*log10(u2) %对幅值取对数un=filter([1,-0.98],[1],ee) %un 为经过高频提升后的时域信号 figure(1);subplot(211);plot(f1,H1);title('高通滤波器的幅频响应'); xlabel('频率/Hz'); ylabel('幅度');subplot(212);plot(pha);title('高通滤波器的相位响应'); xlabel('频率/Hz');ylabel('角度/radians');figure(2);subplot(211);plot(ee);title('原始语音信号'); xlabel('样点数'); ylabel('幅度');axis([0 256 -0.1 0.1]);subplot(212);plot(real(un)); title('经高通滤波后的语音信号'); xlabel('样点数'); ylabel('幅度'); axis([0 256 -1 1]);figure(3);subplot(211);plot(pinlv,ee);title('原始语音信号频谱'); xlabel('频率/Hz'); ylabel('幅度/dB');subplot(212);plot(pinlv,u3);title('经高通滤波后的语音信号频谱'); xlabel('频率/Hz'); ylabel('幅度/dB');05001000150020002500300035004000-50510x 10-3原始语音信号频谱频率/Hz幅度/d B05001000150020002500300035004000-80-60-40-20经高通滤波后的语音信号频谱频率/Hz幅度/d B50100150200250-0.1-0.0500.050.1原始语音信号样点数幅度50100150200250-1-0.500.51经高通滤波后的语音信号样点数幅度05001000150020002500300035004000-50510x 10-3原始语音信号频谱频率/Hz幅度/d B05001000150020002500300035004000-80-60-40-20经高通滤波后的语音信号频谱频率/Hz幅度/d B短时能量[x,sr]=wavread('welcome.wav'); %读入语音文件 %计算N=50,帧移=50时的语音能量 s=fra(50,50,x);s2=s.^2; %一帧内各样点的能量 energy=sum(s2,2); %求一帧能量subplot(2,2,1) %定义画图数量和布局plot(energy); %画N=50时的语音能量图xlabel('帧数') %横坐标ylabel('短时能量 E') %纵坐标legend('N=50') %曲线标识axis([0,1500,0,2*10]) %定义横纵坐标范围%计算N=100,帧移=100时的语音能量s=fra(100,100,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,2)plot(energy) %画N=100时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=100')axis([0,600,0,4*10]) %定义横纵坐标范围%计算N=400,帧移=400时的语音能量s=fra(400,400,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,3)plot(energy) %画N=400时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=400')axis([0,150,0,1.5*10^2]) %定义横纵坐标范围%计算N=800,帧移=800时的语音能量s=fra(800,800,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,4)plot(energy) %画N=800时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=800')axis([0,95,0,3*10^2]) %定义横纵坐标范围定义fra()function f=fra(len,inc,x)fh=fix(((size(x,1)-len)/inc)+1);f=zeros(fh,len);i=1;n=1;while i<=fhj=1;while j<=lenf(i,j)=x(n); j=j+1;n=n+1; endn=n-len+inc; i=i+1; end5001000150005101520帧数短时能量 EN=50200400600010203040帧数短时能量 EN=100050100150050100150帧数短时能量 EN=400204060800100200300帧数短时能量 EN=800短时平均过零率clear all[x1,sr]=wavread('welcome.wav'); %读入语音文件 x=awgn(x1,15,'measured');%加入15dB 的噪声 s=fra(220,110,x);%分帧,帧移110 zcr=zcro(s);%求过零率 figure(1); subplot(2,1,1) plot(x);title('原始信号'); xlabel('样点数'); ylabel('幅度');axis([0,300,-2*10,2*10]); subplot(2,1,2) plot(zcr);xlabel('帧数'); ylabel('过零次数');title('原始信号的过零率');axis([0,360,0,200]); 定义zcro()function f=zcro(x)f=zeros(size(x,1),1); %生成全零矩阵 for i=1:size(x,1)z=x(i,:); %提取一行数据 for j=1:(length(z)-1); if z(j)*z(j+1)<0; f(i)=f(i)+1; end end end50100150200250300-20-1001020原始信号样点数幅度50100150200250300350050100150200帧数过零次数原始信号的过零率实验二 基音周期估计一、实验目的在理论学习的基础上,进一步的理解和掌握基音周期估计中两种最基本的方法:基于短时自相关法和基于短时平均幅度差法。
内蒙古工业大学信息工程学院实验报告课程名称:语音信号处理实验名称:语音信号采集与处理实验类型:验证性■综合性□设计性□实验室名称:信息学院机房班级:电子10-1班学号:201080203002 姓名:王红霞组别:同组人:成绩:实验日期: 2013年6月21日实验 语音信号采集与处理一、 实验目的、要求 (1)掌握语音信号采集的方法(2)掌握一种语音信号基音周期提取方法 (3)掌握短时过零率计算方法 (4)了解Matlab 的编程方法 二、 实验原理 基本概念: (a )短时过零率:短时内,信号跨越横轴的情况,对于连续信号,观察语音时域波形通过横轴的情况;对于离散信号,相邻的采样值具有不同的代数符号,也就是样点改变符号的次数。
对于语音信号,是宽带非平稳信号,应考察其短时平均过零率。
其中sgn[.]为符号函数⎪⎩⎪⎨⎧<=>=0 x(n)-1sgn(x(n))0 x(n)1sgn(x(n))短时平均过零的作用 1.区分清/浊音:浊音平均过零率低,集中在低频端; 清音平均过零率高,集中在高频端。
2.从背景噪声中找出是否有语音,以及语音的起点。
(b )基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很∑--=-=1)]1(sgn[)](sgn[21N m n n n m x m x Z宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
最新语音信号处理实验报告实验二实验目的:本实验旨在通过实际操作加深对语音信号处理理论的理解,并掌握语音信号的基本处理技术。
通过实验,学习语音信号的采集、分析、滤波、特征提取等关键技术,并探索语音信号处理在实际应用中的潜力。
实验内容:1. 语音信号采集:使用语音采集设备录制一段时长约为10秒的语音样本,确保录音环境安静,语音清晰。
2. 语音信号预处理:对采集到的语音信号进行预处理,包括去噪、归一化等操作,以提高后续处理的准确性。
3. 语音信号分析:利用傅里叶变换等方法分析语音信号的频谱特性,观察并记录基频、谐波等特征。
4. 语音信号滤波:设计并实现一个带通滤波器,用于提取语音信号中的特定频率成分,去除噪声和非目标频率成分。
5. 特征提取:从处理后的语音信号中提取关键特征,如梅尔频率倒谱系数(MFCC)等,为后续的语音识别或分类任务做准备。
6. 实验总结:根据实验结果,撰写实验报告,总结语音信号处理的关键技术和实验中遇到的问题及其解决方案。
实验设备与工具:- 计算机一台,安装有语音信号处理相关软件(如Audacity、MATLAB 等)。
- 麦克风:用于采集语音信号。
- 耳机:用于监听和校正采集到的语音信号。
实验步骤:1. 打开语音采集软件,调整麦克风输入设置,确保录音质量。
2. 录制语音样本,注意控制语速和音量,避免过大或过小。
3. 使用语音分析软件打开录制的语音文件,进行频谱分析,记录观察结果。
4. 设计带通滤波器,设置合适的截止频率,对语音信号进行滤波处理。
5. 应用特征提取算法,获取语音信号的特征向量。
6. 分析滤波和特征提取后的结果,评估处理效果。
实验结果与讨论:- 描述语音信号在预处理、滤波和特征提取后的变化情况。
- 分析实验中遇到的问题,如噪声去除不彻底、频率成分丢失等,并提出可能的改进措施。
- 探讨实验结果对语音识别、语音合成等领域的潜在应用价值。
结论:通过本次实验,我们成功实现了语音信号的基本处理流程,包括采集、预处理、分析、滤波和特征提取。
语音信号处理实验报告实验一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之间。