⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 puneng22.m

📁 这是个关于短时能量及谱熵的端点检测
💻 M
字号:
 %读入语音
[x,fs]=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=[];
Xn=[];
P=[];
H=[];
% 求能量
for k=1:F
    up=1+(k-1)*M;
    down=up+N-1;
    temp1=detx(up:down);
    Y=[Y,temp1];
    y=fft(x,256);
    Xn=[Xn,y];
    Pn=abs(y)/sum(x);
    P=[P,Pn];
    for i=1:N
    sum2=sum(Pn(i).*log2(Pn(i)));
     H=[ H,sum2];
 end
 end
amp1=-0.0022;
status = 0;
count = 0;
silence = 0;
x1 = 0; 
x2 = 0;
for n=1:F
goto = 0;
switch status
case 0, % 0 = 静音, 1 = 可能开始
  if  H(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  H(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(H);
axis([1 length(H) -0.25 0.1]);
ylabel('Energy');
line([x1 x1], [min(H),max(H)], 'Color', 'red');
line([x2 x2], [min(H),max(H)], 'Color', 'red');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -