本程序为高效dtw算法程序。
程序用到了“0.1.2.3.4.5.6.7.8.9”十个语音。
程序清单说明:程序后缀为“.asv”的都为matlab的境像文件。
主程序为:DTWglcgx
dtw: 实现高效dtw算法的函数,程序中首先进行两个模板的比较,如果长度差别过大,将返回一个很大的数realmax,表示匹配失败。接下来计算xa和xb,根据两者大小的比较,将匹配区域划分为两段或三段。对每一帧分别计算出y_min和y_max,调用函数warp进行匹配。最后的结果保存在D中,而D(m)就是整个模板匹配的总累积距离。
mfcc:本函数计算了MFCC参数和一阶差分参数。标准的MFCC参数只反映了语音参数的静态特征,而人耳对语音信号的同态特征更为敏感,而这种动态特性通常用差分倒谱参数来描述。
melbankm:本函数直接计算语音信号的的MFCC参数,为语音信号工具箱voicebox中提供的函数。
enframe:本函数用于语音信号的分帧。
vad:端点检测程序。本程序应用双门限法,结合过零率和短时能量进行可靠端点检测,其中过零率用于检测清音,短时能量用于检测浊音。在开始进行端点检测之前,首先为短时能量和过零率分别确定两个门限,一个低门限和一个高门限。低门限数值较小,比较容易通过,对信号比较敏感;高门限数值比较大,信号必须达到一定强度,该门限才能被通过。低门限通过未必是语音段开始,可能是时间很短的噪声引起的。整个语音信号的端点检测分为四段:静音,过渡段,语音段,结束。程序中使用一个变量status来表示当前所处的状态。在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。在过渡段中,由于参数的数值比较小,不能确定是否处于真正的语音段,只要两个门限值都回落到低门限以下,就将当前状态恢复到静音段,如果在过渡段中两个参数中的任意一个超过高门限,就可以确信进入语音段了。当前状态处于语音段时,如果两个参数的数值降低到低门限以下,而且总的记时长度小于最短时间门限,则认为是一段噪声,继续扫描以后的语音数据,否则,就标记好结束端点,并返回。
