基于网格的语音关键词检索算法改进
肖熙 , 王竞千    
清华大学 电子工程系, 北京 100084
摘要:针对多候选汉语音节网格语音关键词检索任务,在Gauss混合模型以及多候选识别算法方面进行了研究改进。首先探讨了Gauss混合模型的不同简化策略并用实验进行了验证, 证明了全协方差矩阵在识别性能上的优越性; 随后对经典的多候选令牌传递算法做出了针对汉语特点的改进。实验表明这2方面的研究不仅提高了以音节作为输出的语音识别引擎的单候选识别效果, 也大幅提高了多候选的识别性能。最后搭建了一个基于多候选网格的语音关键词检索系统, 在该系统中验证了上述改进的效果。
关键词语音关键词检索    多候选网格    Gauss混合模型    CUDA    三音子模型    
Improved lattice-based speech keyword spotting algorithm
XIAO Xi , WANG Jingqian    
Department of Electronic Engineer, Tsinghua University, Beijing 100084, China
Abstract:An improved lattice-based speech keyword spotting system was developed from the Gaussian mixture model and an improved N-best speech recognition algorithm. First, tests were used to evaluate different simplified structures of Gaussian mixture models. Then, an N-best token passing algorithm was developed from the classic token passing algorithm using some unique pronunciation rules for the Chinese language. These two modifications improve the performance of both the 1-best and N-best speech recognition candidates. Finally, a key word spotting system was developed based on an N-best lattice to show the effectiveness of these improvements.
Key words: speech keyword spotting    multi-candidate lattice    Gaussian mixture model    compute unified device architecture (CUDA)    triphone model    

近年来互联网与多媒体技术快速发展,各种搜索引擎和相应搜索技术纷纷出现,大量的文本信息能够被有效地索引和查询,从而被更好地理解和使用,但基于文本内容的检索技术对于包含语音等的多媒体数据仍不能进行较好的理解。语音检索技术的出现,弥补了基于文本内容的检索技术的不足。本文针对语音数据的关键词检索系统(keyword spotting system,KWS)所需要的关键技术进行了研究,力图从改善模型精度和搜索算法等方面提高语音检索的性能。

目前,隐Markov模型(HMM)和多Gauss混合模型(GMM)[1]被普遍地用作描述语音的概率模型。即使深层神经网络(DNN)技术[2,3]被广泛应用,各种基于HMM-GMM架构的改进方法仍被研究者所关注。例如,文[4 ]采用了鉴别训练的方法对HMM的状态进行训练,得到了比传统的最大似然估计(MLE)更好的结果; 文[5 ]提出了子空间GMM,其中HMM向量通过一次全局映射映射到GMM向量空间,从而改进了识别性能。文[6 ]仍然采用了传统的HMM-GMM结构,但采用了加速分量学习(boosted mixture learning)的方法训练每个GMM的分量,实验表明这种方法对小尺寸模型的识别性能的提升最为明显。

针对语音检索系统本身,传统的策略[7 ]是给出代表关键词的关键词模型和代表所有其他语音的填料(filler)模型,并给出一套打分系统衡量某部分语音与每个模型的接近程度。但随着对检索实时性的要求日益重要,基于网格(lattice)的语音检索系统[8 ]正逐渐成为主流。在该系统中,先通过多候选语音识别算法产生多候选的音节网格,此后的每次语音检索都在网格上进行。这样的检索只涉及到简单的有调或是无调的音节匹配,而不涉及语音特征和似然值的计算,因此大幅减少了检索计算所需的时间。

例如文[9 ]针对汉语音节搭建了识别和检索两阶段的拼音图,并采用最大似然线性回归(MLLR)的自适应策略提升识别性能。

在HMM状态声学特征的概率建模中,传统上使用只保留对角元的GMM,即每个混合分量(mixture)的协方差阵的非对角元素全部为零。若使用全协方差阵作为概率建模,由于增加了参数的数量,模型的拟合能力大幅增强,从而有可能提高识别效果。为了解决全协方差阵运算量的问题,本文提出了共享协方差阵的思路,即一个GMM内部的不同混合分量使用同样的协方差阵。此方法有别于为了减少状态数量而常常使用的语音状态模型的共享,因为本文方法中的共享是状态内部不同GMM的混合分量间部分模型参数的共享。本文通过实验测试了这类共享模型的性能,并与全协方差阵和对角阵模型的进行对比。此外本文利用了CUDA (compute unified device architecture)加速技术解决改进后运算量增大的问题。

