MATLAB:去除音频信号噪音

MATLAB:去除音频信号噪音

实验内容:
获取一段带噪声的语音或音乐信号,输出无噪声的信号。

代码:

%读音频test,添加噪声后滤除噪声
clear;clc;
[audio,fs]=audioread('test.wav');%声音读取audio是读出数据 fs为音频文件的采样率
audio = audio(:,1); %双通道变单通道
n=length(audio);
T = 1/fs;%采样间隔
t = (0:n-1)*T;%时间轴
f = (0:n-1)/n*fs;%频率轴
%快速傅里叶变换
audio_fft=fft(audio,n)*T; 
%加噪声
tt =(1:n);
noise=0.02*cos(8000*2*pi/fs*tt');%噪声
%noise=0.01*randn(n,1);%加噪声
s_noise=fft(noise,n);
abs_noise=abs(s_noise);
figure(3);
subplot(2,1,1); plot(t,noise);   
xlabel('时间/s');ylabel('幅度');
title('噪声时域波形');  grid on;
subplot(2,1,2); 
% plot(f(1:n-1),abs_noise(1:n-1));
plot(f,abs_noise);
title('噪声功率谱');
grid on;
s=audio+noise;%加噪声
s_fft=fft(s,n); 

%设计IIR低通滤波器
rp=1;             %设置通带波纹系数
rs=50;             %设置阻带波纹系数 
Ft=7000;           %设置阻带频率
Fp=6500;           %设置通带频率
Fs=20000;           %设置抽样频率                         
wp=Fp/(Fs/2);     
ws=Ft/(Fs/2);   %求出待设计的模拟滤波器的边界频率
[N,wc]=buttord(wp,ws,rp,rs);    %低通滤波器的阶数和截止频率
[b,a]=butter(N,wc);       %S域频率响应的参数即:滤波器的传输函数
fprintf('巴特沃斯滤波器 N= %4d\n',N);  %显示滤波器阶数
figure(2);
[h,w]=freqz(b,a);%低通滤波器特性
plot(w*Fs/(2*pi),20*log10(abs(h)));xlabel('f/Hz');
axis([0 10000 -50 2]);
title('IIR低通滤波器');grid on;
z=filter(b,a,s);%使用filter函数对信号进行滤波
z_fft=fft(z);     %滤波后的信号频谱

figure(1); 
%绘出原始音频时域波
subplot(2,3,1);plot(t,audio);   
xlabel('时间/s');ylabel('幅度');
title('初始信号波形');  grid on;
 %绘出原始音频频域频谱
subplot(2,3,4); 
audiof = abs(audio_fft);
plot(f(1:(n-1)/2),audiof(1:(n-1)/2));
title('初始信号频谱');
xlabel('频率/Hz');
ylabel('幅度');
grid;
%绘出加噪音频时域波
subplot(2,3,2);plot(t,s);
title('加噪声后信号波形');xlabel('时间/s');ylabel('幅度');grid on;
%绘出加噪音频频域频谱
subplot(2,3,5);sf = abs(s_fft);
plot(f(1:n-1),sf(1:(n-1)));
xlabel('频率/Hz');ylabel('幅度');title('加噪声后信号信号频谱');grid on;
%绘出滤波音频时域波
subplot(2,3,3);plot(t,z);axis([ 0 10 -0.04 0.04]);
title('低通滤波后的信号波形');xlabel('时间/s');ylabel('幅度');grid on;
%绘出滤波音频频域波
subplot(2,3,6);zf = abs(z_fft);
plot(f(1:(n-1)/2),zf(1:(n-1)/2));
title('低通滤波后信号的频谱');xlabel('频率/Hz');ylabel('幅度');grid on;
audio_final = [audio;s;z];%原始语音,加噪语音,滤波语音的合成音频矩阵
sound(audio_final,fs); %播放语音

图形:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 26
    点赞
  • 253
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值