MATLAB 小波降噪:使用改进阈值方法增强音频质量
%一、读入声音 path='D:\毕设\声音处理\声音处理\音视频文件\2022-12-05拾音器现场采集声音\三号冷床下料\三号冷床下料.wav';
%path='D:\毕设\声音处理\声音处理\音视频文件\2022-12-05拾音器现场采集声音\三号冷床下料\三号冷床下料.wav';
[Y,FS]=audioread(path); %将声音放到matlab中 info=audioinfo(path); %得到声音的格式、数位、频率等 T=1/FS; %采样时间 t=(0:length(Y)-1)*T;%时间 yz=Y(:,1);%左声道
Y=Y-mean(Y); % 消除直流分量 x=Y/max(abs(Y)); % 幅值归一化 N=length(x);
%二、小波降噪wden函数 具体参数选取 原理+结合人耳试听 %wname = 'coif5';'db2';'sym4'
lev=15;
xdDWT= wden(yz,'heursure','h','mln',lev,'db3');%硬阈值 %[dnsig4s,c4,l4,threshold_heursure] = wden(yz,'heursure','h','mln',lev,wname);
snr1=SNR_Calc(x,xdDWT); % 计算初始信噪比 %snr2=SNR_Calc(x,signal); % 计算降噪后的信噪比 %snr=snr2-snr1; fprintf('snr1=%5.4f ',snr1);
%三、绘制降噪前后的波形对比 figure(1) subplot(2,1,1) plot(t,yz) title('降噪前'); subplot(2,1,2) plot(t,xdDWT) title('降噪后');
%四、播放声音 %sound(xdDWT,FS);
%五、另存降噪后音频 str=['D:\graduation design\切头掉钢jz-','db2','-lev',num2str(lev),'.wav']; audiowrite(str,xdDWT,FS); 能用改进阈值的小波函数吗,具体怎么修改上述代码内容:可以使用改进阈值的小波函数对上述代码进行修改。改进阈值小波函数的使用方法与原始小波函数类似,只需要在调用wden函数时指定使用改进阈值的方法即可。具体修改方法如下:
1.选择合适的小波基函数和降噪级数:
wname = 'db2'; % 选择小波基函数 lev=15; % 选择降噪级数
2.调用wden函数进行降噪,指定使用改进阈值的方法:
xdDWT= wden(yz,'modwtsqtwolog','h','mln',lev,wname); % 使用改进阈值的小波函数
3.计算信噪比并输出结果:
snr1=SNR_Calc(x,yz); % 计算降噪前的信噪比 snr2=SNR_Calc(x,xdDWT); % 计算降噪后的信噪比 fprintf('snr1=%5.4f snr2=%5.4f\n',snr1,snr2);
4.绘制降噪前后的波形对比,并播放降噪后的音频:
figure(1) subplot(2,1,1) plot(t,yz) title('降噪前'); subplot(2,1,2) plot(t,xdDWT) title('降噪后'); sound(xdDWT,FS);
5.另存降噪后的音频:
str=['D:\graduation design\切头掉钢jz-',wname,'-lev',num2str(lev),'.wav']; audiowrite(str,xdDWT,FS);
原文地址: https://www.cveoy.top/t/topic/nSBp 著作权归作者所有。请勿转载和采集!