• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: 语音降噪  

资源简介

采用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;          %测量方差估计,可以改变它来看不

评论

共有 条评论