通过Matlab编程实现语音信号的时域波形图,并观察清音、浊音信号的时域特点。掌握语音信号的时域分析技术,如短时平均能量、短时平均幅度、短时平均过零率分析、短时平均自相关、短时平均幅度差。
语音信号的时域分析就是分析和提取语音信号的时域参数。时域分析通常用于最基本的参数分析及应用,此方法表示语音信号比较直观,物理意义明确,实现起来比较简单,运算量少。
1)观察浊音信号波形图
2)观察清音信号波形图
3)计算语音信号的短时能量、短时平均幅度并画图
4)计算信号的短时平均过零率并画图
5)计算语音信号的短时自相关函数并画图
6)计算语音信号的短时平均幅度差函数并画图
实验二程序
%短时能量
[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav');
x=x(:,1);
x=x';
len=length(x);
N=256;
M=128;
Fn=fix((len-N)/M+1);
y=[];
for i=1:Fn
down=1+(i-1)*M;
up=down+N-1;
temp=x(down:up);
y=[y;temp];
end
% K=100;
E=[];
for i=1:Fn
temp=sum(y(i,:).^2,2);
E=[E,temp];
end
plot(E)
%短时平均幅度差
[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav');
x=x(:,1);
x=x';
len=length(x);
N=256;
M=128;
Fn=fix((len-N)/M+1);
y=[];
for i=1:Fn
down=1+(i-1)*M;
up=down+N-1;
temp=x(down:up);
y=[y;temp];
end
% K=100;
M=[];
for i=1:Fn
temp=sum(abs(y(i,:)),2)
M=[M,temp];
end
plot(M)
%短时过零率
[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav');
x=x(:,1);
x=x';
len=length(x);
N=256;
M=128;
Fn=fix((len-N)/M+1);
y=[];
for i=1:Fn
down=1+(i-1)*M;
up=down+N-1;
temp=x(down:up);
y=[y;temp];
end
% K=100;
z=[];
for i=1:Fn
temp=sum(abs(sign(y(i,2:N))-sign(y(i,1:N-1))),2);
z=[z,temp];
end
plot(z)
%短时自相关函数
[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav');
x=x(:,1);
x=x';
len=length(x);
N=256;
M=128;
Fn=fix((len-N)/M+1);
y=[];
for i=1:Fn
down=1+(i-1)*M;
up=down+N-1;
temp=x(down:up);
y=[y;temp];
end
K=100;
for i=1:Fn
for j=0:K
R(i,j+1)=sum(y(i,1:N-j).*y(i,j+1:N),2);
end
end
plot(R(111,:));
%短时平均幅度差
[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav');
x=x(:,1);
x=x';
len=length(x);
N=256;
M=128;
Fn=fix((len-N)/M+1);
y=[];
for i=1:Fn
down=1+(i-1)*M;
up=down+N-1;
temp=x(down:up);
y=[y;temp];
end
% K=100;
for i=1:Fn
for j=0:K
F(i,j+1)=sum(abs(y(i,1:N-j)-y(i,j+1:N)),2);
end
end
plot(F(111,:));