MATLAB课程设计.docx
- 文档编号:10555728
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:15
- 大小:102.01KB
MATLAB课程设计.docx
《MATLAB课程设计.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
MATLAB课程设计
郑州轻工业学院
课程设计任务书
题目基于MATLAB的语音信号的时、频域分析
专业、班级学号姓名
主要内容、基本要求、主要参考资料等:
主要内容:
录制一段本人的语音文件,利用MATLAB画出时域波形图和频谱图,分析相应的图形参数含义。
比较一段含噪语音在滤波前后的时域、频域变化,并进行相应的参数分析。
基本要求:
1、掌握MATLAB编程的原理和方法。
2、熟悉语音信号的基本时域、频域特征参数。
3、掌握数字信号处理的基本概念、理论和方法。
4、熟练运用MATLAB进行语音信号的分析处理。
主要参考资料:
[1]赵力著,语音信号处理(第2版)[M],机械工业出版社,2010.
[2]胡航著,语音信号处理(第四版)[M],哈尔滨工业大学出版社,2009.
[3]张雄伟等著,现代语音处理技术及应用[M],机械工业出版社,2009.
完成期限:
2011.6.27-2011.7.1
指导教师签名:
课程负责人签名:
2011年6月24日
基于MATLAB的语音信号的时、频域分析
摘要
语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理技术是语音处理领域中新近发展起来的一个学科分支,MATLAB是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行语音信号的采集、分析和处理相当便捷。
文章介绍了在MATLAB环境中如何对一段录制的语音文件进行采集和采集后的频谱分析处理,并利用MATLAB画出时域波形图和频谱图,分析相应的图形参数含义。
而且比较一段含噪语音在滤波前后的时域、频域变化,通过相应的参数分析进一步了解语音信号的特性。
关键字:
MATLAB;语音信号;频谱分析;FFT
目录
1.概述1
2.语音信号的特点及频域特征分析2
2.1语音信号的特点2
2.2语音信号分析原理2
2.3时域信号的FFT分析3
2.4语音信号频域分析4
2.4.1语音信号的频谱分析过程5
2.4.2短时傅里叶变换(频谱分析)5
3.语音信号分析的基本步骤6
3.1理论依据7
3.2信号的录制及采集7
3.3带干扰信号滤波实现及FFT频谱分析8
3.4数字滤波器设计8
3.5信号处理8
4.语音信号处理9
4.1噪声语音信号处理9
4.2带噪声语音信号处理10
5.总结13
参考文献14
附录115
1.概述
语言是人类持有的功能,是人们交流思想和进行社会活动的最基本手段。
声音是人类常用的工具,是相互传递信息的最主要的手段。
因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。
并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。
现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。
我们通过对语音信号进行测定并将其转变为另一种形式,可以提高我们的通信能力。
MATLAB是美国MathWorks公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。
同时由于Matlab是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用MATLAB软件提供的强大数值运算函数库,可以将课堂教学从繁重的运算与推导过程中解脱出来,快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。
作为高科鼓应用领域的研究热点,语音信号采集与分析从理论的研究到产品的开发已经走过了几十个春秋并且取得了长足的进步。
它正在直接与办公、交通、金融、公安、商业、旅游等行业的语音咨询与管理.工业生产部门的语声控制,电话、电信系统的自动拨号、辅助控制与查询以及医疗卫生和福利事业的生活支援系统等各种实际应用领域相接轨,并且有望成为下一代操作系统和应用程序的用户界面。
可见,语音信号采集与分析的研究将是一项极具市场价值和挑战性的工作。
我们今天进行这一领域的研究与开拓就是要让语音信号处理技术走人人们的日常生活当中,并不断朝更高目标而努力。
2.语音信号的特点及频域特征分析
2.1语音信号的特点
大量语音信号的观察和分析发现,语音信号主要有下面两个特点:
(1)在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。
利用这个特点,可以用一个防混迭的带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。
(2)在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。
在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。
2.2语音信号分析原理
信号的傅立叶表示在信号的分析与处理中起着重要的作用。
因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。
另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。
输出频谱是声道系统频率响应与激励源频谱的乘积。
声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。
由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
2.3时域信号的FFT分析
FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。
如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。
函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。
函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x为矩阵,按相同方法对x进行处理。
2.4语音信号频域分析
语音信号是基于时间轴上的一维数字信号,其主要参数分析为频域上的分析,在这里主要是对语音信号进行频域上的分析。
在信号分析中,频域往往包含了更多的信息。
对于频域来说,大概有8种波形可以让我们分析:
矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。
对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:
将时域的波形转化到频域来分析。
如下图2-1、2-2一段语音信号的时域和FFT频谱图:
2-1语音信号时域波形图
2-2语音信号FFT频谱图
2.4.1语音信号的频谱分析过程
傅里叶频谱分析是语音信号频域分析中广泛采用的一种方法。
语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。
进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。
在FFT处理之后,普通频谱分析可以进行频域上滤波处理,从而使频谱更加平滑。
最后IFFT处理观察恢复后的时域信号图形,频谱分析过程(如图2所示)。
2-3频谱分析过程
2.4.2短时傅里叶变换(频谱分析)
傅里叶频谱分析的基础是傅里叶变换,用傅里叶变换及其反变换可以求得傅里叶谱、自相关函数、功率谱、倒谱。
由于语音信号的特性是随着时间缓慢变化的,由此引出语音信号的短时分析。
如同在时域特征分析中用到的一样,这里的傅里叶频谱分析也采用相同的短时分析技术。
信号x(n)的短时傅里叶变换定义为
式中,w(n)为窗口函数。
可以从两个角度理解函数的物理意义:
第一种解释是,当n固定时,如n=n0,则是将窗函数的起点移至n0处截取信号x(n),再做傅里叶变换而得到的一个频谱函数。
这是直接将频率轴方向来理解的。
另一种解释是从时间轴方向来理解,当频率固定时,例如w=wk,则可以看作是信号经过一个中心频率为的带通滤波器产生的输出。
这是因为窗口函数(n)通常具有低通频率响应,而指数对语音信号x(n)有调制的作用,使频谱产生移位,即将x(n)频谱中对应于频率的分量平移到零频。
3.语音信号分析的基本步骤
语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系。
其中语音采集和分析仪器的小型化、智能化、数字化以及多功能化的发展越来越快,分析速度较以往也有了大幅度的提高。
但现在市场上一般的语音分析系统大部分都是采用单片机或DSP芯片的分析仪器,其价格昂贵、操作复杂,且个别仪器适用范围单一,仅能用于特定的测量分析项目。
而基于MATLAB的语音信号采集与分析系统,可以利用MATLAB强大的数值计算与可视化功能,以及丰富的数字信号处理函数,在MATLAB环境下方便地完成对语音信号的各种分析工作。
3.1理论依据
根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理; 时域信号的FFT分析;),阐明设计原理。
3.2信号的录制及采集
语音信号的录制可以有很多的方式,可以通过手机、MP3,、Windows附件的娱乐中的录音机程序等进行录制,本设计录制的是一段本人的语音文件,选用的是手机录制的方式。
并通过相应的格式转换软件将其转换为MATLAB可以读取的WAV格式的语音文件,供MATLAB相关函数直接读取、写入或播放。
相应的程序如下:
[y,fs,bits]=wavread('语音信号路径',[N1N2])
用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1N2]表示读取从N1点到N2点的值(若只有一个N
的点则表示读取前N点的采样值)。
sound(x,fs,bits);
用于对声音的回放。
向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
在将语音信号进行数字化前,必须先进行防混叠预滤波,预滤波的目的有两个:
抑制输入信导各领域分量中频率超出fs/2的所有分量(fs为采样频率),以防止混叠干扰。
抑制50Hz的电源工频干扰。
这样,预滤波器必须是一个带通滤波器,设其上、下截止颜率分别是fH和fL,则对于绝大多数语音编译码器,fH=3400Hz、fL=60~100Hz、采样率为fs=8kHz;而对丁语音识别而言,当用于电话用户时,指标与语音编译码器相同。
当使用要求较高或很高的场合时fH=4500Hz或8000Hz、fL=60Hz、fs=10kHz或20kHz。
采集语音信号,并对其进行FFT频谱分析,画出信号的时域波形图和频谱图。
3.3带干扰信号滤波实现及FFT频谱分析
对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。
并对其进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。
3.4数字滤波器设计
根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。
3.5信号处理
用所设计的滤波器对含噪语音信号进行滤波。
对滤波后的语音信号进行FFT频谱分析。
画出处理过程中所得各种波形及频谱图。
对语音信号进行回放,感觉滤波前后声音的变化。
比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。
4.语音信号处理
4.1噪声语音信号处理
下面的一段程序是语音信号在MATLAB中的最简单表现,它实现了语音的采集,以及绘出了语音信号的波形频谱图。
fs=4000;%语音信号采样频率为4000
x1=wavread('声音1.wav');
t=(0:
length(x1)-1)/4000;
y1=fft(x1,2048);%对信号做2048点FFT变换
f=fs*(0:
1023)/2048;
figure,plot(t,x1)%做原始语音信号的时域图形
gridon;axistight;
title('原始语音信号时域图形');
xlabel('time(s)');
ylabel('幅度');
figure,plot(f,abs(y1(1:
1024)))%做原始语音信号的FFT频谱图
gridon;axistight;
title('原始语音信号FFT频谱')
xlabel('Hz');
ylabel('幅度');
4-1语音信号时域波形图4-2语音信号FFT频谱图
4.2带噪声语音信号处理
下面的一段程序是带有噪声的语音信号在MATLAB中的最简单表现,它实现了语音的采集,以及使用双线性变换法设计了巴特沃斯数字低通IIR滤波器对带有噪声的语音信号进行滤波,并绘出了语音信号的滤波前后时域波形图及频域图进行对比。
录音为“喂,你好吗”。
程序如附录1所示。
语音信号滤波前后的语音信号时域波形图及频域图如下图4-3,4-4所示:
图4-3滤波前后的时域波形比较
图4-4滤波前后的频谱比较
图4-5频率响应曲线
5.总结
通过本次Matlab的课程设计,我对Matlab软件有了更深入的了解。
为了做好这次的课程设计,查阅了大量资料,并在各个网站上搜索与此有关的知识,这个过程使我受益匪浅,了解到了自主探究学习的很多方法。
我觉得这个是最重要的,对于今后任何一个领域或者某一方面的学习研究中都是大有益处的。
对于这次课程设计,较好的完成了对语音信号的频谱分析,对所采集的带有干扰噪声语音信号进行滤波处理,对加入噪声的信号进行播放,并进行时域和频谱分析。
通过fft变换,得出了语音信号的频谱图;
在这里,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。
对于一些语言还只是停留在理解上面,要自己熟练运用的确还有一段距离,在编程过程中,也努力过,努力想去继承前人的智慧,但无奈自己以前基础知识太差以及理解参透能力有限。
所以最后在程序这方面还是有待加强。
但由于知识能力有限,当中也存在相当的不足,特别体现在滤波这一块。
对滤波的研究,本设计只是举出了很小的一个方面,还有许多精髓都未能一一列举。
于是设计的还是很粗燥。
当然,这些问题与不足在今后的进一步学习中,我会一步一步的去进行解决。
另外,Matlab软件是一个非常实用的软件,它不但可以进行复杂的数值运算,还能够对图像进行各种分析处理,因此,在今后的学习工作中,我还会继续对Matlab进行更加深入的学习和应用。
参考文献
1、赵力著,语音信号处理(第2版)[M],机械工业出版社,2010.
2、胡航著,语音信号处理(第四版)[M],哈尔滨工业大学出版社,2009.
3、张雄伟等著,现代语音处理技术及应用[M],机械工业出版社,2009.
4、徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2008年1月
5、韩纪庆,张磊,郑铁然.语音信号处理.北京:
清华大学出版社,2004年9月
6、易克初,田斌,付强.语音信号处理.北京:
国防工业出版社,2000年6月
7、程佩青.数字信号处理教程(第二版).北京:
清华大学出版社,2001年8月
8、贾永红.数字图像处理.武汉大学出版社,2003年9月
9、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:
电子工业出版社.2008年1月
附录1
x=wavread('声音2.wav');
Ft=8000;
%t=(0:
length(x)-1)/4000;
wp=0.1*pi;
ws=0.4*pi;
Fs=4000;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2);%将模拟指标转换为数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,1,50,'s');%选择滤波器最小阶数
[Z,P,K]=buttap(N);%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
[H,W]=freqz(bz,az);%绘制频率响应曲线
figure,plot(W*Fs/(2*pi),abs(H))
gridon;
f1=filter(bz,az,x);
figure
subplot(1,2,1),plot(x)
title('滤波前的时域波形');gridon;%画出滤波前时域波形
xlabel('time(s)');
subplot(1,2,2),plot(f1)
title('滤波后的时域波形');gridon;%画出滤波后时域波形
xlabel('time(s)');
ylabel('幅度');
F0=fft(f1,1024);
y2=fft(x,1024);
f=Fs*(0:
511)/1024;
figure
subplot(1,2,1),plot(f,abs(y2(1:
512)));
title('滤波前的频谱');gridon;%画出滤波前频谱图
xlabel('Hz');
subplot(1,2,2),plot(f,abs(F0(1:
512)));
title('滤波后的频谱');gridon;%画出滤波后频谱图
xlabel('Hz');
ylabel('幅度');
%sound(x);%播放原始语音信号
%sound(f1);%播放滤波后语音信号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计