声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1233|回复: 2

[编程技巧] 求助,作业,语音信号处理

[复制链接]
发表于 2009-6-3 15:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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')


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

使用道具 举报

 楼主| 发表于 2009-6-3 15:11 | 显示全部楼层
还有,我另外一道作业题是  分离一个语音文件,把人的说话声音和没有声音的部分分开,就是提取语音部分,如何编程?
请大侠们指点迷津
谢谢了
发表于 2009-6-3 17:13 | 显示全部楼层
请给出出错代码提示。
把分离后的结果播放一下听听不就可以区分语音和噪音了,呵呵
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 10:37 , Processed in 0.051491 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表