语音信号采集与处理初步
姓名:汪国雄(独立完成)学号:2009136225
语音信号的读入:[yfsnbit]=wavread(''天后.wav'');
语音信号的播放:wavplay(y,fs);
语音信号的存储:wavwrite(soutl,fs,''天后低通'');
滤波器的设计与分析:
1.用fir1设计的低通滤波器代码如下:
%设计FIR低通滤波器fp=1000HZ,fc1200HZ,Ap=1db,fs=2fc-fp=1400HZ(阻带截频),
%wp=fp/Fs(抽样频率)=0.023pi,ws=fs/Fs=0.032pi,
%由于As=100,这里选择Kaiser窗作为窗函数
%计算可得A=-20lg(min{&p,&s})=100,由此可求阶数M,beta=0.1102(A-8.7)=10.06
wp=0.023pi;ws=0.032pi;
tr_width=ws-wp
M=ceil((100-7.95)/tr_width/2.285)+1;
beta=10.06;
n=[0:1:M-1];
wc=(ws+wp)/2;
win=(kaiser(M,beta))'';
h=fir1((M-1),wc/pi,kaiser(M,beta));
[H,w]=freqz(h,1);
mag=abs(H);
db=20log10((mag+eps)/max(mag));
subplot(3,1,1);stem(n,win);title(''kaiserWindow'')
axis([0M-101.1]);xlabel(''n'');ylabel(''w(n)'')
subplot(3,1,2);stem(n,h);title(''ActualImpulseResponse'')
axis([0M-1-0.10.3]);xlabel(''n'');ylabel(''h(n)'')
subplot(3,1,3);plot(w/pi,db);title(''MagnitudeResponseindB'');grid;
axis([01-15010]);
xlabel(''frequency(pi)'');ylabel(''Decibels'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.023,0.032,1])
set(gca,''YTickMode'',''manual'',''YTick'',[-100,0])
低通滤波器的设计效果:
2.高通滤波器的设计与选择:
1)直接法设计的butterworth高通滤波器
%设计IIR高通滤波器fp=5000HZ,fc=4800HZ;As=100db,Ap=1db
%fs=2fc-fp=4600HZ(阻带截频),wp=fp/Fs(抽样频率)=0.113pi,
%ws=fs/Fs=0.104pi
wp=0.113pi;ws=0.104pi;rp=1;rs=100;
[N,Wn]=buttord(wp/pi,ws/pi,rp,rs);
[b,a]=butter(N,Wn,''high'');
[h1,w]=freqz(b,a,256,2);
plot(w,20log10(abs(h1)));grid;title(''High-passDF'');
2)双线性变换法设计的butterworth高通滤波器
wp=0.113pi;ws=0.104pi;rp=1;rs=35;Fs=44100;
wap=2tan(wp/2);was=2tan(ws/2);
[n,wn]=buttord(wap,was,rp,rs,''s'');
[z,p,k]=buttap(n);
[b,a]=zp2tf(z,p,k);
[bt,at]=lp2hp(b,a,wap););
[bz,az]=bilinear(bt,at,Fs);
[h,w]=freqz(bz,az,256,2);
plot(w,20log10(abs(h)));grid;
title(''High-passDF'');
3)用FIR1设计的高通滤波器:
wp=0.113pi;ws=0.104pi;
tr_width=wp-ws;
M=ceil((100-7.95)/tr_width/2.285)+1;
beta=10.06;
n=[0:1:M-1];
wc=(ws+wp)/2;
win=(kaiser(M,beta))'';
h=fir1((M-1),wc/pi,''high'',kaiser(M,beta));
[H,w]=freqz(h,1);
mag=abs(H);
db=20log10((mag+eps)/max(mag));
subplot(3,1,1);stem(n,win);title(''kaiserWindow'');
axis([0M-101.1]);xlabel(''n'');ylabel(''w(n)'')
subplot(3,1,2);stem(n,h);title(''ActualImpulseResponse'')
axis([0M-1-0.10.3]);xlabel(''n'');ylabel(''h(n)'')
subplot(3,1,3);plot(w/pi,db);title(''MagnitudeResponseindB'');grid;
axis([01-15010]);
xlabel(''frequency(pi)'');ylabel(''Decibels'')
set(gca,''XTickMode'',''manual'',''XTick'',[0,0.023,0.032,1])
set(gca,''YTickMode'',''manual'',''YTick'',[-100,0])
经过调试发现As=100db的Butterworth高通滤波器很难实现,最终选择了用Kaiser窗设计的FIR高通滤波器。
三、主程序的实现与效果
[yfsnbit]=wavread(''天后.wav'');
wavplay(y,fs);
n=length(y);
k=1:n;
f=fs/nk;
Y=fft(y,n);
figure(1);
subplot(311);
plot(k,y);
xlabel(''n'');
ylabel(''y'');grid;
title(''原始信号'');
subplot(312);
plot(f,Y);
xlabel(''Frequence(Hz)'');
ylabel(''Magnitude'');grid;
title(''原始信号幅频响应'');
ang=angle(Y);
subplot(313)
plot(f,ang);
xlabel(''Frequence(Hz)'');
ylabel(''Phase'');grid;
title(''原始信号相频响应'');
figure(2)
wp=0.023pi;ws=0.032pi;
tr_width=ws-wp
M=ceil((100-7.95)/tr_width/2.285)+1;
beta=10.06;
wc=(ws+wp)/2;
h=fir1((M-1),wc/pi,kaiser(M,beta));
soutl=fftfilt(h,y);
Soutl=fft(soutl,n);
wavplay(soutl,fs);
wavwrite(soutl,fs,''天后低通¨'');
subplot(221);
plot(k,y);
xlabel(''n'');
ylabel(''y'');grid;
title(''原始信号'');
subplot(222);
plot(f,Y);
xlabel(''Frequence(Hz)'');
ylabel(''Magnitude'');grid;
title(''原始信号幅频响应'');
subplot(223)
plot(k,soutl);
xlabel(''n'');
ylabel(''y'');grid;
title(''低通滤波后的幅频响应'');
subplot(224);
plot(f,Soutl);
xlabel(''Frequence(Hz)'');
ylabel(''Magnitude'');grid;
title(''低通滤波后的相频响应'');
figure(3)
wp=0.113pi;ws=0.104pi;
tr_width=wp-ws
M=ceil((100-7.95)/tr_width/2.285)+1;
beta=10.06;
n=[0:1:M-1];
wc=(ws+wp)/2;
hd=ideal_hp(wc,M);
w_ham=(kaiser(M))'';
h1=hd.w_ham;
south=fftfilt(h1,y);
South=fft(south,n);
wavplay(south,fs);
wavwrite(south,fs,''天后高通¨'');
subplot(221);
plot(k,y);
xlabel(''n'');
ylabel(''y'');grid;
title(''原始信号'');
subplot(222);
plot(f,Y);
xlabel(''Frequence(Hz)'');
ylabel(''Magnitude'');grid;
title(''原始信号幅频响应'');
subplot(223)
plot(k,south);
xlabel(''n'');
ylabel(''y'');grid;
title(''高通滤波后的幅频响应'');
subplot(224);
plot(f,South);
xlabel(''Frequence(Hz)'');
ylabel(''Magnitude'');grid;
title(''高通滤波后的相频响应'');
|
|