一、原理:
1.基本概念:
2.第一级判决:
3.第二级判决:
二、双门限判决函数
1.函数调用:
x是语音信号序列,帧长为wlen,帧移位inc,NIS是前导无话段的帧数。在语音处理中为了能估算噪声的情况,在语音前部有一段前导无话段,实际中,有时可能不知道前导无语段的帧数,但可以从语音信号的波形图中估算出签到无话段的时长Is,有了IS就能计算出签到无语段的帧数NIS,公式如下所示:
2.函数源码:
function [voiceseg,vsl,SF,NF]=vad_ezm1(x,wlen,inc,NIS)
x=x(:); % 把x转换成列数组
maxsilence = 15; % 初始化
minlen = 5;
status = 0;
count = 0;
silence = 0;
y=enframe(x,wlen,inc)'; % 分帧
fn=size(y,2); % 帧数
amp=sum(y.^2); % 求取短时平均能量
zcr=zc2(y,fn); % 计算短时平均过零率
ampth=mean(amp(1:NIS)); % 计算初始无话段区间能量和过零率的平均值
zcrth=mean(zcr(1:NIS));
amp2=2*ampth; amp1=4*ampth; % 设置能量和过零率的阈值
zcr2=2*zcrth;
%开始端点检测
xn=1;
for n=1:fn
switch status
case {
0,1} % 0 = 静音, 1