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文章
2961浏览量
230092 -
滤波器
+关注
关注
160文章
7720浏览量
177585 -
数字滤波器
+关注
关注
4文章
268浏览量
46976 -
语音信号
+关注
关注
3文章
70浏览量
22823
发布评论请先 登录
相关推荐
评论