对带噪语音信号进行wiener语音增强,计算后验信噪比是负,是程序的问题,还是跟我选择的语音信号和噪声信号有关系呢?
clear all;
% 维纳滤波语音增强
[filename,pathname] = uigetfile('*.wav','请选择语音文件:');
[filename1,pathname1] = uigetfile('*.wav','请选择噪声文件:');
filepath_name = [pathname1 filename1];
[s,fs] = wavread([pathname filename]);
[x,NOISE] = add_noisem(s,filepath_name,15,fs);
SNR1=SNR_singlech(s,x); %计算先验信噪比
frameSize=256;%帧长度
L=length(s);
N=ceil(L/frameSize);%帧移
% 估计噪声功率谱
Z=zeros(1,frameSize);
z=zeros(1,frameSize);
noise_psd=0;h=15;d=2;
for ii=1:frameSize:h*frameSize
p=0;
for j=1:frameSize
z(j)=x(ii+j-1); % 一帧内数据处理
end
Z=abs(fft(z,frameSize)); % 求幅值
for n=1:frameSi