📄 新建 文本文档.txt
字号:
%在噪声环境下语音信号的增强
%语音信号为读入的声音文件
%噪声为正态随机噪声
input=wavread('sound.wav');
count=length(input);
noise=0.1*randn(1,count);
signal=input';
for i=1:count
voice(i)=signal(i)+noise(i);
end
Fv=fft(voice);
anglev=angle(Fv);
Fn=fft(noise);
power1=(abs(Fv)).^2;
power2=(abs(Fn)).^2;
power3=power1-power2;
power4=sqrt(power3);
Fs=power4.*exp(j*anglev);
sound=ifft(Fs);
n=1:count;
figure %对比纯净语音信号和带噪语音信号
subplot(2,1,1);
plot(n,signal);
title('纯净信号')
subplot(2,1,2);
plot(n,voice);
title('带噪信号')
figure %对比纯净语音信号频谱和带噪信号频谱
Fss=fft(signal);
subplot(2,1,1);
plot(n,abs(Fss));
title('纯净信号频谱')
subplot(2,1,2)
plot(n,abs(Fv));
title('带噪信号的频谱')
figure %对比纯净语音信号和输出信号
subplot(2,1,1)
plot(n,signal);
title('纯净信号')
subplot(2,1,2)
plot(n,sound);
title('输出信号')
figure %对比纯净语音信号频谱和输出语音信号频谱
subplot(2,1,1)
plot(n,abs(Fss));
title('纯净信号频谱')
subplot(2,1,2)
plot(n,abs(Fs));
title('输出信号频谱')
max_v=max(voice); %对带噪信号抽样值点进行归一化处理
re_voice=voice/max_v;
%对输出信号抽样点值进行归一化处理
max_s=max(sound);
re_sound=sound/max_s;
%读出带噪语音信号,存为'1001.wav'
wavwrite(re_voice,5500,16,'1001');
%读出处理后语音信号,存为'1002.wav'
wavwrite(re_sound,5500,16,'1002')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -