课程设计论文基于MATLAB的语音信号采集和双线性变换法滤波器设计.doc
-
资源ID:4869073
资源大小:127.01KB
全文页数:17页
- 资源格式: DOC
下载积分:10金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
课程设计论文基于MATLAB的语音信号采集和双线性变换法滤波器设计.doc
郑州轻工业学院课 程 设 计 任 务 书题目 基于MATLAB的语音信号采集和双线性变换法滤波器设计 专业、班级 电子信息工程 学号 姓名 主要内容、基本要求、主要参考资料等:主要内容:要求学生在MATLAB中采集语音信号,并对所采集的语音信号进行时域和频谱分析。给定滤波器的性能指标,采用双线性变换法设计滤波器滤除高频成分的信号,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。基本要求:1、学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 2、在MATLAB下采集 Windows自带的“Windows XP 关机.wav”语音信号。3、掌握数字信号处理的基本概念、基本理论和基本方法。 4、利用MATLAB环境采用双线性变换法设计数字滤波器滤出高频成分。 5、学会用 MATLAB 对信号进行分析和处理。 主要参考资料:1、张文.基于MATLAB的语音信号的滤波与实现J.山西电子技术.2008,22、徐靖涛.基于MATLAB的语音信号分析与处理J.重庆科技学院学报2008,1完 成 期 限: 2011.6.272011.7.1 指导教师签名: 课程负责人签名: 2011年 6月 24日摘要 本课程设计主要Matlab处理一段语音信号,绘制波形并观察其频谱。给定相应技术指标,用双线性变换法设计一个满足指标的巴特沃斯IIR滤波器,对该语音信号进行滤波处理,比较滤波前后的波形和频谱并进行分析,根据结果和学过的理论得出合理的结论。关键词 matlab;语音信号;双线性;滤波器14目 录1 语音信号的采集11.1 语音信号的特点11.2 语音信号的采集22 语音信号的分析32.1 语音信号分析技术32.2 语音信号的时域分析42.3 语音信号的频域分析53 滤波器的设计53.1 IIR滤波器53.2 巴特沃斯滤波器64 语音信号处理74.1 滤波前语音信号74.2 滤波后的语音信号85 设计思路106 心得体会11参考文献12附录 源程序121 语音信号的采集1.1 语音信号的特点一般来说,人的听觉能感知的声音频率范围为2020000Hz,在这一频率范围内可感知的声音强度为0140dB,其中人耳比较敏感的区域在504000Hz。因此,采集子系统的硬件参数可根据要分析的语音信号的频率和强度来确定通过对大量语音信号的观察和分析发现,语音信号主要有下面两个特点:在频域内,语音信号的频谱分量主要集中在3003400Hz的范围内。利用这个特点,可以用一个防混迭的带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。图一 语音信号时域波形 图二 语音信号频域波形 1.2 语音信号的采集MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,在MATLAB环境中,可以通过多种编程方法驱动声卡实现对语音信号的采集和播放,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析使用MATLAB语言编程可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种分析图的呈现等等在Matlab环境中,主要可以通过以下几种方法驱动声卡,采集语音信号: 1将声卡作为对象处理采集语音信号Matlab将声卡作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。操作时首先要对声卡产生一个模拟输入对象(ai),给ai对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数据,采集完成后停止对象并删除对象。2调用wavrecord功能函数采集语音信号。wavrecord功能函数只适用于windows95/98/N平台,它使用windows声音输入设备录制声音。函数调用方式:wavrecord(N,fs,ch,nbits); N:采集的样本数据量; fs:样本采集频率,为8000Hz、11025Hz、22050Hz和44100Hz之一,默认值为11025Hz; ch:样本采集通道,1为单声道,2为双声道,默认值为1(单声道); nbits:每个样本的位数(或称解析度), double、single或int16为16位, uint8为8位; 3运用audiorecorder对象采集语音信号audiorecorder(fs,nbits,ch)可以创设一个audiorecorder对象。fs:样本采集频率,为8000Hz、11025Hz、22050Hz和44100Hz之一,默认值为8000Hz; nbits:每个样本的位数,8位或16位,默认值为8位; ch:样本采集通道,1为单声道,2为双声道,默认值为1(单声道); audiorecorder对象创设后,就可以进行相应的录音、暂停、停止、播放以及数据读取等操作。本设计采用直接读取声音文件(*.wav)的方式进行语音信号的采集。2 语音信号的分析2.1 语音信号分析技术语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。因此语音信号分析在语音信号处理应用中具有举足轻重的地位。贯穿于语音分析全过程的是“短时分析技术”。因为,语音信号从整体来看其特性及表征其本质特征的参数均是随时间而变化的,所以它是一个非乎稳态过程,不能用处理乎稳信号的数字信号处理技术对其进行分析处理。但是,由于不同的语音是由人的口腔肌肉运动构成声道某种形状而产生的响应,而这种口腔肌肉运动相对于语音频率来说是非常缓慢的,所以从另一方面看,虽然语音倍号具有时变特性,但是在一个短时间范围内(一般认为在1030ms的短时间内),其特性基本保持不变即相对稳定,因面可以将其看作是一个准稳态过程,即语音信号具有短时平稳性。所以任何语音信号的分析和处理必须建立在“短时”的基础上即进行“短时分析”,将语音信号分为一段一段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为1030ms。这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成的特征参数时间序列。根据所分析出的参数的性质的不同,可将语音信号分析分为时域分析、频域分析、倒领域分析等;时域分析方法具有简单、计算量小、物理意义明确等优点,但由于语音信号最重要的感知特性反映在功率谱中,而相位变化只起着很小的作用,所以相对于时域分析来说频域分析更为重要。本文将简要介绍时域分析、频域分析。2.2 语音信号的时域分析语音信号的时域分析就是分析和提取语音信号的时域参数。进行语音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:表示语音信号比较直观、物理意义明确。实现起来比较简单、运算且少。可以得到语音的一些重要的参数。只使用示波器等通用设备,使用较为简单等。语音信号的时域参数有短时能量、短时过零率、短时自相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用6。在计算这些参数时使用的一般是方窗或汉明窗。对语音信号进行分析,发现发浊音时,尽管声道有若干个共振峰,但由于声门波引起谱的高频跌落,所以其话音能量约集中在3kHz以下。而发清音时,多数能量出现在较高频率上。高频就意味着高的平均过零率,低频意味着低的平均过零率,所以可以认为浊音时具有较低的过零率,而清音时具有较高的过零率。当然,这种高低仅是相对而言,并没方精确的数值关系。2.3 语音信号的频域分析语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。本文介绍的是语音信号的傅里叶分析法。因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱 ”。3 滤波器的设计3.1 IIR滤波器IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。 对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:1、确定所需类型数字滤波器的技术指标。2、将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为=2/T tan(0.5)3、将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。4、设计模拟低通滤波器。5、通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。6、采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步骤:1、确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。2、将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。3、按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。4、用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。3.2 巴特沃斯滤波器MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,s),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。下面我设计的IIR数字滤波器的主要程序:fp=2500;fs=3500;As=30;Ap=1;ft=22050; wp=2*fp*pi; ws=2*fs*pi;N,Wc=buttord(wp,ws,Ap,As,'s') b,a=butter(N,Wc,'s'); num,den=bilinear(b,a,ft);h,f=freqz(num,den); 图三 巴特沃斯低通滤波器的幅频特性4 语音信号处理4.1 滤波前语音信号本设计采用的语音信号是Windows的关机声音。以下是通过Matlab进行的时域和频域分析波形。这与第一部分分析的语音信号的特征一致。图四 原始语音信号的时域和频域波形4.2 滤波后的语音信号如图五所示,图五为滤波前后语音信号的时域波形,通过对比,无法判断信号是否发生变化。图六为滤波前后语音信号频域波形的变化,由此可以看到,通过巴特沃斯低通滤波器后,信号的高频部分严重衰减。通过播放滤波前后的声音文件也可发现,滤波后,声音明显沉闷,意味着低频成分增加,而高频成分减少了。图五 滤波前后信号时域波形图六 滤波前后信号的频谱 5 设计思路开始语音信号的采集(wavread函数),画时域图快速傅里叶变换,并且画频谱图设定滤波器性能指标,通带截止频率fb=1100,阻带截止频率fc=1200,通带波纹Ap=1,阻带波纹As=20脉冲响应不变法法设计巴特沃斯滤波器验证并进行频谱分析设计好的滤波器进行滤波处理比较滤波前后语音信号的波形及频谱回放语音信号结束6 心得体会在这次的课程设计中我们设计的滤波器对语音信号的滤噪处理或多或少会因为我们的疏忽或者实践能力不够还是会遇到问题的,当遇到问题时我们不但运用自己学到的知识还得到同学和老师的帮助将其解决,不断完善和修改。设计中出现的问题及解决方法如下:1、在运用Matlab设计滤波器时,当编辑完前面两条程序时无法放出声音,后来发现我们应当把采集的语音信号wav文件放到Matlab的work文件夹中。2、所有的时间波形横坐标都要化为时间,滤波前后频谱的横坐标应是频率,这样在观察通带截止频率和阻带截止频率时更加精确,误差较小。3、要区分清楚ft、fs、fp所代表的意思。通过这次课程设计,使我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,在之前数字信号与处理的学习以及完成课后的作业的过程中,已经使用过MATLAB,对其有了一些基础的了解和认识。本次经过一周的课程设计,让我们更熟悉了数字信号处理的基本知识和MATLAB的m语言,让我们把课上的理论知识运用到实际中去,让我们更近一步地巩固了课堂上所学的理论知识,并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法。总的来说,通过这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助!参考文献1. 楼顺天.MATLAB 7.x的系统分析与设计.西安电子科技大学出版社.2005.22. 陈怀琛.MATLAB及在电子信息课程中的应用.北京电子工业出版社.2008.13. 徐靖涛.基于MATLAB的语音信号分析与处理.重庆科技学院学报.2008.14. 程佩青. 数字信号处理教程(第三版). 清华大学出版社. 2007.2附录 源程序%做原始语音信号的时域图形%clear all;close all;fc=22050; f0=fc*(0:511)/1024;x,fc,nbits=wavread('Windows XP 关机.wav');%载入波形sound(x,22050);%播放声音X=fft(x,4096);%进行快速傅里叶变换subplot(2,1,1); %做原始语音信号的时域图形plot(x,'b'); title('原始语音信号');xlabel('时间 n');ylabel('幅值 n'); subplot(2,1,2);%做原始语音信号的FFT频谱图plot(f0,abs(X(1:512); title('原始语音信号FFT频谱')%设计低通滤波器% % fp=2500;fs=3500;As=30;Ap=1;ft=22050;%滤波器指标wp=2*fp*pi; ws=2*fs*pi;N,Wc=buttord(wp,ws,Ap,As,'s') b,a=butter(N,Wc,'s'); %双线性变换法设计低通滤波器%num,den=bilinear(b,a,ft);h,f=freqz(num,den); figure(2);plot(f*ft/(2*pi),abs(h);grid on;title('巴特沃斯低通滤波器');%语音信号通过低通滤波器%y=filter(num,den,x);Y=fft(y,4096);figure(3);subplot(2, 1, 1);plot(x,'b');title('滤波前信号波形');subplot(2, 1 ,2);plot(y,'r');title('滤波后信号波形');figure(4);subplot(2, 1, 1);plot(f0,abs(X(1:512),'b');title('滤波前信号频谱');subplot(2, 1 ,2);plot(abs(Y),'r');title('滤波后信号频谱');xlabel('HZ');sound(y,fs,nbits);