1.1設計目標
(1)利用Windows下的錄音或其他軟件,采集一段語音信號,名為“add.wav”,利用MATLAB中的audioread命令對該信號進行采樣;
(2)根據語音信號的頻率圖選擇合適的單頻噪聲;
(3)根據加入的噪聲選擇合適的濾波器;
(4)利用設計好的濾波器濾除加入的高頻噪聲,得到原語音信號。
利用的是用漢明窗函數法設計出FIR低通濾波器。
(1)程序代碼:
Fs=22050;
[y,Fs] = audioread('E:shukdrightadd.wav');
N=length(y); %采樣點數
y=y(:,1);
Z=fft(y,1200);
Z=abs(Z);%取絕對值,只顯示y軸的正半軸
f=(Fs/1630)*[1:1630];
figure(1);
subplot(2,1,1);plot(y);xlabel(‘t’);title('原始信號時域波形圖');
subplot(2,1,2);plot(f(1:800),Z(1:800));xlabei(‘Hz’)
title('原始語音信號采樣后的頻譜圖');
%sound(y, Fs) %聽原始音頻
%單頻噪聲
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('噪聲信號波形');
subplot(2,1,2)
plot(f(1:800),zs1(1:800));
title('噪聲信號頻譜');
%加噪聲
x1=y+zs';
y1=fft(x1,1200);
y1=abs(y1);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪聲后的信號波形');
subplot(2,1,2);
plot(f(1:800),y1(1:800));
title('加入噪聲后的信號頻譜');
%sound(x1,Fs); %回放加入噪聲后的語音
%濾波器FIR濾波器 漢明窗
fp1=9500; % 通帶和阻帶頻率
fs1=10000;
wp1=2*pi*fp1/Fs;
ws1=2*pi*fs1/Fs;
deltaw=ws1-wp1;%過渡帶寬
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2); %為實現FIR類型1偶對稱濾波器,應確保N為奇數
windows=hamming(N);%使用哈明窗,此句可省略
wc=(ws1+wp1)/2;
b=fir1(N-1,wc/pi,windows);%用fir1函數求系統函數系數,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))); %檢驗通帶波動
As=-round(max(db(ws1/dw+1:501))); %檢驗最小阻帶衰減
figure(4);
subplot(2,1,1);plot(w/pi/2*Fs,db);axis([0,Fs/2,-200,10]);
title('幅度頻率響應');
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('相位頻率響應');
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函數進行濾波
X1=fft(h1,1200);
X1=abs(X1);
figure(5);
subplot(211);plot(h1);title('濾波后時域圖');xlabel('t');
subplot(212);plot(f(1:800),X1(1:800));title('濾波后頻譜圖');
xlabel('頻率(Hz)');
%sound(y, Fs); %聽原始音頻
%sound(x1,Fs); %回放加入噪聲后的語音
%sound(h1,Fs); %聽去噪音頻
% clear sound %%終止播放
(2)運行結果展示
N =293
Rp =0.0269
As = 54
但是太久了具體細節我也記得,有啥問題,自己摸索一下,嘿嘿嘿嘿,對了,音頻文件的位置要跟代碼寫的一樣,不然軟件會找不音頻的。
審核編輯 黃宇
-
matlab
+關注
關注
182文章
2963瀏覽量
230192 -
濾波器
+關注
關注
160文章
7749瀏覽量
177730 -
數字濾波器
+關注
關注
4文章
270瀏覽量
46988 -
語音信號
+關注
關注
3文章
70瀏覽量
22828
發布評論請先 登錄
相關推薦
評論