为了提高多候选网格的质量,本文针对汉语拼音的特殊性改进了经典的多候选令牌传递(token passing)算法[10 ],并证明了该改进能够大幅降低多候选错误率。为了量化该改进对于关键词检索的效果,本文搭建了一个不使用语言模型的以汉语拼音作为语音关键词的检索系统,并利用多候选字识别结果构建音节网格,并在网格上检索语音关键词,用检索的漏检率和虚警率衡量多候选词识别算法的性能。

1 三音子语音识别模型

在连续语音识别中,对于一个汉语音节的建模,本文使用了图 1中的三音子模型[11 ],与只建模声母—韵母的双音子模型相比,三音子模型考虑了上下文对当前字发音产生的影响,更好地反映了连续语音的物理过程。

该模型包含持续时长为2个状态的声母和持续时长为4个状态的韵母。声母的第1个状态可以选择协同发音状态I0C或非协同发音状态I0; 第2个状态只能为非协同发音状态,称之为I1。类似地,韵母的前2个状态只能为F0和F1这2个非协同发音状态,而韵母的后2个状态可以从协同发音状态F2C、 F3C和非协同发音状态F2、 F3中选择。

最后,模型中包括1个可跨越的字尾噪声状态,用“noise”表示。

图 1 三音子语音识别模型示意

I0、I1、F0—F3代表对于非协同发音的状态的建模。也就是说,不论上个字和下个字是什么,只要给定了这个字的发音,这些非协同状态就确定下来。

协同发音状态I0C、 F2C和F3C的加入是为了便于考虑协同发音对音节模型的影响,I0C到I1的路径可以建模前导字对该字的影响,F1到F2C和F3C的路径可以建模后继字对该字的影响。给定某个音节后,需要知道其前导音节来确定I0C,知道其后继音节来确定F2C和F3C。

实际建模过程中,使用了100个声母和164个韵母,不同声母和韵母之间的状态没有共享,因此共有856个非协同发音状态。 为了建模协同发音状态并控制状态模型总数,将声母和韵母分别聚类为27和29类,因此3个协同发音状态I0C、 F2C和F3C共含有2 349个独立的模型。加上1个噪声状态,全部独立的状态模型共计3 206个。

模型中使用的有调音节共计1 254个。

2 不同GMM参数下的连续语音识别

GMM产生单帧语音的概率定义如下:

$p(x) = \sum\limits_{i = 1}^K {{\alpha _i}N(x|{\mu _i},{R_i}).} $

其中: x代表一帧语音的特征向量,αi是每个子模型对应的权重,μi和Ri分别代表每个子模型的均值向量和协方差矩阵,而Gauss概率值N(x|μii,Rii)则是每个Gauss模型给出的概率预测。实际应用中常常对Rii作某些假设使得计算过程得到一定程度的简化。根据简化假设的不同,本文将使用的GMM分为3种: 全协方差阵、 共享协方差阵和对角协方差阵,分别用FULL、 SHARE和DIAG表示。

表 1 三类GMM特征总结
GMM简化假设不同维数间的相关性
FULL有建模
SHARE所有Ri都相等有建模,但有一定简化
DIAG协方差阵对角元σij=0,若i≠j假设相关性不存在
2.1 计算量

单个子模型产生1帧语音x的似然值计算如下:

$\ln N(x|{\mu _i},{R_i}) = {C_i} + {b_i}x - \frac{1}{2}{x^T}R_i^{ - 1}x.$

其中:

$\begin{array}{l} {C_i} = - \frac{D}{2}\ln (2\pi ) - \frac{1}{2}\ln |{R_i}| - \frac{1}{2}\mu _i^TR_i^{ - 1}{\mu _i},\\ bi = \mu _i^TR_i^{ - 1}. \end{array}$

Cii和bii只与模型有关而与x无关,可以提前计算,不占用实时计算量。对不同的协方差阵类型来说,若语音特征向量的维数为D,则计算一帧语音对应于所有混合分量的M个似然值所需的运算次数(为约数,只保留最高阶项)如表 2所示。

表 2 三类GMM处理1帧语音浮点运算量分析
GMM乘法次数加法次数
FULL0.5D2M0.5D2M
SHARE0.5D20.5D2
DIAG2DM2DM
2.2 存储空间

