【语音去噪】基于递归最小二乘RLS算法实现语音去噪(含信噪比)含Matlab源码

网友投稿 601 2022-09-08


【语音去噪】基于递归最小二乘RLS算法实现语音去噪(含信噪比)含Matlab源码

1 简介

递推最小二乘算法在信号处理领域应用非常广泛,该算法具有强大的目标参数跟踪能力和函数收敛快等优点,随着时间的增加,最小二乘算法的矩阵维度会急剧增加,导致计算量骤增,RLS可以解决随着时间的推移,矩阵维度增加,计算量骤增的缺点;RLS的算法其本质是利用前一时刻的参数估计值和修正项来预测下一时刻的参数估计值,不需要任何的先验统计特性,通过不断的预测(Predict)和更新(Update)2个阶段来实现其时间域状态空间的参数状态方程的估计和预测更新[9],更新如图1所示。

2 部分代码

% RLS自适应语音降噪 close all;clear all; clc; filedir= []; % 设置路径filename='1.wav'; % 设置文件名fle=[filedir filename]; % 构成完整的路径和文件名% [s, fs, bits] = wavread(fle); % 读入数据文件[s, fs] = audioread(fle); % 读入数据文件s=s-mean(s); % 消除直流分量;mean求平均值;直流分量即信号的均值,因此将原始数据直接减去其均值可消去。s=s/max(abs(s)); % 幅值归一N=length(s); % 语音长度time=(0:N-1)/fs; % 设置时间刻度SNR=5; % 设置信噪比r2=randn(size(s)); % 产生随机噪声b=fir1(31,0.5); % 设计FIR滤波器,代替Hr21=filter(b,1,r2); % FIR滤波[ r1,r22]=add_noisedata(s,r21,fs,fs,SNR);% 产生带噪语音,信噪比为SNR M=50; % 设置M和LambdaLambda = 0.1; % 遗忘因子snr1=SNR_singlech(s,r1); % 计算初始信噪比% RLS滤波[y,~,e]=RLS(r2,r1,M,Lambda);output=e; % RLS滤波输出snr2=SNR_singlech(s,output); % 计算滤波后的信噪比snr=snr2-snr1;SN1=snr1; SN2=snr2; SN3=snr;fprintf('原始语音信号snr1=%5.4f 带噪语音信号snr2=%5.4f RLS滤波输出语音信号snr=%5.4f\n',snr1,snr2,snr);% wavplay(r1,fs); % 从声卡发声比较% pause(1)% wavplay(output,fs);% 作图subplot 311; plot(time,s,'k'); ylabel('幅值') ylim([-1 1 ]); title('原始语音信号');subplot 312; plot(time,r1,'k'); ylabel('幅值') ylim([-1 1 ]); title('带噪语音信号');subplot 313; plot(time,output,'k'); ylim([-1 1 ]); title('RLS滤波输出语音信号');xlabel('时间/s'); ylabel('幅值')

3 仿真结果

4 参考文献

[1]洪锋, 鲁昌华, 刘茹茹,等. 基于递推最小二乘和扩展卡尔曼滤波的开放光路红外光谱去噪[J]. 池州学院学报, 2019, 33(3):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

​​https://download.csdn.net/download/qq_59747472/85170013​​


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python生成连续正弦波(python正弦函数)
下一篇:【图像隐藏】基于 DCT算法实现彩色数字水印嵌入提取含Matlab源码(隐函数图像)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~