首页 > 范文大全 > 正文

基于模板匹配的快速语音关键词检出方法

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于模板匹配的快速语音关键词检出方法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:

在缺乏训练样本的情况下对语音信号进行关键词检出,基于模板匹配的方法与传统的方法相比,仍然能够对语音进行关键词检出。但是由于模板匹配方法计算局部最小距离的方式是逐帧移动,所以计算时间长。局部最小距离的极值点通常在音素分割点附近,利用这两者的位置关系并结合插值思想,提出一种快速的模板匹配方法。该方法通过在音素分割点之间插值计算局部最小距离,能够有效地缩短计算时间。在TIMIT和CASIA语料库中进行实验,改进的方法与常规的模板匹配方法相比较,快了约2.8倍。

关键词:

关键词检出;动态时间规整;音素分割;插值

0引言

语音关键词检出(Keyword Spotting,KWS)是在一段连续语音中检测是否出现了对应的关键词的发音的过程。关键词检出一直是语音识别研究的热点,在安防监听、语音通信、话题跟踪等领域中都有重要的应用。

目前的语音关键词检出方法主要有两种[1]:一种是将所有语音都识别成文字,然后对文字进行关键词检出;另一种是基于垃圾模型或基于Lattice的关键词检出系统。这两种方法的声学模型复杂,并且训练过程需要使用具有详细标注的发音样本。以上方法在缺少训练语音样本数据的情况下,如方言、最新流行词汇,难以进行快速精确的关键词检出。语音关键词检出通常是采用隐马尔可夫模型[2](Hidden Mark Model,HMM)来实现,而基于HMM的关键词检出存在以下问题[3]:一方面,HMM模型需要大量发音样本进行训练,更精确的识别需要样本细分到音节或音素级别;另一方面,模型的稳定性弱,新加入的关键词需要重新进行训练。

针对传统方法的不足,文献[4]提出了一种基于模板匹配的关键词检出方法,该方法不需要任何训练数据和复杂的声学模型,只需要一个发音样本作为模板,通过动态时间规整(Dynamic Time Warping,DTW)[5]计算局部最小距离(Local Minimum Distance,LMD),并自动确定检出阈值。基于模板匹配的关键词检出方法在缺乏训练样本的情况下,能取得比垃圾模型更高的召回率[4]。但是,该方法在每一帧中都要进行窗口内部滑动,每一次滑动都使用DTW计算局部最小距离,而DTW是一种动态规划算法[5],动态规划的时间复杂度和空间复杂度都相对较高,因此,模板匹配方法所需的计算时间太长,故而不适于很多实时应用。

本文提出了一种快速的模板匹配方法,即采用插值方法得出音素分割点内的LMD,从而减少计算时间。在分析了局部最小距离与音素分割点的位置关系后,提出了查找潜在音素分割点的步骤,最后通过在查找到的音素分割点之间插值得出全部LMD值。实验结果显示本文提出的方法所需要的计算时间少于常规的模板匹配方法[4,6]的方法。

1基于模板匹配的关键词检出

模板匹配方法的模板可以是关键词的任意一次发音,对待检测语音的每一帧都使用DTW去计算模板同滑动窗之间的LMD,利用局部最小距离出现次数的统计特性来确定阈值。

基于模板匹配的关键词检出算法流程[4]如图1所示。首先对关键词的模板语音段和待检测的语音段提取特征。然后,在待检测语音段中逐帧移动提取滑动窗,利用DTW计算关键词特征和滑动窗特征之间的LMD。最后,用LMD各个距离的出现次数的统计特性估计检出阈值,如果待检测语音段中存在连续几帧的LMD值都低于检出阈值,就判断待检测语音包含关键词。

对同一个词的每次发音,发音长度的范围不固定。窗口(Window,W)的大小在0.5倍模板长(Mold,M)和2倍模板长之间,才能够包含该关键词(Template,T)的发音范围[4]。每一次窗口滑动都用DTW方法计算窗口同关键词特征之间的距离,从而确保找到局部最小距离。对第n 帧的局部最小距离LMD(n)采用如下公式计算:

LMD(n)=min0.5M

