⛄一、小波语音降噪简介

对于噪声频谱遍布于语音信号频谱之中的宽带噪声,如果噪声振幅比大部分的语音信号振幅低,则削去低幅度成分也就削去了宽带噪声。基于这种思路,可以在频域中采取中心限幅的方法,即让带噪语音信号通过一限幅滤波器,高幅度频谱可以通过而低幅成分不允许通过,从而实现噪声抑制。需要注意的是中心削波不可避免地要损害语音质量,通常只在频域中进行,而一般不在时域中实施。
小波降噪的原理类似于中心削波法。小波降噪最初是由Donoho和Johnstone提出的, 其主要理论依据是,小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。因此,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度上是噪声。于是,采用阈值的办法可以把信号系数保留,而使大部分噪声系数减小至0。小波降噪的具体处理过程为:将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数或者完全保
留, 或者做相应的“收缩”(shrinkage) 处理。最后; 将处理后获得的小波系数用逆小波变换进行重构,得到去噪后的信号。
阈值去噪中,阈值函数体现了对超过和低于阈值的小波系数的不同处理策略,是阈值去噪中关键的一步。设w表示小波系数, T为给定阈值, sgn(*) 为符号函数, 常见的阈值函数主要有:

⛄二、部分源代码

clc;
clear;
fs=wavread(‘C:\Users\lenovo\Desktop\93317443speech-denoising\Ring01.wav’);
y=fs(40000:120000);
N=length(y);
figure(1);
subplot(111);
plot(y);
ylabel(‘幅值 A’);
title(‘原始信号’);
s=awgn(y,20,‘measured’);%加入高斯白噪声
figure(2);
plot(s);
ylabel(‘幅值 A’);
title(‘加噪信号’);
wname=‘db3’;%选db3小波基
lev=5;%5层分解
[c,l]=wavedec(s,lev,wname);
a5=appcoef(c,l,wname,lev);
d5=detcoef(c,l,5);
d4=detcoef(c,l,4);
d3=detcoef(c,l,3);
d2=detcoef(c,l,2);
d1=detcoef(c,l,1);
cD=[d1,d2,d3,d4,d5];
a=8500;b=13;
sigma=median(abs(cD))/3.647
thr1=(sigmasqrt(2(log10(N))))/(log10(2));
cD1=wthresh(d1,‘s’,thr1);
thr2=(sigmasqrt(2(log10(N))))/(log10(3));
cD2=wthresh(d2,‘s’,thr2);
thr3=(sigmasqrt(2(log10(N))))/(log10(4));
cD3=wthresh(d3,‘s’,thr3);
thr4=(sigmasqrt(2(log10(N))))/(log10(5));
cD4=wthresh(d4,‘s’,thr4);
thr5=(sigmasqrt(2(log10(N))))/(log10(6));
cD5=wthresh(d5,‘s’,thr5);
cd=[a5,cD5,cD4,cD3,cD2,cD1];
c=cd;
ys=waverec(c,l,wname);
figure(3);
plot(ys);
title(‘软阈值处理’);
thr1=(sigmasqrt(2(log10(N))))/(log10(2));
cD1=wthresh(d1,‘h’,thr1);
thr2=(sigmasqrt(2(log10(N))))/(log10(3));
cD2=wthresh(d2,‘h’,thr2);
thr3=(sigmasqrt(2(log10(N))))/(log10(4));
cD3=wthresh(d3,‘h’,thr3);
thr4=(sigmasqrt(2(log10(N))))/(log10(5));
cD4=wthresh(d4,‘h’,thr4);
thr5=(sigmasqrt(2(log10(N))))/(log10(6));
cD5=wthresh(d5,‘h’,thr5);
cd=[a5,cD5,cD4,cD3,cD2,cD1];
c=cd;
yh=waverec(c,l,wname);
figure(4);
plot(yh);
title(‘硬阈值处理’);
thr1=(sigmasqrt(2(log10(length(d1)))))/(log10(1+1));
for i=1:length(d1)
if(abs(d1(i))>=thr1)
cD1(i)=sign(d1(i))(abs(d1(i))-bthr1/(a^(abs(abs(d1(i))-thr1))+b-1));%估计第一层小波系数
else
cD1(i)=0;
end
end
thr2=(sigmasqrt(2(log10(length(d2)))))/(log10(2+1));
for i=1:length(d2)
if(abs(d2(i))>=thr2)
cD2(i)=sign(d2(i))(abs(d2(i))-bthr2/(a^(abs(abs(d2(i))-thr2))+b-1));%估计第二层小波系数
else
cD2(i)=0;
end
end
thr3=(sigmasqrt(2(log10(length(d3)))))/(log10(3+1));
for i=1:length(d3)
if(abs(d3(i))>=thr3)
cD3(i)=sign(d3(i))(abs(d3(i))-bthr3/(a^(abs(abs(d3(i))-thr3))+b-1));%估计第三层小波系数
else
cD3(i)=0;
end
end
thr4=(sigmasqrt(2(log10(length(d4)))))/(log10(4+1));
for i=1:length(d4)
if(abs(d4(i))>=thr4)
cD4(i)=sign(d4(i))(abs(d4(i))-bthr4/(a^(abs(abs(d4(i))-thr4))+b-1));%估计第四层小波系数
else
cD4(i)=0;
end
end
thr5=(sigmasqrt(2(log10(length(d5)))))/(log10(5+1));
for i=1:length(d5)
if(abs(d5(i))>=thr5)
cD5(i)=sign(d5(i))(abs(d5(i))-bthr5/(a^(abs(abs(d5(i))-thr5))+b-1));%估计第五层小波系数
else
cD5(i)=0;
end
end
%%%%开始重构
cd=[a5,cD5,cD4,cD3,cD2,cD1];
c=cd;
yhs=waverec(cd,l,wname);
figure(5);
plot(ys,‘LineWidth’,1);
ylabel(‘幅值 A’)

