首页 > 行业资讯 > 【语音去噪】基于递归最小二乘RLS算法实现语音去噪(含信噪比)含Matlab源码

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

时间:2022-05-01 来源: 浏览:

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

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #信号处理应用matlab源码 198个

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滤波器,代替H r21=filter(b,1,r2); % FIR滤波 [ r1,r22]=add_noisedata(s,r21,fs,fs,SNR);% 产生带噪语音,信噪比为SNR  M=50; % 设置M和Lambda Lambda = 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 ’,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代码问题可私信交流。

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