马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我的作业是分离一段语音中的噪声和声音,请问我如何做?我是新人,不知道从何下手,请高人指点,我的邮箱是no.008@163.com,谢谢了
%anlsysing speech file
[y,Fs,bits]=wavread('bill.wav');
y=y(:,2);
siglength=length(y);
Y=fft(y,siglength);
halflength=floor(siglength/2);
f=Fs*(1:siglength)/siglength;
stor=Y(1);
y(1)=0;
absY=abs(Y);
figure(1)
subplot(3,2,1);plot(f,absY);xlabel('Frequency(Hz)');grid on
axis([0,f(end)/2,0,700]);
t=(0:siglength-1)/Fs;
subplot(3,2,2);plot(t,y);xlabel('Time(s)');grid on
y1=y;
Y0=Y;
%filter
as=60;
ap=3;
wp=400/5000;
ws=1500/5000;
[n,wn]=ellipord(wp,ws,ap,as);
[b,a]=ellip(n,ap,as,wn);
fk=0:2/512:1;wk=2*pi*fk;
Hk=freqz(b,a,wk);
figure(2);
plot(fk*10,20*log10(abs(Hk)));grid on
xlabel('(kHz)');ylabel('(dB)');
axis([0,10,-80,5]);
%use the filter
y=filter(b,a,y);
Y=fft(y,siglength);
Y(1)=0;
absY=abs(Y);
figure(1);
subplot(3,2,3);plot(f,absY);xlabel('Frequency(Hz)');grid on
axis([0,f(end)/2,0,700]);
t=(0:siglength-1)/Fs;
subplot(3,2,4);plot(t,y);xlabel('Time(s)');
plot(t,y);grid on
y2=y;
%change the wav file
Y=Y0;
m=length(Y);
B=Y(1:halflength);
B=circshift(B,100);
Y=B;
B=flipdim(B,1);
if (mod(m,2)==1)
Y(halflength+1)=0;
Y=vertcat(Y,B);
else
Y=vertcat(Y,B);
end
figure(1);
absY=abs(Y);
subplot(3,2,5);plot(f,absY);xlabel('Frequency(Hz)');
grid on
axis([0,f(end)/2,0,700]);
Y(1)=stor;
y=ifft(Y);
subplot(3,2,6); xlabel('Time(s)');
plot(t,y);grid on
wavwrite(y,Fs,bits,'bill2')
这个是我照别人写的程序,运行的时候总是出问题,而且我也不知道这个程序符合作业要求不,
还有,请问,如何区分说话的语音和噪音?可以给点指点,先谢谢了 |