不同协方差阵的模型对存储空间的占用相差很大,而这样的差别在许多嵌入式系统上是至关重要的。假设使用双精度浮点类型只存储每个模型的均值向量和协方差矩阵,表 3给出了存储一个GMM所需的空间。

表 3 三类模型存储空间对比
GMM存储均值所需空间/B存储协方差阵所需空间/B
FULL8MD4MD2+4MD
SHARE8MD4D2+4D
DIAG8MD8MD
2.3 性能测试

实验中使用的训练集包括约174 h有标注的广播新闻语料和约40 h的孤立字或孤立词,男声和女声所占的比例大致相同,用16 kHz采样率,16 b采集。测试集包括约2 h的连续语音。测试集和训练集完全独立录制,说话人没有重叠。语音特征使用45维的基于MFCC(Mel-frequency cepstral coefficients)的语音特征,包括14维MFCC、1维归一化能量以及它们的一阶和二阶差分。

语音识别器方面使用了基于DDBHMM(duration distribution based HMM)的三音子识别器[12 ],共包含3 206个不同的状态模型。由于DDBHMM模型[13 ]包含了对于每个状态持续时间的建模,因此比传统的HMM模型更好地描述了语音的时间特征。

每次实验中,首先用EM(expectation maximization)算法训练3类GMM,在同一个测试集上测试这3种模型的首选错误率,从而可以比较不同模型的识别性能。错误统计中包括了替换错误、 插入错误和删除错误,不考虑音节的声调。统计结果如表 4所示。

表 4 三类GMM首选错误率对比
GMM混合分量数总错误率/%
FULL820.8
SHARE825.4
DIAG827.9
DIAG1626.0
DIAG3224.3

表 4表明: 同等混合分量数量下,全协方差阵的错误率最低,共享协方差阵的其次,对角阵的最高。这样的结果证明了MFCC特征各维度之间存在相关性,而对此进行建模能够提升模型的识别能力。同时,采用混合分量数量大幅增加的对角阵也能弥补对角阵对相关性建模的不足,得到较好的识别性能。

2.4 运算时间优化

表 4可见:同样混合分量数量下,全协方差阵语音模型的识别率远好于其他2种类型的,但存在计算量大的不足。即使用简化的共享协方差阵模型,计算量也远高于传统的对角阵。为了缩短全协方差阵和共享全协方差阵模型的训练和识别时间,本文利用了英伟达公司的CUDA技术对科学计算进行加速。

与传统的CPU负责科学运算不同,在CUDA架构下,先将需要计算的数据装载到显卡内存上,再利用GPU中的运算单元进行相应的计算,而GPU具有远超CPU的浮点运算能力。在实验中,当计算1 000帧语音特征和25 648个单Gauss模型的全部共25 648 000个似然值时,使用型号为Intel酷睿 i7-2600 K、频率为4.3 GHz的CPU需要 27 198 ms,而使用单块NVIDIA GTX 570民用级显示卡只需要854 ms。

3 多候选连续语音识别改进

一旦语音模型训练完毕,就可以利用该模型对新的语音进行识别。常见的算法之一是Viterbi算法,通过在状态转移网格中给出一条似然最大的路径来给出语音识别的结果。

然而在很多场景下,常常希望不仅能给出最佳的首选识别结果,还给出前N个最好的候选结果。因此需要构建一个音节网格,该网格可以与语言模型配合完成语音到文字的识别; 也可以被存储下来,作为语音文件的索引,每当需要检索语音文件时,可以不用在音频文件上做耗时的检索,而是直接检索预先计算好的音节网格。

3.1 经典多候选字令牌传递算法

在文[10 ]中提出了在实际应用中被广泛采用的产生多个候选字的令牌传递算法。该算法中,令牌(token)表示每一条候选最优路径在当前时刻的最前沿,每一令牌保存最优的N个前导字,当一个令牌跨越两个字的边界时,将全部在这一时刻结束的字中似然值最优的N个设为跨越边界后令牌的N个最优前导字,同时将跨越之前旧的N个最优前导字设为N个新前导字中最好的那个的前导字(即前导字的前导字),从而构建了候选字网络。在该算法中,虽然在跨越字边界时产生了N个新的最优前导字,但实际传播到下个字的每个首状态中的令牌只有1个。