其中:M为模板长度,i为窗口的滑动大小,滑动范围在0.5倍模板长和2倍模板长之间。图2是每一帧与对应局部最小距离的示意图。

2快速的模板匹配方法

由于同一音素内语音段发音存在连续性[7],故滑动窗的局部最小距离的分布的波峰波谷或者关键转折点通常在语音分割处取得。图2中线段部分为音素分割点所在位置,音素分割点通常分布在局部最小距离的转折点或极值点处。

查找语音信号的音素分割点常用的特征参数有:音量幅值(Volume)、短时能量、短时过零率(Zero Cross Ratio, ZCR)和短时自相关等特征参数[8]。其中音量幅值和短时过零率是区分清音和浊音[9]最常用的两种特征。本文的音素查找结果仅需要尽可能多地覆盖音素分割点的大概位置,于是选择音量幅值和短时过零率的极值点,来查找语音信号的音素分割点[7,9]。采用如下步骤:

1)预处理。为方便计算Volume和ZCR,首先将语音信号重采样为8kHz,通过端点检测提取发音段;然后进行零点调整,并归一化幅度到[-1,1]的范围内;最后按照帧长256,帧重叠为帧长的一半,进行分帧处理。

2) 提取参数。计算各帧的Volume和ZCR,并分别提取所有帧的Volume和ZCR的极值点的位置。

3) 合并。把上一步提取到的两组极值的位置点合并为一组位置点。将这组位置点中距离太近的点合并为一个点,即对距离间隔小于一定阈值的一组点,用它们的中心点代替这组点。最后得到的位置点作为要找的音素分割点位置。

通过以上步骤,可得到音素分割点的大概位置,称这样的位置点为潜在音素分割点。

图3中横轴下部分线段所示为计算得到的潜在音素分割点位置,上半部分线段为实际音素分割点的位置,线段之间的字母是这部分发音的音素。对于潜在音素分割点密集出现的情况,可以在第3)步中缩小合并阈值,从而减少密集出现次数。

3实验结果

实验所用语料库分别为:TIMIT库和CASIA库。TIMIT 是来自美国8个不同方言地区的6300句发音,包含6000多个英文词汇[11]。CASIA库是由中国科学院录制的汉语语音合成语料库,包含4000句男播音员的发音。

将实验所用到的语音信号重新采样到8kHz,进行端点检测提取发音段,使用0.95的因子进行预加重,使用14维的Mel频标倒谱系数(Mel Frequency Cepstrum Coefficien, MFCC)作为语音特征。实验环境为Windows 7系统、CPU为3.20GHz、内存为3.75GB的计算机,在Matlab软件中运行。逐帧移动方法按照文献[4]的描述计算,插值方法分别选用样条插值和三次样条插值计算,阈值的参数c取1,连续帧的参数k取4,窗口在0.5倍模板长和2倍模板长之间内部滑动10次。

3.1关键词检出性能的评价

关键词检出的主要目标是快速准确地鉴别待检测语音句子是否存在关键词的发音,检出情况有以下四种:TP,表示包含关键词发音的句子检测结果为包含;FP,表示不包含关键词发音的句子检测结果为包含;FN,表示包含关键词发音的句子检测结果为不包含;TN,表示不包含关键词发音的句子检测结果为不包含。

基于以上四种检出情况可以定义下面三种性能指标[12]:

查准率=TP/(TP+FP)(2

召回率=TP/(TP+FN)(3

正确率=(TP+TN)/(TP+FP+FN+FN) (4

对每个关键词的查准率、召回率和精确度分别进行平均,得到平均查准率、平均召回率和平均正确率。再考虑每个句子检出所花费的时间,将每个句子的平均计算时间作为速度评价指标。采用Matlab的etime函数来计算时间(单位为s)。

3.2实验结果及分析

从TIMIT库中随机地选择10个单词发音作为关键词,分别为:word、voice、paper、home、mean、black、social、movies、greasy、water。对每个关键词从TIMIT库中随机地选择5句包含关键词发音的句子,及50句不包含关键词的句子进行实验。表1为在TIMIT库中逐帧移动、线性插值和三次样条插值三种方法的检出效果。