資源簡介
采用kalman濾波算法,對含噪聲的語音信號進行降噪,能夠取得較好的效果。
代碼片段和文件信息
clearclc;
[wave?Fs]=audioread(‘cheese.wav‘);?
%播放讀入的數據
sound_1=wave(:1);
%p?=?audioplayer(sound_1Fs);
%play(p);
figure(1);
subplot(321);
plot(wave);
title(‘原始語音信號‘);
xlabel(‘時間(s)‘);
ylim([-0.4?0.4]);
subplot(322);
y1=fft(wavelength(wave));
plot(abs(y1));
xlim([0length(wave)/2]);
ylim([0?400]);
title(‘原始語音信號頻譜‘);
xlabel(‘頻率(Hz)‘);
%————————————————加噪聲后的信號————————————————
%?a=0.08;%系數越小噪聲越小,濾波效果越好
%?noise=a*randn(size(sound_1));
%?wave_noise(:1)=sound_1+noise;%w;%聲道1加入噪聲信號
??
wave_noise(:1)=awgn(sound_1400);??????%?過高斯白噪聲信道,snr(a)來衡量信道的信噪比
audiowrite(‘C:\Users\Administrator\Desktop\kalman\Gnoise.wav‘wave_noiseFs);
figure(1);
subplot(323);
plot(wave_noise‘Color‘[1?0?0]);
title(‘加高斯白噪聲語音信號‘);
xlabel(‘時間(s)‘);
ylim([-0.4?0.4]);
subplot(324);
y2=fft(wave_noiselength(wave_noise));
plot(abs(y2)‘Color‘[1?0?0]);
title(‘加高斯噪語音信號頻譜‘);
xlabel(‘頻率(Hz)‘);
xlim([0length(wave)/2]);
%————————卡爾曼濾波————————
N?=?length(wave_noise);
sz?=?[N1];
z?=?wave_noise(:1);????%測量中含有噪聲
Q?=?0.01;???????? %過程激勵噪聲方差?????
%注意Q值得改變,修改代碼不要改變z的值??
R?=?22;????????? %測量方差估計,可以改變它來看不
- 上一篇:介數中心性 matlab
- 下一篇:用matlab實現DTFT 和DFT
評論
共有 條評論