图 2为例,在识别“清华大学”的拼音“qing hua da xue”时,假设在“hua”的某个末状态(F3FC)中某个令牌的最优前导字为“qing”、 “qin”和“ting”。那么当该令牌跨越“hua”和“da”的字边界时,若该时刻结束的最优的3个字为“hua”、 “huang”和“hu”,则将这3个字设为每个跨越边界后令牌的前导字,同时将新前导字中似然值最优的那个(假设在这里是“hua”)的前导字设为“qing”、 “qin”和“ting”。随着这一过程的逐步展开,一个宽度最大值为N的多候选网格也就由此决定。值得注意的是本算法的每个候选字(“qing”、 “qin”和“ting”)结束时刻都相同,且都是由最优路径下每个字的结束时刻决定的。

图 2 跨越字边界的令牌及其前导字网络示意

图 3 传统令牌传递算法声母抑制现象示意
3.2 改进的令牌传递算法

经典的令牌传递多候选算法在声母—韵母结构下会产生严重的声母抑制现象,即候选词的声母趋近于相同,而不同声母的候选即使是好的也倾向于被算法所忽略。产生这种现象的原因在于: 不同的韵母对应着不同的状态序列,因此“声母A—韵母X”和“声母A—韵母Y”这2条路径直到大约韵母X和韵母Y结束的时刻才产生竞争,而此时2条路径已经在各自正常进行状态转移的情况下传播至字的末尾。此时对这2条路径进行比较,并抛弃似然值较低的一条是适宜的。但在声母不同而韵母相同的情况下,即在“声母A—韵母X”和“声母B—韵母X”的竞争中,由于2条路径的后半部分经历同样的状态(即韵母X对应的那些状态),而在每个时刻只允许1个令牌传播的限制使得那些来自次优的声母B的令牌总不能在合适的时机进入韵母X,从而导致了因似然值不高而被放弃。

本文对这一传播机制进行了修正,允许在每个时刻有K个令牌传播进入新的状态。这样,理论上最多就能存在K条独立传播的路径,不需要互相竞争状态转移时间,使得次优路径也能在正确的时机进行跳转。特别地,如果令牌传播发生在声母和韵母的连接处,则要求这K个令牌来自不同的声母以增强选择的多样性。

3.3 性能比较

使用性能最佳的全协方差GMM,将改进前后的多候选连续语音识别算法进行比较,与单候选语音识别结果的错误统计相似,在错误统计中不考虑音节的声调。表 5显示,这样的改进大幅降低了多候选错误率。实际上,改进后算法的3候选错误率已经低于改进前的20候选错误率。

该结果说明: 声母抑制效应确实使语音识别系统的识别质量下降,一些之前被抛弃的声母实际上是很好的候选。

表 5 多候选识别算法改进前后错误率对比
候选结果数改进前错误率/%改进后错误率/%
120.820.8
311.66.9
69.73.8
108.52.9
207.32.2
3.4 基于多候选网格的语音关键词检索

多候选连续语音识别的一个主要用途是产生音节网格,通过存储网格来进行快速语音关键词检索。这样关键词检索过程就只涉及音节的文本匹配,而无需在音频文件上进行复杂的计算。

本节通过测量一个网格式语音关键词检索系统的召回率和准确率来衡量多候选语音识别算法的好坏。该网格式检索系统在多候选音节网格上进行音节的不考虑声调的文本匹配,同时用一些辅助规则提升性能。实验中使用了全协方差GMM语音模型。

为了均衡考虑不同长度的关键词,实验中选择了不同长度的关键词,包括50个二字词、 50个三字词和50个平均长度为7的长词,这些词在语料中的出现频率最高。表 6和7显示了这3组词各自检索结果的F值(召回率和准确率的调和平均数)在算法改进前和改进后的差异。其中L表示关键词集内词长相同时词的长度,L表示当关键词集内词长不同时词的平均长度。

表 6 改进前关键词检索性能
候选结果数L=2L=3L=7
10.860.850.82
20.870.870.89
30.850.860.91
60.780.750.93
100.700.570.93
200.560.270.90

表 7 改进后关键词检索性能
候选结果数L=2L=3L=7
10.860.850.82
20.890.880.89
30.870.860.92
60.810.740.95
100.730.520.96
200.580.190.94

