语音信号的端点检测的matlab代码(子带谱熵法法)

这个是利用子带谱熵法进行语音信号端点检测的代码,给出了参考文献,有兴趣时可以看一下,发博客以作备忘!!!

function [voiceseg,vsl]=vad_1(s,fs)

%该函数采用子带谱熵法检测语音信号的端点
%输入:s :输入信号s
%      fs:输入信号的采样频率(Hz)
%      Is:设定一个前导无话段用来计算门限值(比如我们分段时预留了至少0.5s,
%          故可以设定Is=0.5,或者根据实际情况取),若分段时没预留噪声,或者
%          预留噪声段混有语音,会对该算法造成较大影响。
%输出:voiceseg 为一个数组,分别给出了起始帧结束帧和有话段帧数
%说明:1.这里我们认为语音段必须大于0.2s,噪声段必须大于0.1s
%      2.调整门限值(T1,T2)或  maxsilence,minlen或者K值可以调整端点检测效果
%参考文献:一种基于自适应谱熵的端点检测改进方法 1006—9348(2010)12—0373—03
%    20150617 by boat      
%检查人:
%基本参数和变量的设定和求取  
IS=0.3;
wlen=floor(25/1000*fs);                     % 帧长设为25ms
inc=floor(wlen/2);                          % 帧移为帧长的50%


xx1=s-mean(s);                               % 去除直流分量
x=xx1/max(abs(xx1));                          % 对幅值归一化
                         
win=hamming(wlen);                          % 设定窗函数                  
y=enframe(x,win,inc)';                      % 分帧并转置,转置后每一列为一帧
nframe=size(y,2);                           % 求帧数


NIS=fix((IS*fs-wlen)/inc +1);  
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值