1、日番谷数字信号处理课程设计说明书广西工学院 数字信号处理 课程设计说 明 书设计题目 语音信号的处理与滤波 系 别 计算机工程系 专业班级 通信062班 学生姓名 杨翠云 学 号 200600402055 指导教师 周坚和 日 期 2009年1月2日 目录摘要3一. 设计内容3二滤波器设计原理3三设计步骤4 1语音信号的采集42.实际问题的解决53.比较8000个和16000个数据点的幅度和相位谱74.滤波器的设计及对语音信号进行滤波8四心得体会14五参考文献14摘要:本课程设计主要是对数字信号处理中所学知识在MATLAB中的综合应用,对语音信号的采样及进行频谱分析,滤波器的设计及利用滤波器对
2、信号的滤波。 装 订 线 一、设计内容: 语音信号的处理与滤波:使用声音相关函数录制3秒左右自己的声音。掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数;并解决实际发出声音落后录制动作半拍的现象。画出采样后语音信号的时域波形和频谱图。对录制的声音信号分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同。给定滤波器的性能指标,分别设计一个IIR低通与带通滤波器,并对语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的语音信号进行对比,分析语音信号的变化。二、滤波器设计原理: 滤波器,顾名思义,就是对系统的输入信号进行滤波。本设计采用Filt
3、er()函数对语音信号进行滤波。并采用IIR数字滤波器。其基本步骤(以低通数字滤波器为例):1)确定数字滤波器的性能指标:通带临界频率fp、阻带临界频率fr;通带内的最大衰减Ap;阻带内的最小衰减Ar;采样周期T; 2)确定相应的数字角频率,p=2fpT;r=2frT; 3)计算经过预畸的相应模拟低通原型的频率, ; 4)根据p和r计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s); 5)用双线性变换公式代入Ha(s),把s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。双线性变换不存在混叠问题。求出所设计的传递函数H(z);即三设计步骤1语
4、音信号的采集 MATLAB中有关声音(wave)录制、读取、播放、存储和读取的函数有wavrecord();wavread();wavwrite();sound().录制3秒左右自己的声音, 画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。程序代码如下:fs=8000;%采样频率y=wavrecord(3*fs,fs,double);%录制3秒自己的声音wavplay(y,fs);%播放录音wavwrite(y,fs,E:/音乐);%存储声音wavread(E:/音乐);%读取声音subplot(1,2,1);plot(abs(y); %画出声音采样后的时域波形gr
5、id on;title(信号的时域波形);xlabel(时间);ylabel(振幅);y1=fft(y,1024); %对信号做fs点FFT变换subplot(1,2,2);f=fs*(0:499)/1024;%采样点数plot(f,abs(y1(1:500); %画出原始语音信号的幅频响应图grid on;title(fft后信号的频谱特性);xlabel(频率);ylabel(振幅);2.实际发出声音落后录制动作半拍问题的解决 录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象。在MATLAB中先用wavread(filename,size)函数读取声音长度,然后再用wavread(
6、filename,n1 n2)函数从n1点开始读取声音,即去掉了前面的无效点。程序代码如下:size=wavread(E:/音乐,size);%读取声音长度size=24000; p=wavread(E:/音乐,2000 24000);%去除前2000个无效点 wavplay(p,8000);%播放声音 wavwrite(p,8000,E:/my);%声音的存储 wavread(E:/my);%读取声音 subplot(1,2,1) grid on; plot(abs(p) %画出去除无效点后的时域波形 title(去除无效点后的时域波形); xlabel(时间); ylabel(振幅); y
7、1=fft(p,1024); %对信号做fs点fft变换 subplot(1,2,2) grid on; fs=8000;%采样频率 f=fs*(0:499)/1024;%采样点数 plot(f,abs(y1(1:500)%绘出去除无效点后信号的幅频响应图 title(fft后声音的频谱特性); xlabel(频率); ylabel(振幅);比较去除无效点前后波形可知:其时域波形和频谱图大体一致,从其时域可看出去除无效点后的波形更贴近Y轴,更加接近实际的声音图形。3.比较8000个和16000个数据点的幅度和相位谱 程序代码如下: y=wavread(E:/my);%读取声音y2=fft(y,
8、8000);subplot(2,2,1);f1=fs*(0:499)/8000;%采样点数plot(f1,abs(y2(1:500);%绘出其幅度图grid on;title(8000点的幅度图);xlabel(频率);ylabel(振幅);subplot(2,2,2);plot(angle(y2);%绘出其相位谱grid on;title(8000点的相位谱);xlabel(频率);ylabel(相位);y3=fft(y,16000);subplot(2,2,3);f2=fs*(0:499)/16000;%采样点数plot(f2,abs(y3(1:500);%绘出其幅度图grid on;ti
9、tle(16000点的幅度图);xlabel(频率);ylabel(振幅);subplot(2,2,4);plot(angle(y3);%绘出其相位谱grid on;title(16000点的相位谱);xlabel(频率);ylabel(相位);由其幅度谱可看出:点数越多,其频率越小。其幅度与点数大致成正比。4.滤波器的设计及对语音信号进行滤波 设计:在Matlab中,使用函数butter,cheby1等函数设计IIR滤波器;由给定的性能指标将数字频率预畸为模拟滤波器频率,即w=2/Ttan(W/2). 求契比雪夫I型滤波器阶数和滤波器截止频率wn的函数:N,Wn=cheb1ord(Wp,Ws
10、,Rp,Rs)。然后求传输函数分子和分母的系数;即:num,den=cheby1(N,Rp,Wn)。最后利用巴特沃思逼近将模拟系数转换为数字系数,并用freqz(num,den)函数画出其频率响应。 滤波:采用Filter()函数对语音信号进行滤波。 给出各滤波器的性能指标:(1)低通滤波器性能指标:fb1000 Hz,fc1200 Hz,As100dB,Ap1dB。(2)高通滤波器性能指标:fc4800 Hz,fb5000 Hz As100dB,Ap1dB。(3)带通滤波器性能指标:fp11200 Hz,fp23000 Hz,fsc11000 Hz,fsc23200Hz,As100dB,Ap
11、1dB。 为了比较各种滤波器对信号滤波的效果,本设计采用IIR低通与IIR带通。程序代码如下:1) IIR低通滤波器设计:fs=7000;%采样频率Wp=1000;%通带临界频率Ws=1200;%阻带临界频率Rp=1;%阻带内的最小衰减Rs=100;%通带内的最大衰减wc=2*fs*tan(2*pi*Wp/(2*fs);%将数字频率预畸为模拟滤波器的通带最大频率wt=2*fs*tan(2*pi*Ws/(2*fs);%将数字频率预畸为模拟滤波器的阻带最小频率N,wn=cheb1ord(wc,wt,1,100,s); %求阶数N和滤波器截止频率wnB,A=cheby1(N,1,wn,low,s);
12、 % 传输分子和分母的系数num,den=bilinear(B,A,8000);%模拟转换为数字低通系数向量freqz(num,den);%求频率响应grid on;title(低通滤波器)对语音信号的滤波:y=wavread(E:/my);%读取声音y1=fft(y,1024); %对声音做fs点FFT变换fs=7000;%采样频率Wp=1000; %通带临界频率Ws=1200; %阻带临界频率Rp=1; %阻带内的最小衰减Rs=100; %通带内的最大衰减 wc=2*fs*tan(2*pi*Wp/(2*fs);%将数字频率预畸为模拟滤波器的通带最大频率wt=2*fs*tan(2*pi*Ws
13、/(2*fs);%将数字频率预畸为模拟滤波器的阻带最小频率N,wn=cheb1ord(wc,wt,1,100,s); %求出N和阻带截止频率wnB,A=cheby1(N,1,wn,low,s); % 传输分子和分母的系数 num,den=bilinear(B,A,7000); %模拟转换为数字低通系数向量y2=filter(num,den,y); %对声音滤波sound(y2,8000,16); %播放滤波后的声音wavwrite(y2,fs,E:/低通);%声音的存储subplot(1,2,1)grid onplot(abs(y2) %滤波后信号的时域波形title(低通后信号的时域波形)x
14、label(时间);ylabel(振幅);y3=fft(y2,1024); %将滤波后的声音进行fft的1024点变换subplot(1,2,2)grid on;f=fs*(0:499)/1024;plot(f,abs(y3(1:500);title(低通后信号的频谱);xlabel(频率);ylabel(振幅); 由低通后信号的频谱易看出:语音信号经过低通滤波器后,滤除了高频部分,与理论相符。2)IIR带通滤波器设计:fs=8000;Wp=1200 3000/4000;%归一化通带数字截止频率Ws=1000 3200/4000;%归一化阻带数字截止频率Rp=1;%阻带内的最小衰减Rs=100
15、;%通带内的最大衰减n,Wn=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wnb,a=butter(n,Wn);%传输分子和分母的系数freqz(b,a);%求频率响应grid on;title(带通滤波器)对语音信号的滤波:y=wavread(E:/my);%读取声音 fs=8000; Wp=1200 3000/4000;%归一化通带数字截止频率 Ws=1000 3200/4000;%归一化阻带数字截止频率 Rp=1;%阻带内的最小衰减 Rs=100;%通带内的最大衰减 n,Wn=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wn b,a=but
16、ter(n,Wn);%传输分子和分母的系数 y2=filter(b,a,y); %对声音滤波 sound(y2,8000,16) %播放滤波后的声音 wavwrite(y2,fs,E:/带通);%声音的存储 subplot(1,2,1) grid on plot(abs(y2) %滤波后信号的时域波形 title(带通后信号的时域波形); xlabel(时间); ylabel(振幅); y1=fft(y2,1024); %将滤波后的声音进行fft的1024点变换 subplot(1,2,2) grid on; f=fs*(0:499)/1024; plot(f,abs(y1(1:500); t
17、itle(带通后信号的频谱); xlabel(频率); ylabel(振幅);由带通后信号的频谱可得:经带通滤波器后,滤除了低频与高频部分,与理论相符。绘制其滤波后的相位图:y1=wavread(E:/低通);%读取声音 p1=fft(y1,1024); subplot(1,2,1) grid on; fs=7000;%采样频率 f1=fs*(0:499)/1024;%采样点数 plot(angle(p1); title(低通后信号的相位图) xlabel(频率) ylabel(相位) y2=wavread(E:/带通); p2=fft(y2,1024); subplot(1,2,2) gri
18、d on; fs=7000;%采样频率 f2=fs*(0:499)/1024;%采样点数 plot(angle(p2); title(带通后信号的相位图) xlabel(频率) ylabel(相位)四心得体会 通过本次课程设计,我对MATLAB软件和DSP开发系统作为工具有了更深刻的了解与认识。同时巩固了数字信号处理所学知识。提高了对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。对滤波器的原理和作用有了一定的了解。加强了我们动手、思考和解决问题的能力,实现了理论和实践的相互结合。但是,在此设计过程中也遇到了不少问题。不懂分析相位谱。比如怎么分析滤波器后的相位谱,滤波后的相位谱能说明什么。同时认识到自己所学知识的局限性,要真正学好还需发大量时间。五参考文献1)MATLAB在数字信号处理中的应用 薛年喜 编著 清华大学出版社2)数字信号处理教程 程佩青 编著 清华大学出版社3)数字信号处理及其MATLAB实现 赵红怡 张常年 编著 化学工业出版社4)matlab6.5及其在信号处理中的应用 王宏 编著 清华大学出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1