一、读入声音

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 函数

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);

具体参数选取

  • wname:小波函数名称,例如 'coif5', 'db2', 'sym4'。
  • lev:分解层数,根据信号长度和噪声特性选择合适的分解层数。
  • 阈值方法:可选 'heursure' (基于 SURE 准则的阈值方法),'minimaxi' (基于 minimax 准则的阈值方法) 等。
  • 阈值类型:可选 'h' (硬阈值),'s' (软阈值) 等。

原理 + 结合人耳试听

小波降噪的基本原理是将信号分解到不同尺度的小波系数上,然后根据噪声特性和信号特征对小波系数进行阈值处理,最后将处理后的系数重构为降噪后的信号。

选择合适的参数和阈值方法能够有效降低噪声,同时最大程度地保留信号细节。建议根据实际应用场景和人耳试听结果进行参数调整。

三、绘制降噪前后的波形对比

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);

改进阈值方法

可以使用改进阈值的小波函数,例如基于 Bayes 风险的阈值选取方法、基于最小描述长度的阈值选取方法等。这些方法相对于传统硬阈值和软阈值方法,能够更好地平衡降噪效果和信号细节保留。具体使用哪种方法需要根据实际应用场景和降噪效果进行选择。

MATLAB 小波降噪:基于 WDEN 函数的音频降噪处理

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

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