⛄三、运行结果






⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

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

【语音去噪】基于matlab软阈值+硬阈值+折中阈值语音去噪【含Matlab源码 530期】相关推荐

  1. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  2. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  3. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  4. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  5. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  6. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  7. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  8. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  9. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  10. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

最新文章

  1. OSChina 周一乱弹 —— 嫂子我帮你们照顾放心吧
  2. 目标检测 - Tensorflow Object Detection API
  3. Array.forEach短路就像调用break
  4. 西南这座城,脸,比北上广还有用
  5. BZOJ 2429: [HAOI2006]聪明的猴子【最小生成树】
  6. openSUSE install albertlauncher from source files
  7. Android的AlertDialog详解
  8. ubuntu将GNU nano换成vim
  9. Swin Transformer升级版来了!30亿参数,刷榜多项视觉任务
  10. linux杀死vi进程,Linux下关闭所有终端的方法(killall和kill大全)
  11. 命令行_Laravel-admin artisan 命令行脚本使用
  12. python项目开发:用RabbitMQ实现异步RPC
  13. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》
  14. DirectX11 SDK 下载地址
  15. linux中ifi_info的英文全称,linux下里面如何获取网卡的实时网速
  16. Windows10设置开启自启动任务
  17. [异常检测] Regularity Learning via Explicit Distribution Modeling for Skeletal Video Anomaly Detection
  18. 51单片机驱动ESP8266
  19. CF1622E Math Test(技巧)
  20. MODBUS-RTU数据帧格式、报文实例

热门文章

  1. 计算机与控制科学谁好,考研考哪个方向好呢?模式识别 控制理论控制工程 计算机应专业研究生 信号与信息处理的进...
  2. java大数据开发做什么你知道吗?大数据的职业发展规划
  3. EasyCVR边缘计算网关助力安防视频场景化AI落地,让智能无处不在
  4. 整理一些全志 D1 / D1s 的 DisplayEngine / LCD / HDMI 常用骚操作
  5. Python中的enumerate用法
  6. Word处理控件Aspose.Words功能演示:使用 Java 将 Word 文档转换为 Markdown
  7. 扫码支付是如何实现的?
  8. ArkID 一账通:企业级开源IDaaS/IAM平台系统
  9. 【过分】Python监控小姐姐/小哥哥微博,了解一下??
  10. 4.4 Kali与windows xp之间搭建TFTP服务