Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-04-23, 21:20   #1
chclucas
初级会员
 
注册日期: 2009-04-23
年龄: 36
帖子: 2
声望力: 0
chclucas 正向着好的方向发展
默认 我现在利用MATLAB做MFCC语音识别的实现,还有些问题,希望达人指点

我现在利用MATLAB做MFCC语音识别的实现,还有些问题,希望达人指点

对语音信号进行预处理有一步是进行端点检测,采用基于短时能量和短时平均过零率法,程序有点问题,请大人帮忙看看

function [ITL,ITU,IZCT,energy,zc,N1,N2]=
epdStats(signal,fs)
winSizeMs=10;   %每帧设置为10 ms
winShiftMs=10;
winSize=millitosamples(winSizeMs,fs);
signedSignal=sgn(signal);
j=1;
%计算短时能量和过零率
for i=1:winShift:length(signal)-winSize
 energy(j)=(sum((abs(signal(i:i+winSize-1)))));
 zc(j)=sum(abs(signedSignal(i+1:i+winSize)-signedSignal(i:i+winSize-1)));
 j=j+1;
end
%设置短时能量门限值
IMX=max(energy);
IMN=mean(energy(silenceRange));
I1=0.03*(IMX-IMN)+IMN;
I2=4*IMN;
ITL=min(I1,I2);
ITU=5*ITL;
N2=0;
%function[N1, N2] = getEndPoints(ITL, ITU,IZCT,energy,zc)
duration=length(energy);
backoffLength=length(1:winShift:millitosamples(backoffMs,fs)-winSize);
done=0;
%设置过零率门限值
IF=(((25*winSizeMs)/10)/10000)*fs;
IZC=mean(zc(silenceRange));
zcstd=std(zc(silenceRange));
IZCT=min(IF,IZC+2*zcstd);
%开始端点检测
for m=1:duration
 if and(energy(m)>=ITL,~done)
  for i=m:duration
   if energy(i)<ITL
    break
   else
    if energy(i)>=ITU
if ~done
      N1=i-(i==m);
      done=1;
     end
     break
    end
   end
  end
 end
end
startID=max(N1-backoffLength,1);
endID=N1;
M1=sum(zc(startID:endID)>=IZCT);
if M1>=3
 for i=startID:endID
  if zc(i)>=IZCT
   N1=i;
   break;
  end
 end
end
done=0;
%结束端点检测
for m=duration:-1:1
 if and(energy(m)>=ITL,~done)
  for i=m:-1:1
   if energy(i)<ITL
    break;
   else
    if energy(i)>=ITU
     if ~done
      N2=i+(i==m);
      done=1;
     end
     break
end
end
  end
 end
end
startID=max(1,N2);
endID=min(N2+backoffLength,length(zc));
M2=sum(zc(startID:endID)>=IZCT);
if M2>=3
 for i=max([1 startID]):endID% max added by
MPC to prevent neg indices
  if zc(i)>=IZCT
   N2=i;
   break;
  end
 end
end


多谢了
chclucas 当前离线   回复时引用此帖
旧 2009-04-24, 06:20   #2
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: 我现在利用MATLAB做MFCC语音识别的实现,还有些问题,希望达人指点

lz 能否把matlab的提示错误整句发上来 大家一起讨论一下?
silas_xue 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 09:10


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.