no008 发表于 2009-6-3 15:07

求助,作业,语音信号处理

我的作业是分离一段语音中的噪声和声音,请问我如何做?我是新人,不知道从何下手,请高人指点,我的邮箱是no.008@163.com,谢谢了
%anlsysing speech file
=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();
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;
=ellipord(wp,ws,ap,as);
=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();
%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();
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();
Y(1)=stor;
y=ifft(Y);
subplot(3,2,6); xlabel('Time(s)');
plot(t,y);grid on

wavwrite(y,Fs,bits,'bill2')


这个是我照别人写的程序,运行的时候总是出问题,而且我也不知道这个程序符合作业要求不,
还有,请问,如何区分说话的语音和噪音?可以给点指点,先谢谢了

no008 发表于 2009-6-3 15:11

还有,我另外一道作业题是分离一个语音文件,把人的说话声音和没有声音的部分分开,就是提取语音部分,如何编程?
请大侠们指点迷津
谢谢了

friendchj 发表于 2009-6-3 17:13

请给出出错代码提示。
把分离后的结果播放一下听听不就可以区分语音和噪音了,呵呵
页: [1]
查看完整版本: 求助,作业,语音信号处理