实际应用中,可以根据关键词的长度决定合适的候选数量已达到虚警率和漏检率的平衡。在改进前后,3种长度的关键词对应的最佳候选数量都分别是2、 2和10。在这一组特定的候选数下,改进前系统的F值分别为0.87、 0.87和0.93,而改进后的分别为0.89、 0.88和0.96。据此可以看出,更准确的多候选语音识别结果不仅对语音识别任务本身具有很大意义,同时也提升了语音关键词检索系统的性能。

4 结论

本文研究了建立一个语音关键词检索系统所涉及的关键算法。为了改进语音识别模型,本文将传统的对角阵GMM更换为全协方差阵GMM,并证明了这样的改变可以有效降低语音识别的错误率。为了优化计算全协方差阵所需要的时间,本文使用CUDA运算加速技术大幅提升了运算能力。同时,为了在计算时间和错误率之间进行有效的平衡,本文提出了在多个混合分量间共享全协方差阵的思路,并证明这样的共享起到了期望的效果。

在多候选连续语音识别算法方面,本文根据汉语发音的特点改进了经典的令牌传递多候选识别算法,通过在一个时刻允许多个令牌传播,提高了多候选中声母的多样性,从而大幅降低了多候选结果的错误率。最后,将这样的改进应用到语音关键词检索系统上,证明了多候选语音识别性能的提升确实有助于提升该系统的性能。

参考文献
[1] Reynolds D A, Rose R C. Robust text-independent speaker identification using Gaussian mixture speaker models [J]. IEEE Trans Speech Audio Process, 1995, 3(1): 72-83.
[2] Hinton G, Deng L, Yu D, et al. Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups [J]. IEEE Signal Process Mag, 2012, 29(6): 82-97.
[3] Yu D, Deng L, Seide F, The deep tensor neural network with applications to large vocabulary speech recognition [J]. IEEE Trans Audio Speech Lang Process, 2013, 21(2): 388-396.
[4] Pang Z, Tu S, Su D, et al. Discriminative training of GMM-HMM acoustic model by RPCL learning [J]. Front Electr Electron Eng China, 2011, 6(2): 283-290.
[5] Povey D, Burget L, Agarwal M, et al. The subspace Gaussian mixture model: A structured model for speech recognition [J]. Comput Speech Lang, 2011, 25(2): 404-439.
[6] Du J, Hu Y, Jiang H. Boosted mixture learning of gaussian mixture hidden markov models based on maximum likelihood for speech recognition [J]. IEEE Trans Audio Speech Lang Process, 2011, 19(7): 2091-2100.
[7] Veiga A, Lopes C, Sá L, et al. Acoustic similarity scores for keyword spotting [J]. Computational Processing of the Portuguese Language, 2014, 8775: 48-58.
[8] Thambiratnam K, Sridharan S. Dynamic match phone-lattice searches for very fast and accurate unrestricted vocabulary keyword spotting [C]//Proc ICASSP. Philadelphia, PA, USA: IEEE Press, 2005: 465-468.
[9] 罗骏, 欧智坚, 王作英. 基于拼音图的两阶段关键词检索系统 [J]. 清华大学学报, 2005, 45(10): 1356-1359.LUO Jun, OU Zhijian WANG Zuoying. Two-stage keyword spotting system based on syllable graphs [J]. Journal of Tsinghua University (Science and Technology), 2005, 45(10): 1356-1359. (in Chinese)
[10] Young S J, Russell N H, Thornton J H S. Token Passing: A Simple Conceptual Model for Connected Speech Recognition Systems, CUED/F-INFENG/TR, 38 [R]. Cambridge, UK: University of Cambridge, 1989.
[11] 李春, 王作英. 基于语音学分类的三音子识别单元的研究 [C]//第六届全国人机语音通讯学术会议论文集. 深圳: 中国中文信息学会, 2001: 257-262.LI Chun, WANG Zuoying. Triphone recognition unit based on phonetics category [C]//The 6th National Conference of Human-Computer Speech Communication. Shenzhen, China: CIPSC, 2001, 257-262. (in Chinese)
[12] 游展. DDBHMM语音识别段长模型的研究和改进 [D]. 北京: 清华大学, 2008.YOU Zhan. The Research and Improvement on DDBHMM Speech Recognition Model [D]. Beijing: Tsinghua University, 2008. (in Chinese)
[13] 肖熙. DDBHMM语音识别模型的训练和识别算法 [D]. 北京: 清华大学, 2003.XIAO Xi. The Training and Recognition Algorithm for DDBHMM Speech Recognition Model [D]. Beijing: Tsinghua University, 2003. (in Chinese).