1.1設(shè)計(jì)目標(biāo)
(1)利用Windows下的錄音或其他軟件,采集一段語(yǔ)音信號(hào),名為“add.wav”,利用MATLAB中的audioread命令對(duì)該信號(hào)進(jìn)行采樣;
(2)根據(jù)語(yǔ)音信號(hào)的頻率圖選擇合適的單頻噪聲;
(3)根據(jù)加入的噪聲選擇合適的濾波器;
(4)利用設(shè)計(jì)好的濾波器濾除加入的高頻噪聲,得到原語(yǔ)音信號(hào)。
利用的是用漢明窗函數(shù)法設(shè)計(jì)出FIR低通濾波器。
(1)程序代碼:
Fs=22050;
[y,Fs] = audioread('E:shukdrightadd.wav');
N=length(y); %采樣點(diǎn)數(shù)
y=y(:,1);
Z=fft(y,1200);
Z=abs(Z);%取絕對(duì)值,只顯示y軸的正半軸
f=(Fs/1630)*[1:1630];
figure(1);
subplot(2,1,1);plot(y);xlabel(‘t’);title('原始信號(hào)時(shí)域波形圖');
subplot(2,1,2);plot(f(1:800),Z(1:800));xlabei(‘Hz’)
title('原始語(yǔ)音信號(hào)采樣后的頻譜圖');
%sound(y, Fs) %聽(tīng)原始音頻
%單頻噪聲
t=0:length(y)-1;
zs=0.1*cos(2*pi*10000*t/2100);
zs0=0.1*cos(2*pi*10000*t/200000000);
zs1=fft(zs,1200);
zs1=abs(zs1);
figure(2);
subplot(2,1,1)
plot(zs0)
title('噪聲信號(hào)波形');
subplot(2,1,2)
plot(f(1:800),zs1(1:800));
title('噪聲信號(hào)頻譜');
%加噪聲
x1=y+zs';
y1=fft(x1,1200);
y1=abs(y1);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪聲后的信號(hào)波形');
subplot(2,1,2);
plot(f(1:800),y1(1:800));
title('加入噪聲后的信號(hào)頻譜');
%sound(x1,Fs); %回放加入噪聲后的語(yǔ)音
%濾波器FIR濾波器 漢明窗
fp1=9500; % 通帶和阻帶頻率
fs1=10000;
wp1=2*pi*fp1/Fs;
ws1=2*pi*fs1/Fs;
deltaw=ws1-wp1;%過(guò)渡帶寬
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2); %為實(shí)現(xiàn)FIR類(lèi)型1偶對(duì)稱(chēng)濾波器,應(yīng)確保N為奇數(shù)
windows=hamming(N);%使用哈明窗,此句可省略
wc=(ws1+wp1)/2;
b=fir1(N-1,wc/pi,windows);%用fir1函數(shù)求系統(tǒng)函數(shù)系數(shù),windows可省略
[db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(1:wp1/dw+1))); %檢驗(yàn)通帶波動(dòng)
As=-round(max(db(ws1/dw+1:501))); %檢驗(yàn)最小阻帶衰減
figure(4);
subplot(2,1,1);plot(w/pi/2*Fs,db);axis([0,Fs/2,-200,10]);
title('幅度頻率響應(yīng)');
xlabel('頻率(單位:Hz)');ylabel('H(e^{jomega})');
set(gca,'XTickMode','manual','XTick',[0,fp1,fs1,15000]);
set(gca,'YTickMode','manual','YTick',[-100,-50,-3,0]);grid
subplot(2,1,2);plot(w/pi/2*Fs,pha);axis([0,Fs/2,-4,4]);
title('相位頻率響應(yīng)');
xlabel('頻率(單位:Hz)');ylabel('phi(omega)');
set(gca,'XTickMode','manual','XTick',[0,fp1,fs1,15000]);
set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid
%濾波
h1=filter(b,1,x1);% 用filter函數(shù)進(jìn)行濾波
X1=fft(h1,1200);
X1=abs(X1);
figure(5);
subplot(211);plot(h1);title('濾波后時(shí)域圖');xlabel('t');
subplot(212);plot(f(1:800),X1(1:800));title('濾波后頻譜圖');
xlabel('頻率(Hz)');
%sound(y, Fs); %聽(tīng)原始音頻
%sound(x1,Fs); %回放加入噪聲后的語(yǔ)音
%sound(h1,Fs); %聽(tīng)去噪音頻
% clear sound %%終止播放
(2)運(yùn)行結(jié)果展示
N =293
Rp =0.0269
As = 54
但是太久了具體細(xì)節(jié)我也記得,有啥問(wèn)題,自己摸索一下,嘿嘿嘿嘿,對(duì)了,音頻文件的位置要跟代碼寫(xiě)的一樣,不然軟件會(huì)找不音頻的。
審核編輯 黃宇
-
matlab
+關(guān)注
關(guān)注
181文章
2960瀏覽量
229996 -
濾波器
+關(guān)注
關(guān)注
160文章
7698瀏覽量
177405 -
數(shù)字濾波器
+關(guān)注
關(guān)注
4文章
267瀏覽量
46968 -
語(yǔ)音信號(hào)
+關(guān)注
關(guān)注
3文章
69瀏覽量
22812
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論