1 简介

该文描述了在Matlab中编程实现语音通信中去除噪声技术.依据输入信号在迭代过程中估计梯度矢量,更新权系数以达到最优的自适应迭代算法,采用一种期望响应和滤波输出信号之间误差的均方值最小(LMS算法)为准则的梯度最陡下降方法.讨论收敛因子μ的取值范围使降噪效果达到最优.

【信号去噪】基于LMS滤波语音去噪matlab代码_去噪

【信号去噪】基于LMS滤波语音去噪matlab代码_信噪比_02

【信号去噪】基于LMS滤波语音去噪matlab代码_信噪比_03

2 部分代码

clear all;
clc;
close  all;
warning off
filename='王铮亮 - 时间都去哪了 .wav';
[s,fs] =audioread(filename);   %wavread函数在此版本后不能用了,改用audioread
output);     %计算信噪比snr
snr=snr2-snr1;%去噪前后信噪比差
fprintf('去噪前后信噪比差=%5.4f ,加噪后信号信噪比=%5.4f ,LMS算法去噪后信噪比=%5.4f\n',snr,snr1,snr2);
mse2 = MSE(s,output);%计算LMS算法去噪后的均方差
mse1 = MSE(s,x);%计算加噪后的均方差
mse=mse2-mse1;%去噪前后均方差
fprintf('去噪前后均方差差=%5.4f ,加噪后信号均方差=%5.4f ,LMS算法去噪后均方差=%5.4f\n',mse,mse1,mse2);
psnr2 = PSNR(s,output);%计算LMS算法去噪后的峰值信噪比
psnr1 = PSNR(s,x);%计算加噪后的峰值信噪比
psnr=psnr2-psnr1;%去噪前后峰值信噪比差
fprintf('去噪前后峰值信噪比差=%5.4f ,加噪后信号峰值信噪比=%5.4f ,LMS算法去噪后峰值信噪比=%5.4f\n',psnr,psnr1,psnr2);
audioplayer(output*S,fs);pause(10);
wavwrite(output,'hehe.wav');%保存lms去噪音频
%作图
figure(1)
subplot 311; plot(time,s,'b');
ylim([-1,1]); title('原始语音信号');
subplot 312; plot(time, x,'b');
ylim([-1,1]); title('带噪语音信号');
subplot 313; plot(time, output,'b');
ylim([-1,1]); title('LMS滤波输出语音信号');
xlabel('时间/s')

3 仿真结果

【信号去噪】基于LMS滤波语音去噪matlab代码_语音信号_04

4 参考文献

[1]李曼. "在Matlab中实现基于LMS算法语音信号去噪." 电脑知识与技术 11X(2014):3.

【信号去噪】基于LMS滤波语音去噪matlab代码_方差_05