📄 shiyannengliang2.m
字号:
%读入语音
[x,fs,bits]=wavread('e:\语音\da.wav');
%分帧,预处理
%% 常数设置
L=length(x);
N=fix(0.02*fs);
M=fix(0.02*0.67*fs);
F=fix((L-N)/M)+1;
detx=x';
Y=[];
En=[];
%求能量
for k=1:F
up=1+(k-1)*M;
down=up+N-1;
temp1=detx(up:down);
Y=[Y,temp1];
temp2=sum(temp1.*temp1);
En=[En,temp2];
end
amp1= 0.3385;
status = 0;
count = 0;
silence = 0;
x1 = 0;
x2 = 0;
for n=1:F
goto = 0;
switch status
case 0, % 0 = 静音, 1 = 可能开始
if En(n) >amp1 % 确信进入语音段
x1 = max(n-count-1,1);
n=n+1;
status = 1;
silence = 0;
count = count + 1;
else % 静音状态
count = 0;
silence = silence+1;
end
case 1, % 2 = 语音段
if En(n) > amp1 ... % 保持在语音段
n=n+1;
count = count + 1;
status = 1;
else % 语音将结束
silence = silence+1;
status =2;
end
case 2,
break;
end
end
x2 = x1 + count ;
subplot(311)
plot(x)
axis([1 length(x) -1 1])
ylabel('Speech');
line([x1*M x1*M], [-1 1], 'Color', 'red');
line([x2*M x2*M], [-1 1], 'Color', 'red');
subplot(312)
plot(En);
axis([1 length(En) 0 max(En)])
ylabel('Energy');
line([x1 x1], [min(En),max(En)], 'Color', 'red');
line([x2 x2], [min(En),max(En)], 'Color', 'red');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -