matlab与信号系统》实验报告
学院:
学号:
姓名:
考核实验——语音信号采集与处理初步
一、课题要求
1.语音信号的采集
2.语音信号的频谱分析
3.设计数字滤波器和画出频率响应
4.用滤波器对信号进行滤波
5.比较滤波前后语音信号的波形及频谱
6.回放和存储语音信号
(第5、第6步我放到一起做了)
二、语音信号的采集
本段音频文件为胡夏演唱的“那些年”的前奏(采用Audition音频软件进行剪切,时长17秒)。运行matlab软件,在当前目录中打开原音频文件所在的位置,采用wavread函数对其进行采样,并用sound函数可进行试听,程序运行之后记下采样频率和采样点。
利用函数wavread对语音信号的采集的程序如下:
clear;
[y,fs,bits]=wavread('music.wav');  %x:语音数据;fs:采样频率;bits:采样点数
sound(y,fs,bits); %话音回放
程序运行之后,在工作区间中可以看到采样频率fs=44100Hz,采样点bits=16
三、语音信号的频谱分析
先画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性。语音信号的FFT频谱分析的完整程序如下:
clear;
[y,fs,bits]=wavread('music.wav');  %x:语音数据;fs:采样频率;bits:采样点数
sound(y,fs,bits); %话音回放
n = length (y) ;    %求出语音信号的长度
Y=fft(y,n);      %傅里叶变换
subplot(2,1,1);
plot(y);
title('原始信号波形');
subplot(2,1,2);
plot(abs(Y)); title('原始信号频谱');
程序结果如下图:
四、设计数字滤波器和画出频率响应
根据语音信号的特点给出有关滤波器的性能指标:
1)低通滤波器性能指标,fp=1000Hzfc=1200 Hz As=100dBAp=1dB
2)高通滤波器性能指标,fc=4800 Hzfp=5000 Hz As=100dBAp=1dB
要求学生分别用窗函数法和双线性变换法设计上面要求的两种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器;用函数butte设计IIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。
分析如下:函数fir1默认的设计滤波器的方法为窗函数法,其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。
函数butter,cheby1ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。
1IIR低通滤波器:
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s');    %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s');        %S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5);  %利用双线性变换实现频率响应S域到Z域的变换
[h,w]=freqz(num11,den11);          %根据参数求出频率响应
plot(w*8000*0.5/pi,abs(h));
title('IIR低通滤波器');
legend('butter设计');
grid;
2IIR高通滤波器:
Ft=8000;
Fp=5000;
Fs=4800;
wp1=tan(pi*Fp/Ft);%高通到低通滤波器参数转换
ws1=tan(pi*Fs/Ft);
wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=cheb1ord(wp,ws,1,100,'s'); %求模拟的低通滤波器阶数和截止频率
[b13,a13]=cheby1(n13,1,wn13,'s');  %S域的频率响应的参数
[num,den]=lp2hp(b13,a13,wn13);%S域低通参数转为高通的
[num13,den13]=bilinear(num,den,0.5); %利用双线性变换实现频率响应S域到Z域转换
[h,w]=freqz(num13,den13);
plot(w*21000*0.5/pi,abs(h));
title('IIR高通滤波器');
legend('cheby1设计');
axis([0 12000 0 1.5]);
grid;
3FIR低通滤波器:
用窗函数设计低通滤波器的程序如下:
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*Fp/Ft;
ws=2*Fs/Ft;
rp=1;
rs=100;
p=1-10.^(-rp/20); %通带阻带波纹
s=10.^(-rs/20);
fpts=[wp ws];
mag=[1 0];
dev=[p s];
[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%kaiserord求滤波器的阶数和截止频率
b21=fir1(n21,wn21,Kaiser(n21+1,beta));  %fir1设计滤波器
[h,w]=freqz(b21,1);      %短时傅里叶变换matlab程序得到频率响应
plot(w/pi,abs(h));
title('FIR低通滤波器');
grid;
4FIR高通滤波器:
高通滤波器的性能指标:fp=3500Hzfc=4000HzAs=50dBAp=1dB
(由于边界频率必须位于采样频率的中间值,此时指标略微有些改动,望老师见谅)
Ft=8001;
Fp=4000;
Fs=3500;
wp=2*Fp/Ft;