基于Matlab的语音信号的分析与处理_第1页
基于Matlab的语音信号的分析与处理_第2页
基于Matlab的语音信号的分析与处理_第3页
基于Matlab的语音信号的分析与处理_第4页
基于Matlab的语音信号的分析与处理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、*实践教学*兰州理工大学计算机与通信学院2013年春季学期信号处理课程设计题 目:基于Matlab的语音信号的分析与处理 专业班级: 通信工程(1)班 姓 名: 曹立超 学 号: 10250101 指导教师: 陈海燕 成 绩: 目 录摘 要1前 言3一、基本原理42.1 语音信号概述42.2数字滤波器原理4二、总体设计思想62.1 语音信号的采集62.2 语音信号处理工具的选择62.3 数字滤波器的设计7三、语音信号分析和滤波处理103.1 语音信号的采集103.2 语音信号的读入与打开10总 结19参考文献20致 谢21附录程序22摘 要本设计用微软录音机采集了一段语音,对其进行了时域分析,

2、频谱分析,分析语音信号的特性。并应用matlab平台对语音信号加入了不同的噪声,进一步用双线性变换法设计数字低通滤波器和用窗函数法设计了FIR低通滤波器,然后对加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放加噪语音信号和去噪语音信号,对比研究了IIR滤波器和FIR滤波器在信号处理尤其是信号滤波去噪方面的特性和应用。从理论和实践上比较不同数字滤波器的滤波效果。关键词:语音信号;频域特性; 时域特性; 滤波器25前 言语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是

3、人类最重要、最有效、最常用和最方便的交换信息的形式。语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。本设计先完成语音信号的采集,然后设计低通滤波器对采集到的语音信号进行滤波处理,分析语音信号各频率段的特性。并对所采集的语音信号加入不同的干扰噪声,对加入噪声的信号进行频谱分析,针对受干扰语音信号的特点设计滤波器,对加噪信号进行滤波,恢复原信号。把原始语音信号、加噪语音信号和滤波后的信号进

4、行时域变换和频域变换,画出它们的时域波形和频域波形图,从视觉角度比较分析滤波的效果。也可将这3类信号进行播放从听觉角度感受滤波的效果。一、基本原理2.1 语音信号概述语言是人类创造的,是人类区别于其他地球生命的本质特征之一。人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取便于分析和处理的语音信源,必须将在空气中传播的声波转变为包含语音信息并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音信号就成为语音的表现形式或载体。语音学和数字信号处理的交叉结合便形成了语音信号处理。语音信号处理是建立在语音学和数字信号处理基础之上的,对语音信号模型进行分析、存储、传输、识别和合成等

5、方面的一门综合性学科。2.2数字滤波器原理数字滤波器的概念:若滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF)。数字滤波器实质上是一种运算过程用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。数字滤波器的分类:数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。(1)根据单位冲激响应h(n)的时间特性分类 无限冲激响应(IIR)数

6、字滤波器 有限冲激响应(FIR)数字滤波器(2)根据实现方法和形式分类 递归型数字滤波器 非递归型数字滤波器 快速卷积型(3)根据频率特性分类 低通数字滤波器、高通数字滤波器、带通数字波器、 带阻数字滤波器二、总体设计思想2.1 语音信号的采集Windows 自带了一个录音机程序(简称录音机),通过它可以驱动声卡采集、播放和简单处理语音信号。语音信号的采集可以用麦克风直接录制人的语音,也可以通过音频线或者MIDI 线将收音机、电视机或磁带录机中的语音信号采集到计算机中。在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。加速或减速的改变可以完成变音功能,

7、反转可以达到对声音文件保密的功能。 本设计用是收音机接到电脑上用录音机录的,保存起来以备处理。2.2 语音信号处理工具的选择语音信号的进一步处理分析工作选用了matlab平台。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善 MATLAB 产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。在编程效率、程序可读性、可移植性和可扩充性上matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。另外matla

8、b为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受 到了越来越多的用户的欢迎 Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,matlab远优越于其他的高级编程语言。Matlab语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。但是,和其他的高级语言相比,matlab程序的执行速度较慢。在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用matlab开发就不存在此类问题了。2.3 数字滤波器

