Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-05-27
帖子: 3
声望力: 0 ![]() |
![]()
我的作业是分离一段语音中的噪声和声音,请问我如何做?我是新人,不知道从何下手,请高人指点,我的邮箱是[email protected],谢谢了
%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') 这个是我照别人写的程序,运行的时候总是出问题,而且我也不知道这个程序符合作业要求不, 还有,请问,如何区分说话的语音和噪音?可以给点指点,先谢谢了 此帖于 2009-06-03 15:06 被 no.08 编辑。 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-05-27
帖子: 3
声望力: 0 ![]() |
![]()
我们作业的另一道题是分离一段话中的语音部分和没有声音的部分,请问如何写这个程序,用matlab?
|
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
lz 首先 能否将matlab报错的整体statement贴上来 大家一同讨论一下
其次 关于语音分离 建议你阅读一下哈工大那本《语音信号处理》先掌握语音信号的特点 然后可以参考一些关于忙信号分离的知识 希望可以对你有些帮助 Thx for reading. PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。 个人观点 仅供参考 多多交流 相互学习 |
![]() |
![]() |