(1)录制一段语音信号;
(2)给语音信号加高频噪声(此处的高频噪声频率);
(3)设计低通滤波器;
(4)用设计的低通滤波器除去高频噪声。
代码如下:
clear all
clc
[x,Fs]=audioread('天.wav');
%sound(x,Fs)
X=fft(x);
T=1/Fs; %采样间隔
n=length(x); %采样点
K=0:n-1;
t=K*T;
f=K/n*Fs; %频域横坐标
figure,plot(f,abs(log(1+X)))
title('原信号频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')
f0=20000; %噪声频率
t=repmat(t',1,2);
x1=x+1.5*sin(2*pi*f0*t); %加噪声
%sound(x1,Fs)
X1=fft(x1);
figure,plot(f,abs(log(1+X1)))
title('带噪信号频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')
fp=1.15*10^4; %通带截止频率
fs=1.5*10^4; %阻带截止频率
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Rp=1;
As=30;
[N,wc]=buttord(wp,ws,Rp,As,'s'); %巴特沃斯滤波器
[B,A]=butter(N,wc,'s');
[Bz,Az]=bilinear(B,A,0.9);
[H,W]=freqz(Bz,Az);
figure,plot(W,abs(H));
title('低通滤波器幅频响应示意图');xlabel('f/10kHz'),ylabel('|H(e^j^w)|');
y=filter(Bz,Az,x1); %滤波
%sound(y,Fs)
Y=fft(y);
figure,plot(f,abs(log(1+Y)))
title('滤波后频谱'),xlabel('f/Hz'),ylabel('幅度(取对数)')
滤波后的结果如图4所示:
加入频率的噪声后播放带噪信号,可听到有一段尖锐的声音掺杂在信号当中,经低通滤波器滤波后,尖锐的声音几乎完全消失,滤波后的信号与原始语音信号几乎完全相同。