音频信号处理-谱减法的简单matlab实现

谱减法在频域对信号进行去噪处理,是一种较为简单粗暴的音频信号去噪方法,原理网上有很多,这里就把谱减法的matlab实现上传,以供参考。

clear all;
clc;

filedir=[];                          % 指定文件路径
filename1='正常.wav';                % 指定文件名
filename2='背景.wav';        
file1=[filedir filename1] ;         % 构成路径和文件名的字符串
file2=[filedir filename2] ;  
[x1,fs1] = audioread(file1);
[x2,fs2] = audioread(file2);
x2 = x2(1:size(x1));

x = x1;
N = length(x);       % 帧长

% 正变换
fft_y = fft(x1);
fft_n = fft(x2);

E_noise = sum(abs(fft_n)) / N;
mag_y = abs(fft_y);
phase_y = angle(fft_y);   % 保留相位信息
mag_s = mag_y - E_noise;
mag_s(mag_s<0)=0.5*abs(mag_s);
 
% 逆变换
fft_s = mag_s .* exp(1i.*phase_y);
s = ifft(fft_s);
figure
subplot(311);
plot(x1);
title('原始干净信号');
subplot(312);
plot(x2);
title('噪声信号');
subplot(313);
plot(real(s));
title('谱减法去噪后信号');
  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GodenEngineer

你的赞赏,是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值