📄 新建 文本文档 (3).txt
字号:
[y,fs,b]=wavread('2.wav');
for m=513:1024
z(m-512)=y(m);
end
Y2=fft(z);
Y2=abs(Y2);
for m=1025:1536
z(m-1024)=y(m);
end
Y3=fft(z);
Y3=abs(Y3);
for m=1537:2048
z(m-1536)=y(m);
end
Y4=fft(z);
Y4=abs(Y4);
for m=2049:2560
z(m-2048)=y(m);
end
Y5=fft(z);
Y5=abs(Y5);
for m=1:512
noise1(m)=(Y2(m)+Y3(m)+Y4(m)+Y5(m))/4;
%noise(m)=Y2(m);
noise(m)=noise1(m)*noise1(m);
end
%hamming windows
for n=1:512
w(n)=0.54-0.46*cos(2*pi*(n-1)/511);
end
%籵riginal speech
x=1:1:(length(y)-384);
for m=1:(length(y)-384);
z(m)=y(m);
end
subplot(2,1,1);
plot(x,z);
%axis([0,27000,-0.4,0.4]);
%wavwrite(z,8000,8,'d:\cj1.wav');
%add zeros at the begining of the speech
for m=1:length(y)
result(m)=0;
if(m<=385)
z(m)=0;
end
if(m>385)
z(m)=y(m-384);
end
end
for m=0:((length(y)-512)/128)
for n=1:512
temp(n)=z(n+m*128)*w(n);
end
TEMP=fft(temp);
A1=abs(TEMP);
P=angle(TEMP);
for n=1:512
g=2;
A1(n)=A1(n)*A1(n);
A1(n)=A1(n)-g*noise(n);
if (A1(n)<0)
A1(n)=0;
end
end
for n=1:512
A1(n)=sqrt(A1(n));
end
for n=1:512
R(n)=A1(n)*cos(P(n));
I(n)=A1(n)*sin(P(n));
M(n)=R(n)+i*I(n);
end
tt=ifft(M);
tt=real(tt);
for n=1:512
if (abs(tt(n))<0.00001)
tt(n)=0;
end
end
for n=1:512
result(n+m*128)=result(n+m*128)+tt(n);
end
end
for m=385:length(y)
last(m-384)=result(m)/2;
end
subplot(2,1,2);
plot(x,last);
xy=wavread('e:\voice\wgzg.wav');
for m=2001:2512
z(m-2000)=result(m);
end
for m=5801:6312
sz(m-5800)=xy(m);
end
nz=0;
siz=0;
for m=1:512
nz=nz+z(m)^2;
siz=siz+sz(m)^2;
end
SNR2=10*log10(siz/nz)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -