clear all;clc;close all;
[x,fs] = audioread('audio_10s.wav');
frame_len = 0.02*fs; %帧长
frame_num=fix(length(x)/(frame_len)); %帧数
totaltime = length(x)/fs;%总时间长度
%时域波形
for i=1:length(x)
anytime(i)=i*totaltime/length(x);
end
subplot(511);
plot(anytime,x);
xlabel('Time/s');ylabel('Amp');
title('时域波形');
%短时能量
for i=1:frame_num
E(i)=0;
for j=(frame_len*(i-1)+1):frame_len*i
E(i)=E(i)+x(j)*x(j); %第i帧短时能量
end
anyfrequency(i)=totaltime*i/frame_num;
end
subplot(512);
plot(anyfrequency,E);
xlabel('Time/s');ylabel('E');
title('短时能量');
%短时平均幅度
for i=1:frame_num
M(i)=0;
for j=(frame_len*(i-1)+1):frame_len*i
M(i)=M(i)+abs(x(j));
end
M(i)=M(i)/frame_len;
end
subplot(513);
plot(anyfrequency,M);
xlabel('Time/s');ylabel('M');
title('短时平均幅度');
%短时过零率
for i=1:frame_num
Z(i)=0;
for j=(frame_len*(i-1)+2):frame_len*i
Z(i)=Z(i)+1/2*(abs(sign(x(j)-0.2)-sign(x(j-1))));%第i帧短时过零率
end
end
subplot(514);
plot(anyfrequency,Z);
xlabel('Time/s');ylabel('Z');
title('短时过零率');
%短时过电平率
for i=1:frame_num
L(i)=0;
for j=(frame_len*(i-1)+2):frame_len*i
% L(i)=L(i)+1/2*(abs(sign(x(j)-5)-sign(x(j-1)-5))+abs(sign(x(j)+5)-sign(x(j-1)+5)));%第i帧短时过电平率
L(i)=L(i)+1/2*(abs(sign(x(j)-5)-sign(x(j-1))));%第i帧短时过电平率
end
end
subplot(515);
plot(anyfrequency,L);
xlabel('Time/s');ylabel('L');
title('短时过电平率');
评论1