9、的设计本设计在matlab平台上,设计了IIR和FIR滤波器各种类型的滤波器。用以对语音原始信号及加噪的语音信号进行滤波,重点对加噪信号进行了滤波。对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。设计IIR数字滤波器的常用方法是从模拟滤波器来设计数字IIR滤波器。模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。再将模拟滤波器转换为数字滤波器,其转换方法

10、有冲激响应不变法和双线性Z变换法。一般,当着眼于滤波器的时域瞬态响应时,采用脉冲响应不变法较好,而其它情况下,对于IIR的设计,大多采用双线性变换法。 对于FIR滤波器,它有精确、严格的线性相位特性,并且可以做成既是因果的又是稳定的系统。所以FIR滤波器的应用越来越广泛。IIR与FIR滤波器的性能比较如下图3.1所示。IIR DFFIR DF(1)相位一般是非线性的(1)相位可以做到严格线性(2)不一定稳定(2)一定是稳定的(3)不能用FFT作快速卷积(3)信号通过系统可采用快速卷积(4)一定是递归结构(4)主要是非递归结构,也可含递归环节(5)对频率分量的选择性好(零极点可同时起作用)(5)

11、选择性差(6)相同性能下阶次较低(6)相同性能下阶次高(7)有噪声反馈,噪声大(7)噪声小(8)运算误差大,有可能出现极限环振荡(8)运算误差小,不会出现极限环振荡(9)设计有封闭形式的公式,一次完成(9)没有封闭形式的设计公式,须靠经验与反复调试(10)对计算手段的要求较低(10)一般需用计算机计算(11)主要用于设计分段常数的标准低通、高通、带通、带阻和全通滤波器(11)还可设计正交变换器、微分器、线性预测器、回波抵消器、均衡器、线性调频器等各种网络,适用范围广从上面的简单比较我们可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。例如,从使用要求上来看,在对

12、相位要求不敏感的场合,如语言通讯等,选用IIR较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。而不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:(1) 按照实际任务的要求,确定滤波器的性能指标。(2) 用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。根据系统的不同的要求

