语音信号的端点检测的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)';  

你可能感兴趣的:(算法,端点检测,语音,子带谱熵法,matlab)