1 实验目的
通过Matlab编程实现语音信号的时域波形图,并观察清音、浊音信号的时域特点。掌握语音信号的时域分析技术,如短时平均能量、短时平均幅度、短时平均过零率分析、短时平均自相关、短时平均幅度差。
2 实验原理
语音信号的时域分析就是分析和提取语音信号的时域参数。时域分析通常用于最根本的参数分析及应用,此方法表示语音信号比较直观,物理意义明确,实现起来比较简单,运算量少。
3 实验过程
1)观察浊音信号波形图 2)观察清音信号波形图
3)计算语音信号的短时能量、短时平均幅度并画图
Enxn2(m)
m0N1Mn|xn(m)|
m0N1 4)计算信号的短时平均过零率并画图
1N1 Zn{|sgn[xn(m)]sgn[xn(m1)]|}
2m0 5)计算语音信号的短时自相关函数并画图
Nk1 Rn(k)m0xn(m)xn(mk)
6)计算语音信号的短时平均幅度差函数并画图
Nk1Fn(k)
m0|x(m)x(mk)|
nn一.短时能量
[x,fs,bits]=wavread('c:\\WINDOWS\\Media\\chimes.wav') x=x(:,1); c=x; x=x'; N=256; M=N/2; k=1:N;
w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1; y=[];
for i=1:Fn
beg=(i-1)*M+1; ed=beg+N-1; temp=x(beg:ed); temp=temp.*w; y=[y;temp]; end
En=[];k=0; for i=1:Fn x=y(i,:);
temp=sum(x.*x,2); En=[En,temp]; end
En=sum(y.*y,2); subplot(211); plot(c);
subplot(212); plot(En); xlabel('time');
ylabel('amplitude'); title('picture');
二.短时自相关函数
[x,fs,bits]=wavread('c:\\WINDOWS\\Media\\chimes.wav') x=x(:,1); x=x'; N=256; M=N/2; k=1:N;
w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1; y=[];
for i=1:Fn
beg=(i-1)*M+1; ed=beg+N-1; temp=x(beg:ed); temp=temp.*w; y=[y;temp]; end
N=256; K=128; for i=1:Fn
r=[];x=y(i,:);
for k=1:K
r(k)=sum(x(1:N-k).*x(k+1:N),2); end end plot(r);
三.短时平均过零率
[x,fs,bits]=wavread('c:\\WINDOWS\\Media\\chimes.wav') x=x(:,1); c=x; x=x'; N=256; M=N/2; k=1:N;
w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1; y=[];
for i=1:Fn
beg=(i-1)*M+1; ed=beg+N-1; temp=x(beg:ed); temp=temp.*w; y=[y;temp]; end
Zn=[]; for i=1:Fn
x=y(i,:);Zn1=[0]; for k=2:N
Z=0.5*abs(sign(x(k))-sign(x(k-1))); Zn1=Zn1+Z; end
Zn=[Zn,Zn1]; end
subplot(211); plot(c);
subplot(212); plot(Zn);
xlabel('time');
ylabel('amplitude'); title('picture');
四.短时平均幅度
[x,fs,bits]=wavread('c:\\WINDOWS\\Media\\chimes.wav') x=x(:,1); c=x; x=x'; N=256; M=N/2;
k=1:N;
w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1; y=[];
for i=1:Fn
beg=(i-1)*M+1; ed=beg+N-1; temp=x(beg:ed); temp=temp.*w; y=[y;temp]; end
En=[];k=0; for i=1:Fn x=y(i,:);
temp=sum(abs(x),2); En=[En,temp]; end
En=sum(y.*y,2); subplot(211); plot(c);
subplot(212); plot(En);
xlabel('time');
ylabel('amplitude'); title('picture');
五.短时平均幅度差函数
[x,fs,bits]=wavread('c:\\WINDOWS\\Media\\chimes.wav') x=x(:,1); x=x'; N=256; M=N/2; k=1:N;
w=0.54-0.46*cos(2*pi/N*k); Fn=fix((L-N)/M)+1; y=[];
for i=1:Fn
beg=(i-1)*M+1; ed=beg+N-1; temp=x(beg:ed); temp=temp.*w; y=[y;temp]; end
N=256; K=128; for i=1:Fn
r=[];x=y(i,:); for k=1:K
F1(k)=abs(x(M)-x(M+k)); end end
plot(F1);
因篇幅问题不能全部显示,请点此查看更多更全内容