13、可以考虑用IIR系统函数或FIR系统函数去逼近。(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。三、语音信号分析和滤波处理3.1 语音信号的采集把语音信号并保存为.wav文件,长度小于30秒,并对语言信号进行采样;录制的软件可以使用Windows自带的录音机,或者也可以使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为了方便比较,需要在安静、无噪音、干扰小的环境下录。3.2 语音信号的读入与打开 在MATLAB中,y,fs,bits=wavread('Blip',N1 N2);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采

14、样位数。N1 N2表示读取的值从N1点到N2点的值。 sound(y); 用于对声音的回放。向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号的波形频谱图。%语音信号的时域波形和频谱图fs=11025; %语音信号采样频率为22050x1=wavread('yin.wav');%读取语音信号的数据,赋给变量x1,sound(x1,11025); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:

15、511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给ffigure(1) %创建图形窗1plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('时间'); %x轴的名字是“时间”ylabel('幅值'); %y轴的名字是“幅值”figure(2)freqz(x1) %绘制原始语音信号的频率响应图title('频率响应图')plot(f,abs(y1(1:512);figure(3) title('原始语音信号FFT频谱')xlabel(&#

16、39;Hz');ylabel('幅值');图3-1 语音信号的时域波形图3-2 语音信号的频谱图%对噪音信号进行时域和频域分析。fs=11025; x1=wavread('yin.wav'); %读取语音信号的数据,赋给变量x1f=fs*(0:511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给ft=0:1/fs:(length(x1)-1)/fs; %将0到x1的长度减1后的值除以fs的值,且步长为1/fs的值,的序列的值,赋予tAu=0.03; %噪声幅值d=Au*sin(2*pi*5500*t)' %

17、所加的噪声是正弦信号x2=x1+d; %将正弦信号噪声加在语音信号上sound(x2,22050); %播放语音信号y1=fft(x1,1024); %对信号y1做1024点FFT变换y2=fft(x2,1024); %对信号y2做1024点FFT变换figure(1); %创建图形窗1plot(t,x2); %做加噪后的信号时域图形(绘出t对x2的线性图)title('加噪后的信号');xlabel('时间'); %x轴的名字是“时间”ylabel('幅值'); %y轴的名字是“幅值”figure(2) %创建图形窗2subplot(2,1,1

18、); % 创建两行一列绘图区间的第1个绘图区间plot(f,abs(y1(1:512); %做原始语音信号的频谱图title('原始语音信号频谱');xlabel('Hz'); %x轴的名字是“HZ”ylabel('幅值'); % y轴的名字是“幅值”subplot(2,1,2); %创建两行一列绘图区间的第2个绘图区间plot(f,abs(y2(1:512); %做加噪后的语音信号的频谱图(abs是绝对值,plot是直角坐标下线性刻度曲线)title('加噪后的信号频谱');xlabel('Hz'); %x轴的名

19、字是“HZ”ylabel('幅值'); % y轴的名字是“幅值”图3-3 加噪后的语音信号时域波形图3-4原始语音信号与加噪后的语音信号的频谱比较图%butter设计模拟低通滤波器再用双线性变换法设计IIR数字低通滤波器fp=1000;fc=1200;FS=8000;rp=1;rs=100; wpz=2*pi*1000/FS;wsz=2*pi*1200/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标N,wc=buttord(wp,ws,rp,rs,'s');B,A=butter(N,wc,'s

20、9;);Bz,Az=bilinear(B,A,FS);w=0:0.01*pi:pi;h,w=freqz(Bz,Az,w);figure(1);plot(w/pi,20*log(abs(h),'k');axis(0,1,-800,100);xlabel('w/pi');ylabel('幅度/dB');grid;title('butter数字低通滤波器');y,fn,nbits=wavread('yin.wav'); Y=fft(y);y1=filter(Bz,Az,y);Y1=fft(y1);n=0:length(y

21、)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits); %滤波后语音回放图3-5 设计butter数字低通滤波器图3-6滤波前与滤波后语音信号波形、频谱的比较%用凯瑟窗设计FIR低通滤波器fp=1000;fs

22、=1200;rs=100;Fs=8000; %kaiser滤波器设计wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Bt=ws-wp;alph=0.112*(rs-8.7);M=ceil(rs-8)/2.285/Bt);wc=(wp+ws)/2/pi;hn=fir1(M,wc,kaiser(M+1,alph);figure(1);freqz(hn);y,fn,nbits=wavread('yin.wav'); Y=fft(y);y1=fftfilt(hn,y); %利用 kaiser滤波器对语音信号滤波Y1=fft(y1);n=0:length(y)-1;figure(

23、2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits); %滤波后语音回放 图3-7 凯瑟窗设计FIR低通滤波器 图:*图3-8 滤波前与滤波后的波形、频谱的比较总 结这次实验是用学过的数字信号理论为依据,用MATLAB代码实现,通

24、过这几次的实验,感触特别多,也学到了很多东西。首先,为了完成这次的课程设计,在图书馆翻阅了很多有关这次设计的参考书,对这些参考书的有关内容都做了认真的分析,了解了一些函数的用法。其次,通过本次的实验,使我们对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。同时可以看到滤波器在语音处理的重要性,学到了很多滤波器的设计方法,对MATLAB这个软件有了进一步的了解,学了会用 MATLAB 对信号进行分析和处理。通过综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深了对所学知识的理解,建立概念。

25、对以前在课本上所学的东西有了更深入的理解和掌握。同时在设计过程中遇到许多问题都是在平时的过程中所未接触到的,尤其是在使用MATLAB的相关程序对语音信号的录制和处理的函数都需要我们自己去查找资料,这加强了我们的动手能力和自觉性,巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。再次,在做实验的过程中会遇到很多的困难,在困难面前不要放弃,只要有细心和耐心,坚持下去会达到想要的设计结果。最后,无论做什么样的实验,都需要要有一定的理论知识作为基础,同时通过这次课程设计,我对于以前所学的数字信号处理知识有了更深

26、的理解。参考文献1丁玉美.数字信号处理M.西安电子科技大学出版社,2003,32朱冰莲.数字信号处理M.电子工业出版社,2003,73 陈怀琛.数字信号处理教程M.北京:电子工业出版社,2004.4 程佩青.数字信号处理教程(第二版)M.北京:清华大学出版社,2001.5 韩纪庆,张磊,郑铁然.语音信号处理M.北京:清华大学出版社,2004.6 易克初,田斌,付强.语音信号处理M.北京:国防工业出版社,2000.7 周辉,董正宏.数字信号处理基础及MATLAB实现M.北京:北京希望电子 出版社,2006.8 邹理和.语音信号处理M.北京:国防工业出版社,1985.致 谢经过四周的努力和完善,系

27、统终于可以正常的运行。 在这里首先感谢我的课程设计指导教师陈海燕老师,在这段时间一直给我们的支持与鼓励。认真负责的监督我们课程设计的进度,耐心的指导我们使我们能够按时的完成任务。还有特别感谢一下同学们对我提出的宝贵的建议,使得我能够比较顺利的完成任务。还有感谢学校为我们提供的良好实验环境以及充足的实验设备,为我们的设计和调试提供了很大的方便。在这段时间学到了很多。这对我来说绝对是一个非常宝贵的历练。从中我切身体会到了理论和现实的差距,只有真正动手去做才能发现问题。最后,感谢所有对我提供过帮助的人。谢谢。附录程序 %语音信号的时域波形和频谱图fs=11025; %语音信号采样频率为22050x1

28、=wavread('yin.wav');%读取语音信号的数据,赋给变量x1,sound(x1,11025); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给ffigure(1) %创建图形窗1plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('时间'); %x轴的名字是“时间”ylabel('幅值'); %y轴的名字是“幅值”figure(2)freqz

29、(x1) %绘制原始语音信号的频率响应图title('频率响应图')plot(f,abs(y1(1:512);figure(3) title('原始语音信号FFT频谱')xlabel('Hz');ylabel('幅值');%对噪音信号进行时域和频域分析。fs=11025; x1=wavread('yin.wav'); %读取语音信号的数据,赋给变量x1f=fs*(0:511)/1024; %将0到511,步长为1的序列的值与fs相乘并除以1024的值,赋值给ft=0:1/fs:(length(x1)-1)/fs;

30、%将0到x1的长度减1后的值除以fs的值,且步长为1/fs的值,的序列的值,赋予tAu=0.03; %噪声幅值d=Au*sin(2*pi*5500*t)' %所加的噪声是正弦信号x2=x1+d; %将正弦信号噪声加在语音信号上sound(x2,22050); %播放语音信号y1=fft(x1,1024); %对信号y1做1024点FFT变换y2=fft(x2,1024); %对信号y2做1024点FFT变换figure(1); %创建图形窗1plot(t,x2); %做加噪后的信号时域图形(绘出t对x2的线性图)title('加噪后的信号');xlabel('时

31、间'); %x轴的名字是“时间”ylabel('幅值'); %y轴的名字是“幅值”figure(2) %创建图形窗2subplot(2,1,1); % 创建两行一列绘图区间的第1个绘图区间plot(f,abs(y1(1:512); %做原始语音信号的频谱图title('原始语音信号频谱');xlabel('Hz'); %x轴的名字是“HZ”ylabel('幅值'); % y轴的名字是“幅值”subplot(2,1,2); %创建两行一列绘图区间的第2个绘图区间plot(f,abs(y2(1:512); %做加噪后的语音信号

32、的频谱图(abs是绝对值,plot是直角坐标下线性刻度曲线)title('加噪后的信号频谱');xlabel('Hz'); %x轴的名字是“HZ”ylabel('幅值'); % y轴的名字是“幅值”%butter设计模拟低通滤波器再用双线性变换法设计IIR数字低通滤波器fp=1000;fc=1200;FS=8000;rp=1;rs=100; wpz=2*pi*1000/FS;wsz=2*pi*1200/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标N,wc=buttord(wp,ws,rp,rs,'s');B,A=butter(N,wc,'s');Bz,

温馨提示

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

评论

0/150

提交评论