语音信号实验一
- 格式:doc
- 大小:118.50 KB
- 文档页数:5
通信工程学院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)。
语⾳信号处理实验讲义语⾳信号处理实验讲义编写⼈:蔡萍时间:2011-12实验⼀语⾳信号⽣成模型分析⼀、实验⽬的1、了解语⾳信号的⽣成机理,了解由声门产⽣的激励函数、由声道产⽣的调制函数和由嘴唇产⽣的辐射函数。
2、编程实现声门激励波函数波形及频谱,与理论值进⾏⽐较。
3、编程实现已知语⾳信号的语谱图,区分浊⾳信号和清⾳信号在语谱图上的差别。
⼆、实验原理语⾳⽣成系统包含三部分:由声门产⽣的激励函数()G z 、由声道产⽣的调制函数()V z 和由嘴唇产⽣的辐射函数()R z 。
语⾳⽣成系统的传递函数由这三个函数级联⽽成,即()()()()H z G z V z R z =1、激励模型发浊⾳时,由于声门不断开启和关闭,产⽣间隙的脉冲。
经仪器测试它类似于斜三⾓波的脉冲。
也就是说,这时的激励波是⼀个以基⾳周期为周期的斜三⾓脉冲串。
单个斜三⾓波的频谱表现出⼀个低通滤波器的特性。
可以把它表⽰成z 变换的全极点形式121()(1)cTG z ez --=-?这⾥c 是⼀个常数,T 是脉冲持续时间。
周期的三⾓波脉冲还得跟单位脉冲串的z 变换相乘:1121()()()1(1)v cT A U z E z G z z e z ---=?=--这就是整个激励模型,v A 是⼀个幅值因⼦。
2、声道模型当声波通过声道时,受到声腔共振的影响,在某些频率附近形成谐振。
反映在信号频谱图上,在谐振频率处其谱线包络产⽣峰值,把它称为共振峰。
⼀个⼆阶谐振器的传输函数可以写成12()1ii i i A V z B z C z--=-- 实践表明,⽤前3个共振峰代表⼀个元⾳⾜够了。
对于较复杂的辅⾳或⿐⾳共振峰要到5个以上。
多个()i V z 叠加可以得到声道的共振峰模型12111()()11Rrr MMir i N ki i i ik k b zA V z V zB zC z a z -=---======---∑∑∑∑3、辐射模型从声道模型输出的是速度波,⽽语⾳信号是声压波。
实验一显示语音信号的语谱图一、实验目的综合信号频谱分析和滤波器功能,对语音信号的频谱进行分析,并对信号含进行高通、低通滤波,实现信号特定处理功能。
加深信号处理理论在语音信号中的应用;理解语谱图与时频分辨率的关系。
二、实验原理语谱图分析语音又称语谱分析,语谱图中显示了大量的与语音的语句特性有关的信息,它综合了频谱图和时域波形的优点,明显的显示出语音频谱随时间的变化情况。
语谱图实际上是一种动态的频谱。
窄带语谱图有良好的频率分辨率及较差的时间分辨率;而宽带语谱图具有良好的时间分辨率及较差的频率分辨率。
三、实验内容实验数据为工作空间ex3M2.mat中数组we_be10k是单词“we”和“be”的语音波形(采样率为10000点/秒)。
1、听一下we_be10k(可用sound)2、使用函数specgram_ex3p19.显示语谱图和语音波形。
对比调用参数窗长20ms(200点)、帧间隔1ms(10点)和参数窗长5ms(50点)、帧间隔1ms(10点);再对比窗长>20ms或小于5ms,以及帧间隔>1ms时的语谱图说明宽带语谱图、窄带语谱图与时频分辨率的关系及如何得到时频折中。
3、生成高通和低通滤波器,观察其频谱;对语音信号we_be进行滤波,听一下对比其效果。
四、实验结果实验程序语谱图和语音波形低通滤波器频谱高通滤波器频谱结论:1、因频率分辨率随窗口宽度的增加而提高,但同时时间分辨率降低;如果窗口取短,频率分辨率下降,但时间分辨率提高。
由以上图可知:窄带语谱图有良好的频率分辨率及较差的时间分辨率,而宽带语谱图具有良好的时间分辨率及较差的频率分辨率。
窄带语谱图中的时间坐标方向表示的基因及其各次谐波;而宽带语谱图给出语音的共振峰平率及清辅音的能量汇集区。
2、因加窗的目的是要限制分析的时间以使其中的波形特性没有显著变化,因此想要得到时频折中,选用的窗函数应尽量满足a、频率分辨率高b、卷积后其他的频率成分产生的频谱泄露少。
语音信号处理试验实验一:语音信号时域分析实验目的:(1)录制两段语音信号,内容是“语音信号处理”,分男女声。
(2)对语音信号进行采样,观察采样后语音信号的时域波形。
实验步骤:1、使用window自带录音工具录制声音片段使用windows自带录音机录制语音文件,进行数字信号的采集。
启动录音机。
录制一段录音,录音停止后,文件存储器的后缀默认为.Wav。
将录制好文件保存,记录保存路径。
男生女生各录一段保存为test1.wav和test2.wav。
图1基于PC机语音信号采集过程。
2、读取语音信号在MATLAB软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。
通过使用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中。
3、编程获取语音信号的抽样频率和采样位数。
语音信号为test1.wav和test2.wav,内容为“语音信号处理”,两端语音保存到工作空间work文件夹下。
在M文件中分别输入以下程序,可以分两次输入便于观察。
[y1,fs1,nbits1]=wavread('test1.wav')[y2,fs2,nbits2]=wavread('test2.wav')结果如下图所示根据结果可知:两端语音信号的采样频率为44100HZ,采样位数为16。
4、语音信号的时域分析语音信号的时域分析就是分析和提取语音信号的时域参数。
进行语音分析时,最先接触到并且夜市最直观的是它的时域波形。
语音信号处理实验指导书实验一 语音信号采集与简单处理一、 实验目的、要求 (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. 观察语音信号的时域波形特点,总结其规律。
答:1)清音段:能量低,过零率高,波形特点有点像随机的噪声。
这部分信号常与语音的辅音段对应。
2)浊音段:能量高,过零率地,波形具有周期特点。
所谓的短时平稳性质就是处于这个语音浊音段中。
3)过渡段:一般是指从辅音段向元音段信号变化之间的部分。
信号变化快,是语音信号处理中最复杂、困难的部分。
2.总结清音b/p/m/f/d/t/n/l/g/k/h/j/q/x//z/c/s/zh/ch/sh/r/共21个的短时幅值、短时过零率和自相关函数的规律,估算这21个清音的平均短时幅值和平均短时过零率;答:加矩形窗的21个清音的平均短时幅值和平均短时过零率为下表:清音音节平均短时幅值平均短时过零率b 2.126 1.000p 0.706 9.100m 2.427 5.000f 0.685 1.500d 0.817 9.667t 1.168 1.000n 1.150 4.176l 2.084 6.200g 0.150 24.333k 0.959 7.333h 0.629 21.857j 0.129 13.000q 0.184 36.909x 0.168 21.400z 0.173 6.200c 0.785 7.294s 0.158 17.000zh 0.203 31.500ch 0.237 27.535sh 0.182 28.692r 1.814 5.5333. 总结浊音a/o/e/i/u/v/ao/ai/ei/ou/an/en/in/ang/eng/ong/ing/共17个的短时幅值、短时过零率和自相关函数的规律,估算这17个浊音的平均短时幅值和平均短时过零率,从自相关函数上估算这17个浊音的基音周期;答:浊音能量高,短时幅值也比较高,短时过零率比较低,由于浊音有一定的准周期性,所以自相关函数有比较明显的峰值和周期性。
浊音音节平均短时幅值平均短时过零率基音周期a 3.662 0.643 57o 2.948 0.184 71e 2.531 0.148 59i 1.693 0.061 60u 1.300 0.032 61v 1.081 0.024 66ao 2.000 0.123 71ai 2.307 0.121 57ei 1.828 0.074 67ou 0.294 0.000 67an 1.500 0.061 58en 1.827 0.073 54in 2.257 0.118 56ang 0.591 0.009 65eng 1.473 0.053 56ong 1.712 0.059 64ing 0.494 0.014 714. /r/、/m/、/n/ 从这几个音素的自相关函数图形判断为“清音”还是“浊音”,若为浊音估算其基音周期;答:(1)/r/: 自相关函数具有周期性,基音周期为67(样本点数)(2)/m/: 自相关函数具有周期性,基音周期为67(样本点数)(3)/n/ : 自相关函数具有周期性,基音周期为59(样本点数)可以看出/r/、/m/、/n/这几个因素的自相关函数图形有准周期性,并且有比较明显的峰值,所以为浊音。
实验目的:理解和掌握基于能量和过零率的语音端点检测的方法和原理实验原理:语音端点检测就是指从包含语音的一段信号中确定出语音地起始点和结束点。
基于能量和过零率的语音端点检测方法采用两级判决法。
第一级:先根据语音短时能量选取较高门限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.语⾳信号的录⾳、读⼊、放⾳等:练习matlab中⼏个⾳频处理函数,利⽤函数wavread对语⾳信号进⾏采样,记住采样频率和采样点数,给出以下语⾳的波形图(2.wav),wavread的⽤法参见mablab帮助⽂件。
利⽤wavplay或soundview放⾳。
也可以利⽤wavrecord⾃⼰录制⼀段语⾳,并进⾏以上操作(需要话筒)。
[Y,FS,NBITS,OPTS]=wavread('9.wav')FS =10000NBITS =16OPTS =fmt: [1x1 struct]2.语⾳信号的分帧:选择20ms左右为⼀帧,帧移取1/2帧长,对语⾳信号进⾏分帧,可以利⽤voicebox⼯具箱中的函数enframe。
voicebox⼯具箱是基于GNU协议的⾃由软件,其中包含了很多语⾳信号相关的函数。
voicebox⼯具箱安装⽅法:把⼯具箱拷贝⼊.\MatLab\toolbox⽬录下;菜单file-set path-"Add folder" 导⼊voicebox;菜单file-Preference-General-"Updata Toolbox Path Cache分帧函数的调⽤:y=enframe(x,len,inc)x为输⼊语⾳信号,len指定了帧长,inc指定帧移,函数返回为n×len的⼀个矩阵,每⼀⾏都是⼀帧数据。
帧长=10000X0.02=200sx=wavread('9.wav')y=enframe(x,200,100)subplot(2,1,1),plot(x)subplot(2,1,2),plot(y)3 窗函数及其时频特性:本步要求利⽤window函数设计窗⼝长度为200(N=200)的矩形窗(rectwin)、汉明窗(hamming)及汉宁窗(hann)),利⽤wvtool函数观察其时域波形图及频谱特性,⽐较得出结论。
实验一、语音信号的时域特性和频域特性学院:信息与通信工程学院专业:通信工程班级:104学号:2010026410姓名:黄余芳指导教师:崔艳秋1.实验名称语音信号的时域特性和频域特性2.实验类型验证性实验3.实验目的观察并验证语音信号的时域特性和频域特性,理解并掌握典型的语音信号时域分析方法和频域分析方法,为深入学习数字语音信号处理的相关理论奠定基础。
4.实验设备安装有MATLAB的计算机5.实验内容1.输入并运行MATLAB代码。
2.观察语音信号的时域特性(1)发一个清音和一个浊音,由麦克风采集语音数据,参考实验内容1中的程序将这些数据分别存成两个“.wav”文件(例如[a]的语音存为“a.wav”,要求采样率为8000),存在本人的文件夹中。
(2)读取WA V文件,显示语音波形,观察清音和浊音波形的差异。
(3)读取WA V文件,计算并显示语音的短时能量(要求分帧加窗的帧长为256,帧移为128),观察并分析清音和浊音短时能量的差异。
(4)读取WA V文件,计算并显示语音的短时过零率(要求分帧加窗是的帧长为256,帧移为128),观察并分析清音和浊音短时过零率的差异。
3. 观察语音信号的频域特性(1)读取WA V文件,计算并显示一帧语音的原始信号、加窗信号、短时频谱(要求分帧加窗的窗函数为汉明窗、帧长为256,帧移为128),观察并分析清音和浊音短时频谱的差异。
(2)读取WA V文件,计算并显示不同窗函数情况下一帧语音的加窗信号、短时频谱(要求分帧加窗的窗函数分别为矩形窗和汉明窗、帧长为256,帧移为128),观察并分析不同的窗函数对短时谱分析的影响。
6.相关函数wavread、plot、fft7.MATLAB程序代码1. 输入并运行以下MATLAB代码。
(1) 短时能量clear;close all;Fs=11025;y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'f:\\a');soundview(y,Fs);x = wavread('f:\\a.wav');x = double(x);x = filter([1 -0.9375], 1, x); % 预加重FrameLen = 256;FrameInc = 128;s = enframe(x, FrameLen, FrameInc); energy = sum(abs(s), 2);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(energy);title('语音信号的短时能量');xlabel('帧数');ylabel('短时能量');legend('帧长FrameLen = 240');(2) 短时过零率clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen = 256;FrameInc =128;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);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(zcr);xlabel('帧数');ylabel('短时过零率');title('语音信号的短时过零率');(3) 短时傅里叶变换clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(50,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱');(4) 显示清音短时过零率clear;close all;x = wavread('f:\\k.wav');x = double(x);FrameLen = 256;FrameInc =128;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);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(zcr);xlabel('帧数');ylabel('短时过零率');title('语音信号的短时过零率');2:语音信号的频域分析1.加汉明窗的浊音clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(125,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱2.加汉明窗的清音clear;close all;x = wavread('f:\\k.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(90,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱3.加矩形窗的浊音clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(125,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*rectwin(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加矩形窗时语音频谱)8.实验结果及其分析浊音(1) 短时能量0.51 1.52 2.53 3.54x 104-1012语音信号时域波形样点数幅度050100语音信号的短时能量帧数短时能量(2) 短时过零率0.511.52 2.533.54x 104-1-0.500.51语音信号时域波形样点数幅度102030帧数短时过零率语音信号的短时过零率(3) 短时傅里叶变换01截取的语音段样点数幅度5010015020025001窗选语音信号样点数幅度-1000频率/Hz对数幅度/d B加Hamming 窗时语音频谱清音(1) 短时能量x 104012语音信号时域波形样点数幅度0204060语音信号的短时能量帧数短时能量(2) 短时过零率x 104-1-0.500.51语音信号时域波形样点数幅度5010015020025030035005101520帧数短时过零率语音信号的短时过零率(3) 短时傅里叶变换01截取的语音段样点数幅度01窗选语音信号样点数幅度5001000150020002500300035004000-1000频率/Hz对数幅度/d B加Hamming 窗时语音频谱(4) 显示清音短时过零率x 10401语音信号时域波形样点数幅度05101520帧数短时过零率语音信号的短时过零率加窗(1)加汉明窗的浊音50100150200250-101截取的语音段样点数幅度50100150200250-101窗选语音信号样点数幅度100020003000400050006000-100-500频率/Hz对数幅度/d B加Hamming 窗时语音频谱(2)加汉明窗的清音-101截取的语音段样点数幅度50100150200250-101窗选语音信号样点数幅度-100-500频率/Hz对数幅度/d B加Hamming 窗时语音频谱(3)加矩形窗的浊音50100150200250-101截取的语音段样点数幅度-101窗选语音信号样点数幅度-100-500频率/Hz对数幅度/d B加矩形窗时语音频谱分析:(1)对于浊音与清音,浊音的幅值比较明显,有一个的波动,能清楚的看清楚它的周期;而清音类似于白噪声,没有明显的幅值,很平缓。
语⾳信号处理实验报告语⾳信号处理实验报告【实验⼀】⼀、实验题⽬Short time analysis⼆、实验要求Write a MA TLAB program to analyze a speech and simultaneously, on a single page, plot the following measurements:1. the entire speech waveform2. the short-time energy, En3. the short-time magnitude, Mn4. the short-time zero-crossing, Zn5. the narrowband spectrogram6. the wideband spectrogramUse both the speech waveforms in the wznjdx_normal.wav. Choose appropriate window sizes, window shifts, and window for the analysis. Explain your choice of these parameters.三、实验程序clear[x,fs]=wavread('wznjdx_normal.wav');n=length(x);N=320;subplot(4,1,1);plot(x);h=linspace(1,1,N);En=conv(h,x.*x);subplot(4,1,2);plot(En);Mn=conv(h,abs(x));subplot(4,1,3);plot(Mn);for i=1:n-1if x(i)>=0 y(i)=1;else y(i)=-1;endif x(i+1)>=0 y(i+1)=1;else y(i+1)=-1;endw(i)=abs(y(i+1)-y(i));endk=1;j=0;while (k+N-1)Zm(k)=0;for i=0:N-1Zm(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(4,1,4);plot(Q);grid;figure(2);subplot(2,1,1);spectrogram(x,h,256,200,0.0424*fs); subplot(2,1,2);spectrogram(x,h,256,200,0.0064*fs);四、实验结果语谱图:(Matlab 7.0 ⽤不了spectrogram)【实验⼆】⼀、实验题⽬Homomorphic analysis⼆、实验要求Write a MATLAB program to compute the real cepstrums of a section of voiced speech and unvoiced speech. Plot the signal, the log magnitude spectrum, the real cepstrum, and the lowpass liftered log magnitude spectrum.三、实验程序nfft=256;[x,fs] = wavread('wznjdx_normal.wav');fx=x;Xvm=log(abs(fft(fx,nfft)));xhv=real(ifft(Xvm,nfft));lifter=zeros(1,nfft);lifter(1:30)=1;lifter(nfft-28:nfft)=1;fnlen=0.02*fs; % 20mswin=hamming(fnlen);%加窗n=fnlen;%窗宽度赋给循环⾃变量nnoverlap=0.5*fnlen;while(n<=length(x)-1)fx=x(n-fnlen+1:n).*win;n=n+noverlap;endxhvp=xhv.*lifter';figure;subplot(4,1,1)plot(lifter);title('倒谱滤波器');subplot(4,1,2)plot(x);title('语⾳信号波形');subplot(4,1,3)plot(Xvm);title('Xvm');subplot(4,1,4)plot(xhv);title('xhv');四、实验结果【实验三】⼀、实验题⽬LP analysis⼆、实验要求Write a MATLAB program to convert from a frame of speech to a set of linear prediction coefficients. Plot the LPC spectrum superimposed on the corresponding STFT.三、实验程序clear;[x,fs]=wavread('wznjdx_normal.wav');fx=x(4000:4160-1);p=10;[a,e,k]=aryule(fx,p);G=sqrt(e*length(fx));f=log(abs(fft(fx)));h0=zeros(1,160);h=log(G)-log(abs(fft(a,160)));figure(1);subplot(211);plot(fx);subplot(212);plot(f);hold on;plot((0:160-1),h,'r');四、实验结果【实验四】⼀、实验题⽬Pitch estimation⼆、实验内容Write a program to implement the pitch estimation and the voiced/unvoiced decision using the LPC-based method.三、实验程序clear[x,fs]=wavread('wznjdx_normal.wav');n=length(x);Q = x';NFFT=512;N = 256;Hamm = hamming(N);frame = 30;M = Q(((frame -1) * (N / 2) + 1):((frame - 1) * (N / 2) + N)); Frame = M .* Hamm';% lowpass filter[b2,a2]=butter(2,900/4000);speech2=filter(b2,a2,Frame); % filter% residual[a,e] = lpc(speech2,20);errorlp=filter(a,1,speech2); % residual% Short-term autocorrelation.re = xcorr(errorlp);% Find max autocorrelation for lags in the interval minlag to maxlag. minlag = 17; % F0: 450Hzmaxlag =160; % F0: 50Hz[remax,idx] = max(re(fnlen+minlag:fnlen+maxlag));figuresubplot(3,1,1);plot(Frame);subplot(3,1,2);plot(speech2);subplot(3,1,3);plot(re);text(500,0,'idx');idx=idx-1+minlagremax四、实验结果【实验五】⼀、实验题⽬Speech synthesis⼆、实验内容Write a program to analyze a speech and synthesize it using the LPC-based method.三、实验程序主程序clear;[x,sr] = wavread('wznjdx_normal.wav');p=[1 -0.9];x=filter(p,1,x);N=256;inc=128;y=lpcsyn(x,N,inc);wavplay(y,sr);⼦程序lpcsynfunction y=lpcsyn(x,N,inc)%[x,sr] = wavread('wznjdx_normal.wav');%pre = [1 -0.97];%x = filter(pre,1,x);%N=256;%inc=128;fn=floor(length(x)/inc);y=zeros(1,50000);for (i=1:fn)x(1:N,i)=x((i-1)*inc+1:(i+1)*inc);[A(i,:),G(i),P(i),fnlen,fnshift] = lpcana(x(1:N,i),order); if (P(i)) % V oiced frame.e = zeros(N,1);e(1:P(i):N) = 1; % Impulse-train excitation.else % Unvoiced frame.e = randn(N,1); % White noise excitation.endyt=filter(G(i),A(i,:),e);j=(i-1)*inc+[1:N];y(j) = y(j)+yt';end;end⼦程序lpcanafunction [A,G,P,fnlen,fnshift] = lpcana(x,order) fnlen=256;fnshift=fnlen/2;n=length(x);[b2,a2]=butter(2,900/4000);speech2=filter(b2,a2,x);[A,e]=lpc(speech2,order);errorlp=filter(A,1,speech2);re=xcorr(errorlp);G=sqrt(e*length(speech2));minlag=17;maxlag=160;[remax,idx]=max(re(n+minlag:n+maxlag));P=idx-1+minlag;end四、实验结果【实验六】⼀、实验题⽬Speech enhancement⼆、实验内容Write a program to implement the basic spectral magnitude subtraction.三、实验程序clear[speech,fs,nbits]=wavread('wznjdx_normal.wav');%读⼊数据alpha=0.04;%噪声⽔平winsize=256;%窗长size=length(speech);%语⾳长度numofwin=floor(size/winsize);%帧数hamwin=zeros(1,size);%定义汉明窗长度enhanced=zeros(1,size);%定义增强语⾳的长度ham=hamming(winsize)';%%产⽣汉明窗x=speech'+alpha*randn(1,size);%信号加噪声noisy=alpha*randn(1,winsize);%噪声估计N=fft(noisy);nmag=abs(N);%噪声功率谱%分帧for q=1:2*numofwin-1frame=x(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2);%对带噪语⾳帧间重叠⼀半取值hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=...hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham;%加窗y=fft(frame.*ham);mag=abs(y);%带噪语⾳功率谱phase=angle(y);%带噪语⾳相位%幅度谱减for i=1:winsizeif mag(i)-nmag(i)>0clean(i)=mag(i)-nmag(i);else clean(i)=0;endend%频域中重新合成语⾳spectral=clean.*exp(j*phase);%反傅⾥叶变换并重叠相加enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=...enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(spectral));endfigure(1);subplot(3,1,1);plot(speech);xlabel('样点数');ylabel('幅度');title('原始语⾳波形'); subplot(3,1,2);plot(x);xlabel('样点数');ylabel('幅度');title('语⾳加噪波形'); subplot(3,1,3);plot(enhanced);xlabel('样点数');ylabel('幅度');title('增强语⾳波形');四、实验结果。
实验一、语音信号采集与分析一、实验目的: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)、在背景噪声较小时用平均能量识别较为有效,而在背景噪声较大时用平均过零数识别较为有效。
语音信号处理实验指导书实验一:语音信号的采集与播放实验目的:了解语音信号的采集与播放过程,掌握采集设备的使用方法。
实验器材:1. 电脑2. 麦克风3. 扬声器或者耳机实验步骤:1. 将麦克风插入电脑的麦克风插孔。
2. 打开电脑的录音软件(如Windows自带的录音机)。
3. 在录音软件中选择麦克风作为录音设备。
4. 点击录音按钮开始录音,讲话或者唱歌几秒钟。
5. 点击住手按钮住手录音。
6. 播放刚刚录制的语音,检查录音效果。
7. 将扬声器或者耳机插入电脑的音频输出插孔。
8. 打开电脑的音频播放软件(如Windows自带的媒体播放器)。
9. 选择要播放的语音文件,点击播放按钮。
10. 检查语音播放效果。
实验二:语音信号的分帧与加窗实验目的:了解语音信号的分帧和加窗过程,掌握分帧和加窗算法的实现方法。
实验器材:1. 电脑2. 麦克风3. 扬声器或者耳机实验步骤:1. 使用实验一中的步骤1-5录制一段语音。
2. 将录制的语音信号进行分帧处理。
选择合适的帧长和帧移参数。
3. 对每一帧的语音信号应用汉明窗。
4. 将处理后的语音帧进行播放,检查分帧和加窗效果。
实验三:语音信号的频谱分析实验目的:了解语音信号的频谱分析过程,掌握频谱分析算法的实现方法。
实验器材:1. 电脑2. 麦克风3. 扬声器或者耳机实验步骤:1. 使用实验一中的步骤1-5录制一段语音。
2. 将录制的语音信号进行分帧处理。
选择合适的帧长和帧移参数。
3. 对每一帧的语音信号应用汉明窗。
4. 对每一帧的语音信号进行快速傅里叶变换(FFT)得到频谱。
5. 将频谱绘制成图象,观察频谱的特征。
6. 对频谱进行谱减法处理,去除噪声。
7. 将处理后的语音帧进行播放,检查频谱分析效果。
实验四:语音信号的降噪处理实验目的:了解语音信号的降噪处理过程,掌握降噪算法的实现方法。
实验器材:1. 电脑2. 麦克风3. 扬声器或者耳机实验步骤:1. 使用实验一中的步骤1-5录制一段带噪声的语音。
华南理工大学《语音信号处理》实验报告实验名称:端点检测姓名:学号:班级:10级电信5班日期:2013年5 月9日1.实验目的1.语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。
本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。
2. 实验原理1、短时能量语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。
在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。
这是仅基于短时能量的端点检测方法。
信号{x(n)}的短时能量定义为:语音信号的短时平均幅度定义为:其中w(n)为窗函数。
2、短时平均过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
过零分析是语音时域分析中最简单的一种。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。
过零率就是样本改变符号次数。
信号{x(n)}的短时平均过零率定义为:式中,sgn为符号函数,即:过零率有两类重要的应用:第一,用于粗略地描述信号的频谱特性;第二,用于判别清音和浊音、有话和无话。
从上面提到的定义出发计算过零率容易受低频干扰,特别是50Hz交流干扰的影响。
解决这个问题的办法,一个是做高通滤波器或带通滤波,减小随机噪声的影响;另一个有效方法是对上述定义做一点修改,设一个门限T,将过零率的含义修改为跨过正负门限。
于是,有定义:3、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
语音信号处理实验报告实验一:语音信号的端点检测学院:电子与信息学院专业:11级信息工程姓名:学号:提交日期:实验一:语音信号的端点检测1、实验内容语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。
本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。
2、实验方法本实验中,端点检测的方法有两种:短时能量和短时过零率。
语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。
在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。
这是仅基于短时能量的端点检测方法。
信号{x(n)}的短时能量定义为:短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
过零分析是语音时域分析中最简单的一种。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。
过零率就是样本改变符号次数。
信号{x(n)}的短时平均过零率定义为:2.2、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超过低门限,意味着信号开始。
此时整个端点检测可分为四段:静音段、过渡段、语音段、结束。
实验时使用一个变量表示当前状态。
静音段,如果能量或过零率超过低门限,就开始标记起始点,进入过渡段。
过渡段当两个参数值都回落到低门限以下,就将当前状态恢复到静音状态。
而如果过渡段中两个参数中的任一个超过高门限,即被认为进入语音段。
语音信号处理实验实验一 基于MATLAB 的语音信号时域特征分析一、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。
语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。
语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。
二、实验原理及实验结果1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。
在5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。
我们将每个短时的语音称为一个分析帧。
一般帧长取10~30ms 。
我们采用一个长度有限的窗函数来截取语音信号形成分析帧。
通常会采用矩形窗和汉明窗。
图1.1给出了这两种窗函数在帧长N=50时的时域波形。
0.20.40.60.811.21.41.61.82矩形窗samplew (n )0.10.20.30.40.50.60.70.80.91hanming 窗samplew (n )图1.1 矩形窗和Hamming 窗的时域波形矩形窗的定义:一个N 点的矩形窗函数定义为如下{1,00,()n Nw n ≤<=其他hamming 窗的定义:一个N 点的hamming 窗函数定义为如下0.540.46cos(2),010,()n n N N w n π-≤<-⎧⎨⎩其他=这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB ),会导致泄漏现象;汉明窗的主瓣宽8*pi/N ,旁瓣峰值低(-42.7dB ),可以有效的克服泄漏现象,具有更平滑的低通特性。
08电子C 班 苏清法 0815241036
实验一 数字信号处理综合实验
一、实验目的
目的:综合运用数字信号处理的理论知识进行信号的采样,重构,频谱分析和滤波器的设计,通过理论推导得出相应结论,再利用Matlab 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
二、基本要求
1.掌握数字信号处理的基本概念、基本理论和基本方法; 2.学会MATLAB 的使用,掌握MA TLAB 的程序设计方法; 3.掌握用MA TLAB 设计简单实验验证采样定理的方法; 4.掌握在Windows 环境下语音信号采集的方法; 5.学会用MA TLAB 对信号进行频谱分析;
6.掌握MATLAB 设计FIR 和IIR 数字滤波器的方法;
三、实验内容
(1) Matlab 产生离散信号的方法,作图的方法,以及基本运算操作 (2) 对连续正弦信号以不同的采样频率作采样 (3) 对采样前后信号进行傅立叶变换,并画频谱图 (4) 分析采样前后频谱的有变化,验证采样定理。
掌握画频谱图的方法,深刻理解采样频率,信号频率,采样点数,频率分辨率等概念
四、主要实验仪器及材料
微型计算机、Matlab 。
五、实验步骤
1.设计一简单正弦信号,通过改变采样率观察采样前后的信号变化。
例如:假设有一振幅为1,频率为10Hz ,相位为0.3的模拟信号,即sin(2100.3)t π⨯⨯+,用0.01s 的采样间隔(采样频率为100Hz )来表示原始信号(注意:实际上模拟信号不能用离散值表示,此处为了在计算机上表示,用采样率非常高的离散信号表示模拟信号)。
分别以5Hz ,10Hz (每秒采样10次,即采样间隔为0.1s ),20Hz ,40Hz ,80Hz ,200Hz 对原始信号进行采样,画出采样前后的信号,并画出其频谱图,对比前后的变化,验证采样定理。
(1)可以用t=0:1/fs:9/f; 取9个周期,通过改变采样率,自动改变采样点数。
(2)也可以通过设置dt1(采样间隔),已知采样点数n1,t1=n1*dt1,
如图所示,采样率为40Hz 时的原始信号,采样过程和采样后的信号时域图和频谱图,可见,当采样率大于原始信号频率的两倍时,采样前后信号频率基本不发生变化,信号不失真。
程序如下:
结论:当采样频率大于原始信号频率的两倍时,采样前后信号基本不发生变化即信号不失真。
2.设计数字滤波器和画出频率响应
根据分析所得的原始信号的频谱和噪声信号频谱特点,给出有关滤波器的性能指标。
首先用窗函数法或者最优化法设计高通,低通,带通,带阻滤波器,在MA TLAB中,可以利用函数fir1,firls设计FIR滤波器;
然后在用双线性变换法或脉冲响应法设计上面几种滤波器,在MA TLAB中,可以利用函数butte、cheby1和ellip设计IIR滤波器;
最后,利用MA TLAB中的函数freqz画出各滤波器的频率响应。
具体方法参加附件3种滤波器设计的步骤和实例。
如,根据以上语音信号的特点给出有关IIR滤波器的性能指标:
1)低通滤波器性能指标,fp=4500,fc=6500,Rs=100,Rp=1。
(fp:通带截至频率;fc:阻带截至频率;Rs:通带波纹;Rp:阻带波纹)
2)带阻滤波器性能指标,fp1=4800 Hz,fp2=5200 Hz,fc1=4600 Hz,fc2=5400 Hz,Rs=30dB,Rp=1dB。
([fp1 fp2]:阻带截至频率;[fc1 fc2]:通带截至频率)程序如下:相应波形:
3.用滤波器对信号进行滤波
比较各种滤波器的性能,然后用性能好的各滤波器分别对采集的信号进行滤波。
比较滤波前后语音信号的波形及频谱,要求在一个窗口同时画出滤波前后的波形及频谱。
在MA TLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter 对信号进行滤波。
程序如下:
波形如下:
实验总结:通过此次实验,学会了对一个信号波形的采样。
要恢复原信号波形必须满足采样定理即Fs>=2Fh 。
通过傅里叶变换可画出相应的频谱图。
此次实验也掌握了设计滤波器的一些知识,知道设计一个滤波器的关键在于相应参数的算法。
对理论知识有了一定的巩固和加强,特别是熟悉了对MATLAB的应用。