概述
文章目录
- 小波变换-音频去噪
- 一、原音频加噪
- 二、sym8小波去噪
- 三、db2小波去噪
- 总结
小波变换-音频去噪
使用小波变换进行音频去噪,实验环境:Matlab
推荐课程:数字信号处理(北京交通大学 陈后金) 第八章内容
B站链接:https://www.bilibili.com/video/BV1at411Q75D?p=101
(慕课上也有)
一、原音频加噪
%读取原信号
[audio,Fs] = audioread("summer.wav");
[len,~] = size(audio);
%加噪声
n = audio + 0.03.*randn([len,1]);
%求信噪比
snr0 = snr(audio,n-audio)
%画图
subplot(211);plot(audio);
title('原信号');
subplot(212);plot(n);
title('含噪信号,信噪比=13.5231');
二、sym8小波去噪
也不一定非选这个sym8,也可以选其他的小波,matlab有很多可供选择
lev =5;
%选择"sym8"小波进行去噪
wname = 'sym8';
%选取两种阈值规则:minimaxi与sqtwolog
[dnsig2,c2,l2,threshold_Minimax] = wden(n,'minimaxi','h','mln',lev,wname);
[dnsig3,c3,l3,threshold_DJ] = wden(n,'sqtwolog','h','mln',lev,wname);
%画图
subplot(211);plot(dnsig2)
title('sym8小波去噪 -信噪比16.8500 -阈值规则Minimax ');grid on
subplot(212);plot(dnsig3);
title('sym8小波去噪 -信噪比15.2136 -阈值规则DonohoJohnstone ');grid on;
%求信噪比
sym2 = snr(audio,dnsig2-audio)
sym3 = snr(audio,dnsig3-audio)
sound(dnsig3,Fs)
%%绘制出db2的尺度函数和小波函数
Iter=20;
wname='sym8';
[s,w,t]=wavefun(wname,Iter);
subplot(211);plot(t,s);
title('db2的尺度函数');
subplot(212);plot(t,w);
t=title('db2的小波函数');
去噪效果如下:
绘制出db2的尺度函数和小波函数
三、db2小波去噪
%%绘制出db2的尺度函数和小波函数
Iter=20;
wname='db2';
[s,w,t]=wavefun(wname,Iter);
subplot(211);plot(t,s);
title('db2的尺度函数');
subplot(212);plot(t,w);
t=title('db2的小波函数');
%选择"db2"小波进行去噪
wname = 'db2';
lev = 4;
[xd1,~,~,~] = wden(n,'sqtwolog','s','mln',lev,wname);
[xd2,~,~,~] = wden(n,'minimaxi','s','mln',lev,wname);
subplot(211);plot(xd1);grid on
title('db2小波去噪 -信噪比10.9619 -阈值规则sqtwolog')
subplot(212);plot(xd2);grid on
title('db2小波去噪 -信噪比12.5183 -阈值规则minimaxi')
dbsnr1=snr(audio,xd1-audio)
dbsnr2=snr(audio,xd2-audio)
总结
- 两个实验中,随DWT级数增加(也即lev增加),信噪比SNR降低
- 随lev增加,SNR降低,去噪效果好的同时,也会损失更多原声细节
- 实验中,SNR越低,信号的去噪效果越好
-(?我感觉),SNR在此实验场景中并不是一个很好的衡量去噪能力的指标,因为按照之前所学,SNR越高,信号的质量越好,但在此实验中并不是这样。此实验中,从人耳主观听觉角度来说,SNR越低,去噪效果越好,
最后
以上就是无语玫瑰为你收集整理的Matlab小波变换-音频去噪的全部内容,希望文章能够帮你解决Matlab小波变换-音频去噪所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复