【语音去噪】基于matlab低通+自适应滤波去噪【含Matlab源码 352期】
一、自适应滤波简介
自适应滤波是近30年以来发展起来的关于信号处理技术的方法。它是在维纳滤波、Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法。由于它具有更强的适应性和更优的滤波性能,从而在工程实际中,尤其在信息处理技术中得到了广泛的应用。
维纳滤波器等滤波器设计方法都是建立在信号特征先验知识基础上的。遗憾的是,在实际应用中常常无法得到信号特征先验知识,在这种情况下,自适应滤波器能够得到比较好的滤波性能。当输入信号的统计特性未知,或者输入信号的统计特性变化时,自适应滤波器能够自动地迭代调节自身的滤波器参数,以满足某种准则的要求,从而实现最优滤波。
自适应滤波的研究对象是具有不确定的系统或信息过程。这里的“不确定性”是指所研究的处理信息过程及其环境的数学模型不是完全确定的。其中包含一些未知因素和随机因素。
自适应滤波一般包括3个模块:滤波结构、性能判据和自适应算法。其中,自适应滤波算法的研究是自适应信号处理中最为活跃的研究课题之一,包括线性自适应算法和非线性自适应算法。非线性自适应算法具有更强的信号处理能力,但计算比较复杂,实际应用最多的仍然是线性自适应算法。
1 自适应滤波的基本原理
2 自适应滤波算法种类
2.1 最小均方误差算法(LMS)
由Widrow和Hoff提出的最小均方误差(LMS)算法,因其具有计算量小、易于实现等优点而在实践中被广泛采用。
2.2 递推最小二乘算法(RLS)
2.3 变换域自适应滤波算法
对于强相关的信号,LMS算法的收敛性能降低,这是由于LMS算法的收敛性能依赖于输入信号自相关矩阵的特征值发散程度。输入信号自相关矩阵的特征值发散程度越小,LMS算法的收敛性能越好。经过研究发现,对输入信号作某些正交变换后,输入信号自相关矩阵的特征值发散程度会变小。于是,Dentino等1979年首先提出了变换域自适应滤波的概念,其基本思想是把时域信号转变为变换域信号,在变换域中采用自适应算法。Narayan等对变换域自适应滤波算法作了全面的总结。
变换域自适应滤波算法的一般步骤是:
2.4 仿射投影算法
2.5 其他
共轭梯度算法
基于子带分解的自适应滤波算法
基于QR分解的自适应滤波算法
其他不再具体说明。
3 自适应滤波算法性能评价
下面对各种类型的自适应滤波算法进行简单的总结分析。变步长的自适应滤波算法虽然解决了收敛速度、时变系统跟踪速度与收敛精度方面对算法调整步长因子u的矛盾,但变步长中的其它参数的选取还需实验来确定,应用起来不太方便。对RLS算法的各种改进,其目的均是保留RLS算法收敛速度快的特点而降低其计算复杂性。变换域类算法亦是想通过做某些正交变换使输入信号自相关矩阵的特征值发散程度变小。提高收敛速度。
而仿射投影算法的性能介于LMS算法和RLS算法之间。共轭梯度自适应滤波算法的提出是为了降低RLS类算法的杂性和克服某些快速RLS算法存在的数值稳定性问题。信号的子带分解能降低输入信号的自相关矩阵的特征值发散程度,从而加快自适应滤波算法的收敛速度,同时便于并行处理,带来了一定的灵活性。矩阵的QR分解具有良好的数值稳定性。
二、部分源代码
clc;
clear all;
close all;%% 产生信号源
[X,Fs] = audioread('song.wav');
s = X(:,1); %取出双通道中其中一个通道作为信号源s
audiowrite('原始音频.wav',s,Fs); %创建原始音频.wav
n = length(s);
t=(0:n-1);
figure(1);
subplot(4,1,1);
plot(t,s);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('原始音频信号');
%% 产生均值为0方差为0.1的噪声信号
v = sqrt(0.1)*randn(n,1);%% 产生AR模型的噪声
ar=[1,1/2]; %AR模型
v_ar=filter(1,ar,v);
% subplot(4,1,2);
% plot(t,v_ar);grid;
% ylabel('幅度');
% xlabel('时间');
% title('AR模型噪声信号');%% 产生MA模型的噪声 是AR模型的相关噪声
ma=[1,-0.8,0.4,-0.2]; %MA模型
v_ma=filter(ma,1,v);
subplot(4,1,2);
plot(t,v_ma);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('相关噪声信号');%% 产生期望信号
dn = s + v_ar;
audiowrite('含噪音频.wav',dn,Fs); %创建含噪音频
subplot(4,1,3);
plot(t,dn);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('含噪音频信号');%% LMS滤波算法
M = 50; %滤波器阶数M
mu = 0.0008; %滤波器的步长
[ylms,W,elms] =LMS(v_ma,dn,M,mu);%% 绘制去噪后的语音信号
subplot(4,1,4);
plot(t,elms);grid;ylim([-2 2]);
ylabel('幅度');
xlabel('时间');
title('去噪后的音频信号');
audiowrite('去噪音频.wav',elms,Fs);%保存去除噪声的音频%%
e = s-elms;%剩余噪声
figure(2);
subplot(2,1,1);
plot(t,e);grid;
ylabel('幅度');
xlabel('时间');
title('剩余噪声');
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.
【语音去噪】基于matlab低通+自适应滤波去噪【含Matlab源码 352期】相关推荐
- 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】
一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...
- 【语音去噪】低通+自适应滤波去噪【含Matlab源码 352期】
⛄一.自适应滤波简介 自适应滤波是近30年以来发展起来的关于信号处理技术的方法.它是在维纳滤波.Kalman滤波等线性滤波基础上发展起来的一种最佳滤波方法.由于它具有更强的适应性和更优的滤波性能,从而 ...
- 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】
一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】
一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...
- 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】
一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】
一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...
- 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
最新文章
- 径向基函数插值(3)二维数据的插值
- 【进程的同步和互斥,看懂这张图就够了!】
- 统信发布UOS V20 进军个人市场 生态日益完善
- 【VMware vSAN 6.6】5.5.Update Manager:vSAN硬件服务器解决方案
- 计算机网络(十六)-轮询访问介质访问控制
- php中memcache的使用,PHP中使用memcache
- 亚信安全首推MSP创新型合作伙伴业务模式 助力企业畅享云端快捷服务
- macos 字体_巧用 iTerm2 zsh oh-my-zsh 打造炫酷的 MacOS 终端环境
- undefined reference问题总结
- cmake解决opencv编译下载失败的方法
- fastdfs 原理
- 抖音前期定位养号的8点具体建议
- 高分子相分离的分子动力学模型
- WebDriver中页面滚动(scrolling)
- 软件测试---沟通技能总结
- FPGA的NIOS-||的开发入门
- java大数据开发是做什么的
- IOS FMDB 使用
- 残差(residual)
- 多数据源的配置和使用
热门文章
- 封装判断一个字符的后缀名和前缀的方法
- iOS 静态库,动态库与 Framework 浅析
- 高级程序员不写代码?
- 客户端地图拼图算法解析
- VS2008启动调试,出现“ 已经找到网站 正在等待回应”
- Python 列表和元组学习
- Atitit prgrmlan 编程语言主题列表 \0 it impttech topic\prgrmlan topic编程语言专题\AOP拦截器 表达式写法.docx \0 it impttec
- Atiitt 降低财政赤字风险性实施方案
- Atitit 数据库事务实现原理
- Atitit.复合文档的格式 标准化格式