数字信号处理课程设计语音信号的处理与滤波精品文档格式.docx
《数字信号处理课程设计语音信号的处理与滤波精品文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计语音信号的处理与滤波精品文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
二.MATLAB工具简介
1.MATLAB是矩阵实验室(Matrix Laboratory)之意,现已发展成为适合多学科,多种工作平台的功能强大的大型软件,已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;
2.MATLAB的语言特点
(1)。
语言简洁紧凑,使用方便灵活,库函数极其丰富。
MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。
(2)运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
(3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
(4)程序限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
(5)程序的可移植性很好,基本上不做修改就可在各种型号的计算机和操作系统上运行。
(6)MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
(8)功能强大的工具箱是MATLAB的另一特色。
MATLAB包含两个部分:
核心部分和各种可选的工具箱。
核心部分中有数百个核心内部函数。
其工具箱又分为两类:
功能性工具箱和学科性工具箱。
功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。
功能性工具箱用于多种学科。
而学科性工具箱是专业性比较强的,如control,toolbox,signl
proceessing
toolbox,commumnication
toolbox等。
(9)源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
三.设计目的
通过对课程设计,对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。
巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,培养发现问题,分析问题和解决问题的能力。
四.设计理论依据
采样频率,采样位数的概念,采样定理;
时域信号的DFT,FFT及频谱分析;
数字滤波器的设计原理和方法。
五.设计过程(设计步骤)
1.语音信号的采集及频谱分析
用WINDOWS下的录音机,用单声道录制一段音乐或声音,时间在5S内。
然后MATLAB软件平台下,利用函数WAVREAD对语音信号进行采样,记住采样频率和采样点数。
对语音信号进行快速傅立叶变换,在一个窗口同时画出信号的时域波形图和频谱图,分析语音信号的频谱特点。
程序如下:
[y,fs,bits]=wavread('
music.wav'
[102461500]);
sound(y,fs,bits);
Y=fft(y);
plot(y);
figure
(1);
title('
语音信号的时域波形'
);
grid
figure
(2);
plot(abs(Y));
语音信号的频谱特性'
图形如下:
2:
设计数字滤波器
给出个滤波器的性能指标:
(1)低通滤波器性能指标fb=1000HZ,fc=1200HZ,As=100dB,Ap=1dB
(2)高通滤波器性能指标fb=2800HZ,fc=3000HZ,As=100dB,Ap=1dB
(3)带通滤波器性能指标fb1=1200HZ,fc1=1000HZ,fb2=2800HZ,fc2=3000HZAs=100dB,Ap=1dB
用窗函数法和双线性变换法设计以上要求的3种数字滤波器绘制个滤波器的频率响应。
IIR低通滤波器,程序如下:
Ap=1;
As=100;
fs=4000;
fb=1000;
fc=1200;
%频率预畸
wb=(fb/fs)*2*pi;
%临界频率采用角频率表示
wc=(fc/fs)*2*pi;
OmegaP=2*fs*tan(wb/2);
OmegaS=2*fs*tan(wc/2);
[n,wn]=buttord(OmegaP,OmegaS,Ap,As,'
s'
[b,a]=butter(n,wn,'
[bz,az]=bilinear(b,a,fs);
%映射为数字的
[H,W]=freqz(bz,az);
%绘出频率响应
plot(W*fs/(2*pi),abs(H));
title('
IIR低通滤波器'
IIR高通滤波器,程序如下:
fs=22050;
As=100;
fb=5000;
fc=4800;
[n,wn]=cheb1ord(OmegaP,OmegaS,Ap,As,'
[b,a]=cheby1(n,Ap,wn,'
high'
'
[bz,az]=bilinear(b,a,fs);
f=W/pi*11025;
plot(f,20*log10(abs(H)));
IIR高通滤波器'
IIR带通滤波器,程序如下:
fb1=1200;
fb2=3000;
fc1=1000;
fc2=3200;
fs=8000;
wb1=(fb1/fs)*2*pi;
wb2=(fb2/fs)*2*pi;
wc1=(fc1/fs)*2*pi;
wc2=(fc2/fs)*2*pi;
OmegaP1=2*fs*tan(wb1/2);
OmegaP2=2*fs*tan(wb2/2);
OmegaS1=2*fs*tan(wc1/2);
OmegaS2=2*fs*tan(wc2/2);
[n,wn]=cheb1ord([OmegaP1,OmegaP2],[OmegaS1,OmegaS2],Ap,As,'
bandpass'
f=fs*W/pi/2;
IIR带通滤波器'
FIR低通滤波器,程序如下:
beta=10.056;
wb=2*pi*fb/fs;
wc=2*pi*fc/fs;
width=wc-wb;
wn=(wb+wc)/2;
n=ceil(12.8/width*pi);
b=fir1(n,wn/pi,kaiser(n+1,beta));
[H,W]=freqz(b);
gridon;
FIR高通滤波器,程序如下:
[n,Wn,beta,typ]=kaiserord([fc,fb],[01],[0.0010.001],fs);
b=fir1(n,Wn,typ,kaiser(n+1,beta),'
noscale'
%f=W/pi*(fs/2);
FIR高通滤波器'
FIR带通滤波器,程序如下:
fs=12000;
fcuts=[1000,1200,3000,3200];
mags=[0,1,0];
devs=[0.01,0.0078,0.01];
[n,wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs);
n=n+rem(n,2);
b=fir1(n,wn,ftype,kaiser(n+1,beta),'
[H,W]=freqz(b,1,1024,fs);
plot(W,abs(H));
FIR带通滤波器'
各滤波器的图形如下:
3:
用滤波器对信号进行滤波
IIR低通滤波器滤波,程序如下:
x=filter(bz,az,y);
plot(x);
滤波后的波形'
gridon
X=fft(x);
plot(abs(X));
滤波后的频谱'
IIR高通滤波器滤波,程序如下:
IIR带通滤波器滤波,程序如下:
FIR低通滤波器滤波,程序如下:
FIR低通滤波器'
x=fftfilt(b,y);
FIR高通滤波器滤波,程序如下:
FIR带通滤波器滤波,程序如下:
gridon
4:
回放语音信号
对语音信号进行回放,感觉滤波前后语音信号的变化。
Sound(x,fs,bits);
五.总结与分析
通过本次课程设计,使我们对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。
同时可以看到滤波器在语音处理的重要性,学到了很多滤波器的设计方法,对MATLAB这个软件有了进一步的了解,巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。
参考文献:
1.张威编.MATLAB基础与编程入门.西安:
西安电子科技大学出版社,2005
2.邹鲲,袁俊泉,编著.MATLAB6.x信号处理.北京:
清华大学出版社,2004
3.楼天顺,李博菡,编著.基于MATLAB的系统分析与设计——信号处理.西安电子科技大学出版社