%一、读入声音 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);

MATLAB 小波降噪:使用改进阈值方法增强音频质量

原文地址: https://www.cveoy.top/t/topic/nSBp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录