失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 语音信号的时域分析matlab MATLAB语音信号的时域分析.docx

语音信号的时域分析matlab MATLAB语音信号的时域分析.docx

时间:2019-03-11 06:27:55

相关推荐

语音信号的时域分析matlab MATLAB语音信号的时域分析.docx

语音信号的时域与频域分析

用MATLAB实现语音信号的时域分析

1.MATLAB程序代码

(1)由麦克风采集语音数据,将采集的数据存成WAV文件(采样率为8000Hz),存在本人的文件夹中。所用程序代码为:?

clear;

closeall;Fs=8000;

y=wavrecord(5*Fs,Fs,'double');wavwrite(y,'f:\\a');

soundview(y,Fs,'name')??

读取WAV文件,显示语音信号的波形。所用程序代码为:?

x=wavread('f:\\a.wav');

figure;plot(x);

axis([0,size(x,1),-0.35,0.3]);???%坐标轴范围?

title('语音信号时域波形');

xlabel('样点数');

ylabel('幅度');

(3)读取WAV文件,计算并显示语音的短时能量(窗函数为矩形窗,帧长为20)。所用程序代码为:?

x=wavread('f:\\a.wav');??

x=double(x);

f=enframe(x,20,100);???

energy=sum(abs(f),2);??

subplot(2,2,1);plot(x);???????

axis([0,size(x,1),-0.7,0.9]);

title('语音信号时域波形');xlabel('样点数');

ylabel('幅度');subplot(2,2,2);plot(energy);????????????

title('语音信号的短时能量');??

legend('帧长LEN=20');

f=enframe(x,20,200);???

energy=sum(abs(f),2);???????

subplot(2,2,3);plot(energy);????????????

title('语音信号的短时能量');??

legend('帧长LEN=100');f=enframe(x,20,400);???energy=sum(abs(f),2);???????

subplot(2,2,4);plot(energy);??title('语音信号的短时能量');??legend('帧长LEN=200');

(4)读取WAV文件,计算并显示语音的短时过零率(窗函数为矩形窗,帧长为256,帧移为128),所用程序代码为:?

x=wavread('f:\\a.wav');????????

x=double(x);

LEN=100;INC=100;

f=enframe(x,LEN,INC);??%分帧%?计算短时过零率

z=zeros(size(f,1),1);??

difs=0.01;?????????????????????

fori=1:size(f,1)

s=f(i,:);?????????????????????

forj=1:(length(s)-1)

ifs(j)*s(j+1)<0&abs(s(j)-s(j+1))>difs;???

z(i)=z(i)+1;endendend

subplot(2,1,1);

plot(x);?????????????????

axis([0,size(x,1),-0.35,0.3]);

title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(z);???????????title('语音信号的短时过零率');xlabel('帧数');ylabel('短时过零率');

(5)读取WAV文件,当窗函数为矩形窗、帧长为20时,计算一帧浊音的短时自相关函数所用的程序代码为:?

x=wavread('f:\\a.wav');????????????

x=double(x);LEN=100;INC=100;

f=enframe(x,LEN,INC);???????????

ff=f(72,:);%选取一帧浊音信号

ff=ff'.*rectwin(length(ff));???%?计算短时自相关?

N=LEN;??????????????????????????

R=zeros(1,N);

fork=1:N

R(k)=sum(ff(k:N).*ff(1:N-k+1));

end

fork=1:N

R1(k)=R(k)/R(1);??????????????

End

subplot(2,1,1);plot(ff);??????????????

axis([0,N,-0.5,0.5])

title('加矩形窗的语音帧');xlabel('样点数');ylabel('幅度');

subplot(2,1,2);plot(R1);???????????

a

如果觉得《语音信号的时域分析matlab MATLAB语音信号的时域分析.docx》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。