| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 531 人关注过本帖
标题:标指标错误
只看楼主 加入收藏
changelz
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-9-11
收藏
 问题点数:0 回复次数:0 
标指标错误
function [x1,x2] = vad(x)

%幅度归一化到[-1,1]
x = double(x);
x = x / max(abs(x));

%常数设置
FrameLen = 256;
FrameInc = 80;

amp1 = 10;
amp2 = 2;
zcr1 = 10;
zcr2 = 5;

maxsilence = 8;  % 6*10ms  = 30ms
minlen  = 15;    % 15*10ms = 150ms
status  = 0;
count   = 0;
silence = 0;

%计算过零率
 temp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);
 temp2=enframe(x(1:length(x)),FrameLen,FrameInc);
   signs=(temp1.*temp2)<0;
   diffs=abs(temp1-temp2)>0.02;
   zcr=sum(signs.*diffs,2);

%计算短时能量
amp = sum(abs(enframe(filter([1 -0.9375], 1, x),FrameLen, FrameInc)), 2);

%调整能量门限
amp1 = min(amp1, max(amp)/4);
amp2 = min(amp2, max(amp)/8);

%开始端点检测
x1 = 0;
x2 = 0;
for n=1:length(zcr)
   goto = 0;
   switch status
   case {0,1}                   % 0 = 静音, 1 = 可能开始
      if amp(n) > amp1          % 确信进入语音段
         x1 = max(n-count-1,1);
         status  = 2;
         silence = 0;
         count   = count + 1;
      elseif amp(n) > amp2 | ... % 可能处于语音段
             zcr(n) > zcr2
         status = 1;
         count  = count + 1;
      else                       % 静音状态
         status  = 0;
         count   = 0;
      end
   case 2,                       % 2 = 语音段
      if amp(n) > amp2 | ...     % 保持在语音段
         zcr(n) > zcr2
         count = count + 1;
      else                       % 语音将结束
         silence = silence+1;
         if silence < maxsilence % 静音还不够长,尚未结束
            count  = count + 1;
         elseif count < minlen   % 语音长度太短,认为是噪声
            status  = 0;
            silence = 0;
            count   = 0;
         else                    % 语音结束
            status  = 3;
         end
      end
   case 3,
      break;
   end
end   

count = count-silence/2;
x2 = x1 + count -1;



提问:在运行语音识别的测试程序时出现标指标必须是真正的正整数或逻辑值  显示错误的是vad函数中的这一行
temp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);
想请教的是这个vad函数要怎么更改
搜索更多相关主题的帖子: count silence function double abs 
2012-09-12 16:26
快速回复:标指标错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033593 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved