【语音增强】多维谱自适应小波语音信号去噪【含Matlab源码 1972期】

news2024/10/5 18:00:11

⛄一、自适应小波语音信号去噪

1 引言
语音信号在传输过程中,容易受到环境噪声和其他语音的干扰,降低了语音通信质量,影响了语音处理系统工作。所以,语音的净化处理技术,在现代语音通信和数字音频广播系统中起到愈来愈重要的作用。小波变换具有良好的时频局部化分析特性,是处理语音这种非平稳时变信号的有效方法。但随着尺度的增大,正交小波基函数的空间分辨率愈高,其频率分辨率愈低。小波包具有随尺度增大而变宽的频谱窗口进一步分割变细的特性,能克服正交小波变换的不足,可对信号进一步分解,提高频率分辨率,是一种比多分辨分析更加精细的分解方法,具有更好的时频特性。因此,利用小波包变换去除信号中的噪声,实现更好的语音净化效果。

2 小波包变换理论
小波包变换在小波变换基础上进一步提出,可将小波变换没有细分的高频部分进一步分解,为信号提供了更精细的分析方法。对于有丰富高频分量的语音信号来说,小波包变换是理想的分析工具,克服了正交小波基的一个主要缺陷,即随着尺度的增大,相应的正交小波基函数的时间分辨率愈高,而其频率分辨率愈低。通过空间小波包分解,其实质是让信号通过高、低通滤波器,进行隔点采样,把信号逐层分解到不同频段。

小波包分解公式为
在这里插入图片描述
小波包重构公式为
在这里插入图片描述
3 自适应阈值法去噪
3.1 阈值法小波去噪

首先对被噪声污染的语音信号f(t)进行离散序列小波变换,得到带有噪声的小波系数w(j,k),其中,j=0,1,2,…,N;k=0,1,2,…,N;然后用设定的阈值λ作为门限对小波系数进行处理,对低于λ的小波系数作为由噪声引起的,仅让超过λ的那些显著的小波系数来重构原始纯净语音信号s(t)。阈值法小波去噪处理框图如图1所示。
在这里插入图片描述
图1 阈值法小波去噪处理框图
阈值法小波去噪因容易实现、计算量小,所以得到了广泛应用。Donoho和Johnstone提出的硬阈值和软阈值方法是目前最普遍的方法。硬阈值法采用式(3)的硬阈值函数进行阈值处理,软阈值法采用式(4)的软阈值函数进行阈值处理。
在这里插入图片描述
3.2 自适应阈值法
Donoho的软阈值法虽然取得了不错的效果,但其基于正交小波基。笔者采用小波包分析的方法,并对其阈值选取进行了进一步研究。由信号的奇异性理论,白噪声具有负的奇异性,其幅度和稠密度随尺度的增大而减小,而信号则相反。因此阈值的选取不能单一,应能根据噪声情况自动调节阈值大小。笔者采用自适应阈值法来克服这种缺点,即下一时刻的阈值λ(k+1)等于现在时刻的阈值λ(k)减去一个扰动项,该扰动项正比于均方误差函数的梯度值Δλ,即
在这里插入图片描述
式中,α为步长,可根据精度选择。

算法的关键时求出Δλ(k),可设一个关于观测值Y的函数
在这里插入图片描述
在这里插入图片描述
由式(10)可看出,如采用常用的硬阈值或软阈值函数,由于导数不连续甚至没有导数,无法进行自适应迭代,当然也无法得到最佳阈值。为获得最佳阈值,实现更好的去噪效果,应采用具有连续导数的阈值函数。阈值函数,即
在这里插入图片描述
这种阈值函数的好处是:当|x|非常接近阈值λ时,不会直接将小于阈值的小波系数置零,而是渐近为零;在|x|≥λ内,该函数对小波系数采取的是缓变地压缩,这样做符合对大于阈值的小波系数的处理,能较好地处理有用信号中存在的噪声分量。

⛄二、部分源代码

clear all; close all; clc;

