资源简介

谱减法是处理宽带噪声较为传统和有效的方法,它运算量较小,容易实时处理,增强效果也较好。代码内实现了谱减法,并有纯净音频可以用于检验。效果良好。

资源截图

代码片段和文件信息

[hummingfs]=wavread([‘standard.wav‘]);              %纯净语音
humming=2*humming
h=size(humming);
h_Tn=(h(1)-1)/fs;    
h_t=0:1/fs:h_Tn;
figure()
plot(h_thumming);xlabel(‘t(s)‘);ylabel(‘幅度‘);title(‘纯净语音波形‘)

noise=0.1*randn(1h(1))              %噪声            
e=size(noise);  
e_Tn=(e(2)-1)/fs;    
e_t=0:1/fs:e_Tn;

noise_fft=fft(noise)  
noise_abs=abs(noise_fft)
noise_power=noise_abs.^(2)        %保存功率谱,即m=2,n=1
figure();
plot(e_tnoise);xlabel(‘t(s)‘);ylabel(‘幅度‘);title(‘噪声波形‘)


noise_humming=humming(:1)‘+ noise           %加噪语音
h_Tn=(h(1)-1)/fs;    
h_t=0:1/fs:h_Tn;

noise_humming_fft=fft(noise_humming)
noise_humming_phase=angle(noise_humming_fft);          %保存相位值
noise_humming_abs=abs(noise_humming_fft)
noise_humming_power=noise_humming_abs.^(2)              %保存功率谱
         
figure();
plot(h_tnoise_humming);xlabel(‘t(s)‘);ylabel(‘幅度‘);title(‘加噪语音波形‘)


%功率谱相减,得到纯净哼唱信号的功率谱

filter_noise_power=noise_humming_power-noise_power
filter_noise_power_true=(1+sign(filter_noise_power))*0.5.*filter_noise_power    %使相减造成的负功率为0
                                                           

%恢复相位

filter_noise_abs=filter_noise_power_true.^(1/2)                    %开根
clear i;
filter_noise_fft=filter_noise_abs.*exp(i*noise_humming_phase)      %将纯净信号的功率谱恢复相位

filter_noise=ifft(filter_noise_fft);  %处理后的fft再转化为波形文件

figure()
wavwrite(filter_noise800016‘pretreated_1‘);
[pretreated_1fs]=wavread([‘pretreated_1.wav‘]);
p=size(pretreated_1(:1)); %预处理文件的采样点数为 p
p_Tn=(p(1)-1)/fs;    %语音持续时间 p_Tn
p_t=0:1/fs:p_Tn;
xlabel(‘t(s)‘)
plot(p_tpretreated_1)
ylim([-1.5 1.5])
ylabel(‘幅值‘)
title(‘去噪后波形‘)




 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1797  2013-03-30 10:06  subspectrum_wav_improve.m

     文件     120354  2012-12-18 23:35  standard.wav

----------- ---------  ---------- -----  ----

               122151                    2


评论

共有 条评论