%%三种语音增强方法的测试脚本
%******************************************************
% 在audioread函数中可以设置读入的语音信号
% 改变SNR的值即可改变加入的噪声
%
[Input, Fs] = audioread('sp01.wav');
Time = (0:1/Fs:(length(Input)-1)/Fs)';
%取单声道
Input = Input(:,1);
%SNR为加入噪声与纯净信号的信噪比(dB)
SNR=10;
[NoisyInput,Noise] = add_noise(Input,SNR);%NoisyInput为加噪信号,Noise是噪声
%% 三种语音增强方法的实现
[spectruesub_enspeech] = spectruesub(NoisyInput);
[wiener_enspeech] = wienerfilter(NoisyInput);
[Klaman_Output] = kalman(NoisyInput,Fs,Noise);
%% spectruesub绘制
%将信号长度对齐
sig_len=length(spectruesub_enspeech);
NoisyInput=NoisyInput(1:sig_len);
Input=Input(1:sig_len);
wiener_enspeech=wiener_enspeech(1:sig_len);
Klaman_Output=Klaman_Output(1:sig_len);
Time = (0:1/Fs:(sig_len-1)/Fs)';
% Time= ((0:1/Fs:(sig_len)-1)/Fs)';
figure(1)
MAX_Am(1)=max(Input);
MAX_Am(2)=max(NoisyInput);
MAX_Am(3)=max(spectruesub_enspeech);
subplot(3,1,1);
plot(Time, Input)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('原始信号')
subplot(3,1,2);
plot(Time, NoisyInput)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('加噪信号')
subplot(3,1,3);
plot(Time, spectruesub_enspeech)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('谱减法')
%% spectruesub绘制
% Time_wiener = (0:1/Fs:(length(wiener_enspeech)-1)/Fs)';
figure(2)
MAX_Am(1)=max(Input);
MAX_Am(2)=max(NoisyInput);
MAX_Am(3)=max(wiener_enspeech);
subplot(3,1,1);
plot(Time, Input)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('原始信号')
subplot(3,1,2);
plot(Time, NoisyInput)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('加噪信号')
subplot(3,1,3);
plot(Time, wiener_enspeech)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('谱减法')
%% Kalman绘制
figure(3)
MAX_Am(1)=max(Input);
MAX_Am(2)=max(NoisyInput);
MAX_Am(3)=max(Klaman_Output);
subplot(3,1,1);
plot(Time, Input)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('原始信号')
subplot(3,1,2);
plot(Time, NoisyInput)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('加噪信号')
subplot(3,1,3);
plot(Time, Klaman_Output)
ylim([-max(MAX_Am),max(MAX_Am)]);
xlabel('Time')
ylabel('Amlitude')
title('Kalman滤波')
%% 求语音降噪后的信噪比
SNR(1)=snr(Input,Input-spectruesub_enspeech);
SNR(2)=snr(Input,Input-wiener_enspeech);
SNR(3)=snr(Input,Input-Klaman_Output);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
SpeechEnhancement.rar (10个子文件)
demo4
KFrame.m 729B
stationary_noise_evaluate.m 1002B
kalman.m 2KB
spectruesub.m 2KB
SpeechEnhancement.asv 3KB
SpeechEnhancement.m 3KB
six.wav 105KB
sp01.wav 44KB
add_noise.m 325B
wienerfilter.m 2KB
共 10 条
- 1
everock
- 粉丝: 6
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页