接着上一篇双参数双门限法的语音端点检测的文章写。
上一篇用了两个参数,短时能量和短时过零率。
这一篇只用一个参数,短时能量。当然,还可以用其他特征。总之,特征个数(种类)仅限一个。
这种度量,可以是越大越相似,可以是越小越相似。这要看实际采用什么作为“距离”度量了。
为了检测出语音之间的停顿,在检测的过程中,需要设定当前的状态(语音、过渡、静音等状态)。
一边检测,一边更新当前的状态。有时候,检测出当前好像是静音状态,但其实可能仅是语音之间的停顿而已。
因此,需要“延音”,即再往前走几帧。看是否真的是停顿。比如,设置一个停顿的计数器silence_counter。
停顿一帧,silence_counter++。判断是否大于预设的,最大允许停顿的帧数。
如果是,则看是否是突发噪声等。如果还没有,那如果本来是语音段来的话,就继续保持语音段,往前再延几帧。
总之,很是麻烦。很繁琐。容易重复,也容易漏。
为了避免这种情况的发生,最好,列出状态转移表,把当前每一种状态的判别情况写清楚。
最后,画出流程图。直接写代码很头疼。