資源簡介
譜減法是處理寬帶噪聲較為傳統和有效的方法,它運算量較小,容易實時處理,增強效果也較好。代碼內實現了譜減法,并有純凈音頻可以用于檢驗。效果良好。

代碼片段和文件信息
[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
- 上一篇:ES6基礎實戰.txt
- 下一篇:個人制作的新聞管理系統源碼分享
評論
共有 條評論