% Audio acquisition
[file,path] = uigetfile(‘./Databases/*.wav’, ‘Select the speech files’, ‘MultiSelect’, ‘on’);
[audio_signal,fs] = audioread([path,file]);
Fs = fs; N = 1024; seqAxis = 0:1:N-1; step = 0;

audio_signal = audio_signal.'/max(abs(audio_signal));
audio_signal = cat(2,zeros(1,N),audio_signal);

% Additive noise + filtering @8KHz
noise = randn(1,length(audio_signal));
nsVar = 0.05;
noise = nsVar * noise/max(abs(noise));

Hd = mylowpass;
audio_noisy = audio_signal + noise;
audio_noisy = filter(Hd,audio_noisy);

% SNR values
Pa = bandpower(audio_signal);
Ps = bandpower(audio_noisy);
Pn = bandpower(noise);
SNR = 10*log10(Pa/Pn);

% Window choice and preparation
h = hann(N); % Hanning
%h = hamming(N); % Hamming
h = h’; weight = sum(abs(h.^2));

% Wiener Filter parameters
umax = 10; u0 = (1+4*umax/5); z = 25/(umax-1);

%% MTS: Sine Tapers + Noise estimation

m = 0:N-1; L = 5; l = 1:L;
a = sqrt(2/(N+1)).*sin((pi * l’ * (m+1))/(N+1));

figure(1); clf
set(gcf,‘Name’,‘Sine tapers’)
S_k_n = 0.0;

for currentTaper = 1:L
S_k_n = S_k_n + abs(fft(a(currentTaper,:) .* audio_noisy(1:N))).^2;
plot(a(currentTaper,:));
hold on
end


## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/13ebf78b8bfa4f27ab0b8aada51d7225.jpeg#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/98382c457d5b4f6992c8d157cef4ac10.jpeg#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/b579cc444a0041a99fc0e611a40d20ff.jpeg#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/57b7a4e0eaa5484293ce6808ccdebda3.jpeg#pic_center)

## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a

**2 参考文献**
[1]张飞.基于小波包变换的自适应阈值语音去噪净化[J].电声技术. 2009,33(10)

**3 备注**
简介此部分摘自互联网,仅供参考,若侵权,联系删除

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

特殊的转义字符—— \b 退格字符 ASCII 08

引入 我们在写 C 语言题目时,经常会碰见这样的输出 11 123 1236 123410如果用循环的话,这个加号是个大问题,如果直接用 printf("%d"),最后会多一个加号,用 printf("%d") 则前面会多一个加号。想…

Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)

一、前言 海康大华等厂家自己的客户端软件,基本上都是支持自家的设备,不支持其他家的摄像机和硬盘录像机,并不是因为技术上做不到,这些大厂要实现支持兼容其他的家的(他们家的服务端或者收费的都是支持其他家的&#…

写个rpc调用,试试自己了解多少

什么是rpc rpc即是远程过程调用,简单来说就是调用其他服务的接口像调用自己的本地方法一样,通常我们的调用的时候不需要关心调用过程和底层的通信即可实现调用其他的服务; 大概流程就是服务模块双方都会向注册中心注册自己的服务&#xff0c…

开发工具vim

一、开发工具vim vim的安装:yum install -y vim 指令:vim --version可以查看当前的版本信息,没有弹出信息就是没有安装。 装的vim是没有相关配置文件的,配置文件需要后面自己装。 之前说过,vs2019是集成软件编译…

【畅购商城】购物车模块之修改购物车以及结算

目录 购物车操作:修改 分析 接口 后端实现:更新 前端实现:修改 前端实现:全选 后端实现:删除数据 结算 跳转页面 购物车操作:修改 分析 接口 PUT http://localhost:10010/cart-service/carts 后…

python数学基础——单词统计

这个练习使用的是英文的单词统计,使用split通过单词中间的空格来做区分,在遍历的过程中通过对【字典】类型进行【字典推导式】的处理来计算每个单词出现的频次。但是由于过程中我们通过re的正则表达式来替换掉了很多的符号,并没有替换成空&am…

【网页设计】web前端期末大作业html+css

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Day12--自定义组件-渲染my-search组件的基本结构

1.自定义搜索组件 我的操作: 1》在uni_modules中右键新建uni_modules插件: 2》看看效果图: ************************************************************************************************************** 2.在分类页面的 UI 结构中&…

工作中常用的设计模式--策略模式

一般做业务开发,不太容易有大量使用设计模式的场景。这里总结一下在业务开发中使用较为频繁的设计模式。当然语言为Java,基于Spring框架。 1 策略模式(Strategy Pattern) 一个类的行为或方法,在运行时可以根据条件的不同,有不同的…

verilog练习——基础语法

目录 基础语法 VL1 四选一多路器 VL2 异步复位的串联T触发器 VL3 奇偶校验 VL4 移位运算与乘法 VL5 位拆分与运算 VL6 多功能数据处理器 VL7 求两个数的差值 VL8 使用generate…for语句简化代码 VL9 使用子模块实现三输入数的大小比较 VL10 使用函数实现数据大小端转…

数据结构题目收录(二十五)

1、排序趟数与序列的原始状态无关的排序方法是()。 Ⅰ、直接插入排序 Ⅱ、简单选择排序 Ⅲ、冒泡排序 Ⅳ、基数排序 A:Ⅰ、ⅢB:Ⅰ、Ⅱ、ⅣC:Ⅰ、Ⅱ、ⅢD:Ⅰ、Ⅳ 解析 交换类的排序,其趟数和…

GUI编程--PyQt5--QDiaglog

文章目录QDialogQFontDialogQColorDialogQFileDialogQInputDialogQDialog 对话框基类,继承QWidget;用于短期任务,分为模态、非模态 模态,阻塞在当前窗口;分为应用程序级别&窗口级别(仅阻塞关联的窗口&…

关于使用鼠标时间mouseMove拖拽元素及元素抖动的解决方案

最近在做一个画布相关的项目时有一个场景是移动画布,最先开始想到的是拖拽事件,但是用户希望元素是实时的变化,所以决定使用mouseMove事件来做。 思路 通过mouseDown事件确定鼠标按下的位置根据mouseMove事件来计算出鼠标相对初始状态的横向…

MySQL锁杂谈

【说明】 1.MySQL版本5.7.37 2.事务隔离级别 REPEATABLE-READ 3.表结构 Create Table: CREATE TABLE isolation_innodb (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,money int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4…

jsp库存管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 库存管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发,数据库为Mysql,使用ja…

VMware Cloud Director数据库操作

VMware Cloud Director 是一个云服务平台,以自助服务模式提供安全、隔离、弹性的虚拟数据中心计算、网络、存储和安全。在NFV整个架构中属于VIM层,与NFVI层(对VMware来说即vSphere虚拟化环境)对接获取虚拟化资源并提供给租户。 NF…

服务访问质量(QoS)——QoS技术概述与配置

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.QoS技术概述 1.QoS的应用需求 ①网络拥塞的影响&#xff1a…

【Linux】项目自动化构建工具:make/Makefile的使用

文章目录一、背景1、make和makefile是什么?2、为什么要使用make和makefile?二、原理1、使用make和makefile2、依赖关系和依赖方法3、具体原理4、项目清理一、背景 1、make和makefile是什么? make是一个命令,是一个解释makefile中指令的命令…

Linux项目:自主web服务器

文章目录项目描述Web与 http 发展史DNSURI URL URNHTTP 概述项目纲要项目架构套接字的封装HTTP服务启动日志信息与工具类请求、响应类读取请求读取请求行读取请求报头分析请求行分析请求报头读取正文构建响应预处理返回静态网页CGI机制CGI机制的基本概念CGI函数的实现子CGI程序…

【点云处理】点云法向量估计及其加速(4)

上篇文章【点云处理】点云法向量估计及其加速(3)介绍了如何使用pcl提供的gpu版本法向量计算接口对点云发向量计算进行加速。不足之处在于点云k近邻查找依然比较耗时,成为影响整体计算性能的瓶颈。这篇文章就如何优化点云K近邻查找效率进行实验。上一篇文章的示例代码…