基于MATLAB的语音信号时域特征分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,在矩形窗
+
k w m k
)()]
开始录音
1)短时能量
(1)加矩形窗
a=wavread('C:\Users\k01\WEI.wav'); subplot(6,1,1),plot(a);
N=32;
for i=2:6
h=linspace(1,1,2.^(i-2)*N);
En=conv(h,a.*a);
subplot(6,1,i),plot(En);
if(i==2) legend('N=32');
elseif(i==3) legend('N=64');
elseif(i==4) legend('N=128');
elseif(i==5) legend('N=256');
elseif(i==6) legend('N=512');
end
end
00.51 1.52 2.53 3.5
4x 105
-0.200.20
0.51 1.52 2.53 3.54x 105012 N=320
0.51 1.52 2.53 3.54x 105024 N=640
0.51 1.52 2.53 3.54x 10505 N=1280
0.51 1.52 2.53 3.54x 1050510 N=25600.51 1.52 2.53 3.54
x 105
01020 N=512
(2)加汉明窗
a=wavread('C:\Users\k01\WEI.wav');
subplot(6,1,1),plot(a);
N=32;
for i=2:6
h=hanning(2.^(i-2)*N);%形成一个汉明窗,长度为2.^(i-2)*N En=conv(h,a.*a);% 求短时能量函数En
subplot(6,1,i),plot(En);
if(i==2) legend('N=32');
elseif(i==3) legend('N=64');
elseif(i==4) legend('N=128');
elseif(i==5) legend('N=256');
elseif(i==6) legend('N=512');
end
end
00.51 1.52 2.53 3.5
4x 105
-0.200.20
0.51 1.52 2.53 3.54x 10500.51 N=320
0.51 1.52 2.53 3.54x 105012 N=640
0.51 1.52 2.53 3.54x 105024 N=1280
0.51 1.52 2.53 3.54x 10505 N=25600.51 1.52 2.53 3.54
x 105
0510 N=512
00.51 1.52 2.53 3.5
x 105
-0.50
0.5
3) 自相关函数
N=240
Y=WAVREAD('C:\Users\k01\WEI.wav');
x=Y(13271:13510);
x=x.*rectwin(240);
R=zeros(1,240);
for k=1:240
for n=1:240-k
R(k)=R(k)+x(n)*x(n+k);
end
end
j=1:240; plot(j,R); grid;
短时谱
1)短时谱
clear
a=wavread('C:\Users\k01\Desktop\WENWEI.wav');
subplot(2,1,1),
plot(a);title('original signal');
grid
N=256;
h=hamming(N);
for m=1:N
b(m)=a(m)*h(m)
end
y=20*log(abs(fft(b)))
subplot(2,1,2)
plot(y);title('短时谱');
grid
00.51 1.5
2 2.5
3 3.5x 105
-0.50
0.5
original signal
050100150200250300
-200-100
100
短时谱
2)语谱图
[x,fs,nbits]=wavread('C:\Users\k01\Desktop\WENWEI.wav ')
specgram(x,512,fs,100);
xlabel('时间(s)');
ylabel('频率(Hz)');
title('语谱图');
3)倒谱和复倒谱
(1)加矩形窗时的倒谱和复倒谱
clear
a=wavread('C:\Users\k01\Desktop\WENWEI.wav',[4000,4350]); N=300;
h=linspace(1,1,N);
for m=1:N
b(m)=a(m)*h(m);
end
c=cceps(b);
c=fftshift(c);
d=rceps(b);
d=fftshift(d);
subplot(2,1,1)
plot(d);title('加矩形窗时的倒谱')
subplot(2,1,2)
plot(c);title('加矩形窗时的复倒谱')