CN1503220A - 一种语音识别中的并行搜索方法 - Google Patents
一种语音识别中的并行搜索方法 Download PDFInfo
- Publication number
- CN1503220A CN1503220A CNA2003101150440A CN200310115044A CN1503220A CN 1503220 A CN1503220 A CN 1503220A CN A2003101150440 A CNA2003101150440 A CN A2003101150440A CN 200310115044 A CN200310115044 A CN 200310115044A CN 1503220 A CN1503220 A CN 1503220A
- Authority
- CN
- China
- Prior art keywords
- token
- thread
- expansion
- state
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000013138 pruning Methods 0.000 claims description 40
- 230000008569 process Effects 0.000 claims description 10
- 238000010845 search algorithm Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 230000006854 communication Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 101100310497 Arabidopsis thaliana SMT2 gene Proteins 0.000 description 1
- 101000864070 Homo sapiens Smoothelin Proteins 0.000 description 1
- 101150107557 SMT-1 gene Proteins 0.000 description 1
- 102100029937 Smoothelin Human genes 0.000 description 1
- YTAHJIFKAKIKAV-XNMGPUDCSA-N [(1R)-3-morpholin-4-yl-1-phenylpropyl] N-[(3S)-2-oxo-5-phenyl-1,3-dihydro-1,4-benzodiazepin-3-yl]carbamate Chemical compound O=C1[C@H](N=C(C2=C(N1)C=CC=C2)C1=CC=CC=C1)NC(O[C@H](CCN1CCOCC1)C1=CC=CC=C1)=O YTAHJIFKAKIKAV-XNMGPUDCSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 210000004258 portal system Anatomy 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种语音识别中的并行搜索方法,由多个线程对令牌扩展进行并行运算,各线程按索引单位分配得到各自的t-1时刻词典树的令牌资源,对于分配的t-1时刻的令牌资源,线程Ti对各状态的全局令牌链表中的令牌进行扩展运算,并将新产生的令牌链入目标状态中线程Ti对应的令牌链表中,在所有线程的扩展运算完成后,进行令牌资源的同步运算,本发明方法可在相当程度上实现多处理器系统中处理器间的计算负载平衡。且在并行搜索引擎中令牌扩展线程间的通信开销非常低。
Description
技术领域
本发明涉及一种语音识别方法,尤其涉及一种语音识别中基于词典树宽度优先策略的并行搜索方法。
背景技术
语音服务器是分布式读音识别系统以及语音门户系统的主要部件,搜索引擎占据了整个语音服务器中80%以上的中央处理器计算资源和大部分的内存。
图1所示是一种已知语音识别系统的结构框图,模拟语音经过模数变换单元11后变换为计算机可处理的数字信号,然后利用特征提取单元12对该数字信号进行分帧处理,通常帧长为20ms,帧移为10ms,提取每一帧语音的MFCC参数,得到MFCC矢量序列,解码运算单元14根据输入语音的特征矢量序列、声学模型13及语言模型15,采用一定的搜索策略,如宽度优先搜索(Viterbi算法)或广度优先搜索,得到识别结果。其中语言模型在进行大词表连续语音识别时,用于将语言层的知识应用到语音识别系统中,提高系统的识别精度。
词典树是用来组织识别系统中所有词发音的一种树状结构。音素是构成词发音的基本单位,TRI-PHONE音素是当前语音识别系统常用的音素单元,例如:词“中国”的TRI-PHONE音素的表示序列为:“sil-zh+ong zh-ong+gong-g+uo g-uo+sil”(sil是一个特殊的音素,用来表示语音中的停顿)。识别系统的词之间可能有相同的前缀字或字词,例如,词“中间”和“中国”,它们有相同的前缀“中”,许多词在一起就构成一种树状的结构,假设识别系统的词表包含下面5个词“abe”、“ab”、“acg”、“acgi”以及“ac”,则该词表的词典树如图2所示。树中的每个节点对应的TRI-PHONE音素关联一个对应于该TRI-PHONE的隐马尔科夫模型(HMM),图3给出了一种表示TRI-PHONE音素的HMM拓扑结构,一个HMM由若干HMM状态组成。在词典树的最高层,是词节点。在搜索过程中,可能会存在多个搜索路径,并可能在词典树上进行反复的循环搜索。
一般而言,当前的搜索引擎采用的是基于词典树的串行Viterbi搜索算法。而当前的语音服务器的硬件体系结构有的是多处理机系统,例如:基于Intel Xeon致强处理器或Intel奔腾处理器的工作站和服务器,这些系统中有两个以上的中央处理器,处理器间采用符合工业标准的对称多处理技术互联而成。高效的搜索引擎应当充分利用语音服务器系统提供的硬件资源,以期得到最高的系统性价比。
文献Steve Yong,“Large Vocabulary Continuous Speech Recognition:aReview”,1996,Cambridge University,给出了一种语音串行Viterbi搜索算法,该文献首先提出了用于语音识别搜索引擎的基于词典树的令牌扩展策略,令牌是指从用户起始语音帧到当前语音帧的一条活动搜索路径,它包含路径标识信息以及路径与声学模型以及语言模型匹配的分值,其中路径标识信息包含在该路径中的所有词以及词的边界信息(指该词所对应的语音帧的起始与结束边界)。每个令牌对应于一条活动的搜索路径,不同令牌间的差别在于它们有不同的声学(例如:TRIPHONE)上下文和不同的语言上下文。在令牌传播过程中,传播到词典树中相同TRIPHONE节点中相同HMM状态的令牌组成一个令牌链表,链表有一个表头,表头中存放第一个传入令牌的起始内存地址,第一个传入令牌中存放了的第二个传入令牌的起始内存地址,以此类推,所有传入令牌形成所述的令牌链表。
词典树中每个节点关联的HMM中的每个状态均可驻留可移动的令牌,该节点的每个状态均有一个令牌链表,用来存放任意时刻在该状态活动的所有令牌。假设在时刻t,词典树中某一节点的状态i的令牌链表中的一个可扩展令牌的分值为si(t-1),那么在搜索过程中,将该令牌的分值si(t-1)加上从状态i到状态j的转移概率、再加上状态j对于当前语音帧t的观察概率,其分值为sj(t),如果分值超过当前的全局剪枝阈值,则产生一个与状态j关联的活动令牌,否则不产生新令牌。在完成对t-1时刻驻留在词典树上的所有待扩展令牌的处理后,产生t时刻驻留在词典树上的待扩展令牌资源,并将删除全部t-1时刻驻留在词典树上的所有令牌。需要说明的是,上面所说的状态j包括状态i所有可能扩展方向上的状态,包括状态i自己,如图4所示,状态i3可能扩展方向上的状态包括j1,k1,和i3,每一个状态对应一个令牌链表Hj1、Hk1、和Hi3。在语音输入结束时刻T,可通过回朔具有最佳分值令牌中的路径标识信息链表,提取出具有最佳匹配的词序列以及对应的词边界位置,从而得到识别结果。
文献Rajeev Dujari,“Parallel Viterbi Search Algorithm for SpeechRecognition”,1992,MIT Master Thesis,给出了一种语音并行Viterbi搜索算法。为了实现多处理器的并行搜索,该文献中的算法对搜索网络(即词典树)作静态分解,对用户的语音输入,每个处理器在各自子搜索网络上作解码,然后合并各个处理器的结果,生成最佳识别结果。这样,由于局部搜索路径的生成依赖于语音输入,因此该算法无法保证搜索路径在各个子搜索网络上的分布是比较均匀的,从而无法有效控制处理器之间计算量的负载平衡,使得计算量负载最大的处理器成为系统瓶颈,而此时其它处理器处于等待状态,因此,系统的硬件资源无法得到充分利用。
发明内容
本发明要解决的技术问题是提供一种语音识别中的并行搜索方法,可以实现多进程之间对搜索计算量的动态平衡,并且多进程之间资源同步算法的计算开销非常小。
为了解决上述技术问题,本发明提供了一种语音识别中的并行搜索方法,包括以下步骤:
(a)令牌扩展初始化;
(b)从输入的长度为T的语音特征矢量序列中依次取出下一个语音帧的特征矢量,置其为当前语音帧Ot(1≤t≤T);
(c)由所有令牌扩展线程中的任一令牌扩展线程Ti(0≤i≤N-1),N为线程数,按索引单位分配得到各自的t-1时刻词典树的令牌资源;
(d)对于分配所得的t-1时刻的令牌资源,线程Ti对各状态的全局令牌链表中的令牌进行扩展运算,并将新产生的令牌链入目标状态中线程Ti对应的令牌链表中;
(e)在所有线程的扩展运算完成后,合并词典树每个状态对应的各个线程的令牌链表,生成t时刻各个状态的全局令牌链表,再按索引单位链接得到t时刻词典树活动节点令牌资源表;
(f)扩展处理词节点的令牌;
(g)根据每个令牌扩展线程t时刻的局部剪枝阈值,产生t时刻的全局剪枝阈值;
(h)判断语音帧是否读取完毕,如果是,执行下一步,否则返回步骤(b);
(i)结束令牌扩展,产生识别结果。
上述方法中,所述索引单位可以是活动节点、一层中的所有活动节点,或者是各HMM状态。
上述方法中,所述的令牌初始化是指:产生一个分值为零的令牌,并把该令牌链入词典树中的root节点的全局令牌链表,当前词典树的活动节点仅包含根节点root,它处在词典树的第0层;初始化全局剪枝阈值g为对数最小值;以及,初始化每个令牌扩展线程对应的局部剪枝阈值li(0≤i≤N-1)为对数最小值。
上述方法中,所述步骤(c)中的资源分配是由各线程竞争实现的,或者是按索引单位的个数对各个线程进行平均分配。
上述方法中,所述步骤(g)中的全局剪枝阈值更新算法包括:将时刻t的全局剪枝阈值更新为所有令牌扩展线程的时刻t的局部剪枝阈值中的最大者;以及,所有令牌扩展线程的局部剪枝阈值置为对数最小值。
上述方法中,所述步骤(d)中进行扩展运算时,较佳采用基于局部路径最大概率的自适应剪枝策略。
由上可知,本发明提出了一种对搜索过程中的扩展令牌资源进行动态划分,实现令牌扩展并行计算的方法,使得运行在多处理器系统不同处理器或者多内核处理器不同内核上的令牌扩展线程,可动态竞争待扩展的令牌资源,与现有并行搜索引擎的静态资源分配相比,可在相当程度上实现多处理器系统中处理器间或者多内核处理器中内核间的计算负载平衡。进一步,本发明令牌扩展线程间的同步机制使得并行搜索引擎中令牌扩展线程间的通信开销非常低。
本发明方法也可以用于单CPU系统中,启动多个进程对令牌扩展进行并行运算,充分利用系统资源,加快搜索的速度。
附图说明
图1是语音识别系统的功能框图;
图2是词典树的示意图;
图3是TRIPHONF音索P对应的HMM状态的示意图;
图4是现有技术中令牌资源与HMM状态关系的示意图;
图5A、图5B和图5C是本发明实施例多线程的令牌资源与HMM状态关系的示意图;
图6是本发明实施例并行搜索方法的流程图。
具体实施方式
在语音识别过程中,令牌扩展(包含语音帧高斯概率计算)的计算量占了整个搜索引擎计算量的80%以上。在多处理器或多内核处理器的环境下,为了加速搜索运算,本发明提出了一种利用多线程对令牌扩展进行并行运算的方法。
多个状态的令牌链表中的令牌扩展过程存在着数据相关性,仍以图4为例,假设状态i2、i3和j1的活动令牌链表分别为Hi2、Hi3和Hj1,在t-1时刻,上述令牌链表中各有二个活动令牌T11(t-1)-T12(t-1)、T21(t-1)-T22(t-1)和T31(t-1)-T32(t-1),在t时刻,需要分别对这三个状态令牌链表中的活动令牌进行扩展,现有算法的扩展顺序是Hj1、Hi3和Hi2中的活动令牌,即对节点来说,应当先扩展高层的活动节点中的令牌,对于同一节点中的状态来说,应当先扩展在后状态令牌链表中的令牌,因为完成每一状态令牌链表中令牌的扩展后都要将该令牌链表中的t-1时刻的令牌删除,这样,可以保证各不同时刻的令牌不混杂(词节点在t-1时刻的没有令牌,在t时刻,先接收与其相连的节点上传的令牌,在各层令牌处理完成后,再将词节点上的令牌扩展到第一层,词节点保持为空的状态)。如果先扩展Hi2中的令牌T11(t-1)-T12(t-1),假设扩展后令牌T11(t)链入状态i3的令牌链表Hi3中,这样,在对状态i3的令牌链表Hi3中令牌进行扩展时,就既存在t时刻的令牌T11(t),又存在t-1时刻的令牌T21(t-1)-T22(t-1),就必须加以区别,同样,先处理Hi3再处理Hj1中的令牌也会存在这个问题。为了对不同时刻的令牌加以区别,可以加入专门的标志位,在做令牌扩展前先扫描该标志位,但这样会增加运算的复杂性,降低搜索算法的速度。
本发明给出的令牌扩展并行算法要求多个令牌扩展线程并行扩展词典树中所有活动节点中的各个状态的令牌链表,无法满足上述的对运算顺序的要求,为了避免因数据相关性要求而增加运算的复杂程度,本发明提出了一种面向多线程并行令牌扩展的词典树节点的令牌资源管理方法。
本发明实施例中,节点中各个状态均包含分别对应于每个线程的令牌链表,此外,还包含一个该状态的全局令牌链表。假设词典树节点包含M个HMM状态:sI…sM,并行搜索引擎中有T个并行的令牌扩展线程,本发明中一个词典树节点的令牌资源定义包含下列令牌资源信息:
线程T1令牌资源:HS1T1…HSMT1
线程T1令牌资源:HS1T2…HSMT2
线程TN令牌资源:HS1TN…HSMTN
全局令牌资源:HS1…HSM
其中,HsiTJ(1≤i≤M,1≤j≤ N)为线程TJ关于节点中的HMM状态Si的令牌链表;Hsi(1≤i≤M)为关于节点中的HMM状态Si的全局令牌链表。
请参照图5A,假设系统中存在两个线程T1和T2,则与状态i2、i3和j1对应的各有3个令牌链表:{Hi2T1、Hi2T2、Hi2},{Hi3T1、Hi3T2、Hi3}和{Hj1T1、Hj1T2、Hi1},在t-1时刻,系统已完成所有令牌扩展,此时,与各线程相关的令牌链表均被置空,各状态上的活动令牌均链接在该状态的全局令牌链表中,假定共有6个活动令牌T1(t-1)~T6(t-1),两两分布在三个令牌链表中。在t时刻,假设线程T1竞争得到节点i的令牌资源,线程T2竞争到节点j的令牌资源。对于节点i中的状态i2,线程T1先对其全局令牌链表Hi2中的令牌进行扩展运算,其中T1(t)扩展到状态i3,则将该令牌链入线程T1对应于状态i3的令牌链表Hi3T1,T2(t)发生自环,则放在线程T1对应于状态i2的令牌链表Hi2T1中,完成Hi2中所有令牌的扩展后,删除Hi2中的所有令牌,然后线程T1再按照同样的方式扩展状态i3对应的全局令牌链表Hi3中的令牌,假定T3(t)发生自环,T4(t)链入Hj1T1,而在线程T2对Hj1中的令牌扩展后,T5(t)发生自环,T6(t-1)扩展时因分值小于该线程的剪枝阈值,被删除。这时各令牌链表中令牌如图5B所示。由于t-1时刻待扩展的令牌均在全局令牌链表中,而扩展后的t时刻令牌是按线程区分放在各线程的令牌链表中,因此无论各线程对各状态的处理顺序如何,都不会发生t时刻令牌和t-1时刻令牌混放的问题。在对所有待扩展令牌处理完后,需进行同步,即将各状态对应的所有线程的令牌链表中的令牌链入该状态的全局令牌链表,然后清空各线程令牌链表,如图5C所示。通过以上分析可以看出,采用了本发明的令牌资源管理方法后,可以解决数据相关性的问题,并且所增加的同步运算只涉及到指针的连接,开销非常小。
值得注意的是,本发明实施例中对不同线程设立不同的令牌链表,这是因为如果各线程采用统一的临时链表,虽然也可以解数据相关性的问题,但是不同线程可能会同时往该链表的相同位置放入令牌路径信息而造成错误,为此还要设置一个锁定机制,在一个线程链入数据时,另一个线程必须等待,这样会影响运算速度,采用本实施例的方法则不存在这样的问题。
在任意时刻t,词典树中具有活动令牌的节点为t时刻活动节点。词典树中t时刻活动节点的索引方式可以有两种:方式一是直接将所有活动节点串接起来形成一个一维链表;方式二是依t时刻活动节点在词典树中所处的层次索引,即在相同层的所有活动节点串接在一起形成一张链表,词典树的每一层均有这样的一张链表,整体上是一个二维链表。
任意时刻t,词典树中所有活动节点的令牌资源的总和称为t时刻词典树活动节点令牌资源,它规定了t时刻的待扩展令牌资源。本发明的多个令牌扩展线程将动态竞争任意时刻t的词典树活动节点令牌资源,实现令牌资源的并行扩展。不同的令牌资源索引方式决定了令牌扩展线程每次竞争获取的令牌资源,采用方式一索引时,竞争得到的是各节点的令牌资源,采用方式二索引,则竞争得到的是各层上所有活动节点的令牌资源。
下面详细描述本发明实施例的具体算法,其总的流程图如图6所示,包括以下步骤:
令牌扩展初始化,步骤100;
从输入的长度为T的语音特征矢量序列中依次取出下一个语音帧的特征矢量,置其为当前语音帧Ot(1≤t≤T),步骤110;
由所有令牌扩展线程中的任一令牌扩展线程Ti(0≤i≤N-1),竞争得到各自的t-1时刻词典树活动节点的令牌资源,步骤120;
对于竞争所得的t-1时刻令牌资源中的每个活动节点,线程Ti处理该节点中各状态的全局令牌链表中的令牌,并将新产生的令牌链入目标状态中线程Ti对应的令牌链表中,步骤130;
在所有线程的扩展运算完成后,合并词典树各节点中每个状态对应的各个线程的令牌链表,生成t时刻该节点各个状态的全局令牌链表,再链接得到t时刻词典树活动节点令牌资源表,步骤140;
扩展处理词节点的令牌,步骤150;
根据每个令牌扩展线程t时刻的局部剪枝阈值(此处的局部剪枝阈值是指各线程自己剪枝阈值,各线程自己的剪枝阈值相当于串行算法中的全局剪枝阈值),产生t时刻的全局剪枝阈值,步骤160;
判断语音帧是否读取完毕,如果是,执行步骤180,否则返回步骤110,步骤170;
结束令牌扩展,产生识别结果,步骤180。
需要说明的是,除步骤120和130外,其它步骤中的运算操作是由主线程串行完成的,各线程由操作系统统一管理。
其中,步骤100中,本实施例的初始化包括:
产生一个分值为零的令牌,并把该令牌链入词典树中的root节点的全局令牌链表,当前词典树的活动节点仅包含根节点root,它处在词典树的第0层;初始化全局剪枝阈值g为对数最小值;以及,初始化每个令牌扩展线程对应的局部剪枝阈值li(0≤i≤N-1)为对数最小值。
在步骤120中,本实施例采用索引方式一,即以各个活动节点的令牌资源为索引单位,记其索引变量为Ii(1≤I1≤V1),其中,Vi为t时刻词典树活动节点的个数,该索引变量是临界变量,多个令牌扩展线程在动态竟争令牌资源时,必须确保对索引变量Ii读写的互斥访问,一般而言,语音服务器的操作系统提供了这样的互斥访问,例如:lock和unlock语句。多线程竞争令牌资源的方法包括以下步骤:
各线程竞争当前索引变量Ii,当线程Ti竞争到Ii后,将其锁定,其它线程处于等待状态;
判断当前索引变量Ii是否小于等于t时刻词典树活动节点的个数,如果是,执行下一步,否则结束资源竞争;
系统将当前索引变量对应节点的令牌资源分配给线程Ti扩展;
索引变量加1后解锁,返回第一步。
如果采用方式二的索引方法,只需将索引变量对应于词典树中一层所有活动节点的令牌资源,并限定其范围在最高层数之内即可。除了上述两种索引方法,将索引单位对应于词典树中各个状态的令牌资源也是可以的,这时由多个线程对以状态为单位令牌资源进行竞争,其方法也是一样的。
值得注意的是,本发明的各线程竞争资源的方法并不局限于上述具体步骤。通过各线程对令牌资源的动态竞争,可以满足多处理器或多内核处理器在令牌扩展中计算量的平衡。但本发明的资源分配方法也并不局限于上述自动竞争方法,按索引单位的个数对各个线程进行平均分配也是可以的。
在上述步骤130中,N个令牌扩展线程Ti(0≤i≤N-1)同时异步地执行令牌扩展的运算。一般而言,语音服务器的操作系统将负责调度这些令牌扩展线程在多处理器系统不同处理器或者多内核处理器不同内核上的并发运行。对于步骤130中采用的令牌扩展算法,本方法不作特别的限定,可以采用现有的算法,不过较佳采用本申请人在中国专利申请02148682.4中公开的快速解码方法,该方法在传统方法的基础上增加基于局部路径最大概率的自适应剪枝策略,可以加快搜索的速度。
例如,本实施例的步骤130可以由下述步骤完成:
a、对节点关联的HMM的最后一个状态对应的全局令牌资源链表中的每个令牌;将令牌扩展到节点在词典树中的所有子节点的线程Ti资源表中;
b、取节点关联的具有M个状态的HMM的一个sn状态作为待处理状态;
c、取状态sn对应的全局令牌资源链表中的一令牌为当前待处理令牌;
d、若当前待处理令牌的当前分值大于前一时刻的全局剪枝阈值;则取一个由状态sn可达的状态,置为当前待处理状态sm,否则执行步骤k;
e、累计令牌从状态sn到达状态sm的分值;该分值sm(t)为令牌的当前分值加上状态sn到状态sm的转移概率、再加上状态sm对于当前语音帧Ot的观察概率;
f、计算当前局部剪枝阈值Lp,其公式为Lp=Lb-Lw,式中Lb为当前的局部剪枝基线阈值;Lw为当前的剪枝宽度阈值;
g、若令牌到达状态Sm的分值大于线程Ti的局部剪枝阈值Lp,则产生一个新的令牌,其分值为Sm(t);否则执行步骤j;
h、检查该节点是否已在该节点在词典树所在层的活动节点表中,若不在,则将该新令牌链入节点中表头为HsmTi的令牌资源表中;
i、根据分值为sm(t),更新线程Ti的局部剪枝基线阈值Lb;其步骤为sm(t)-Lw>Lb:若;则有:Lb=sm(t);否则不作更新;
j、取另一个由状态Sn可达的状态,置其为当前待处理状态sm,重复上述e-i步,直到处理完所有由状态Sn可达的状态;转到步骤k执行;
k、取状态Sn对应的令牌资源表中的另一个令牌为当前待处理令牌;重复上述d-j步,直到对状态Sn对应的令牌资源表中的所有令牌的扩展操作均完成,转至步骤1执行;
l、取节点关联的具有M个状态的HMM的另一个HMM状态为当前待处理的HMM状态Sn,其中1≤n≤M,重复上述c-k步,直至当前节点的所有令牌资源扩展操作已经完成。
在步骤140中,首先进行的是同步运算,即对于当前t时刻词典树中的每个活动节点的每个HMM状态,将该状态的每个线程的令牌链表中的令牌资源(即其表头指向的令牌路径信息)移接到该状态的全局令牌链表中,生成该状态的全局令牌资源表。然后将包含待扩展令牌的活动节点按设定的索引方式链入t时刻词典树活动节点令牌资源表中,生成t时刻词典树活动节点令牌资源表,供各线程竞争令牌资源。
在步骤150中,对词节点的令牌的扩展处理,是指对词节点上的令牌扩展后产生新令牌,其分值为词节点上的令牌的分值累加上所传入的第一层节点的第一个状态对当前语音帧的观察概率,若该分值大于当前的全局剪枝域值,则直接传播到第一层节点的第一个状态的全局令牌链表中,这时没有必要再区别线程,是在主线程中执行的。
在步骤170中的剪枝阈值更新算法包括:将时刻t的全局剪枝阈值更新为所有令牌扩展线程的时刻t的局部剪枝阈值中的最大者;以及,所有令牌扩展线程的局部剪枝阈值置为对数最小值。
综上所述,本发明改造了传统的采用串行方式的令牌扩展模块,包含一种对搜索过程中带扩展令牌资源的动态划分,以及令牌扩展并行算法,使得运行在多处理器系统不同处理器或者多内核处理器不同内核上的令牌扩展线程,可动态竞争待扩展的令牌资源,与现有并行搜索引擎的静态资源分配相比,可在相当程度上实现多处理器系统中处理器间或者多内核处理器中内核间的计算负载平衡。
进一步,本发明包含一种令牌扩展线程间的同步机制,该机制使得并行搜索引擎中令牌扩展线程间的通信开销非常低。一方面,基于该机制的资源同步算法的计算开销非常小,若并行搜索引擎中有N个并行的令牌扩展线程,对当前语音帧则每个令牌扩展线程将产生各自的待扩展令牌资源表,所涉及的运算只是一些基于指针的连接运算。另一方面,本发明的同步机制是一种基于语音帧的帧同步方式,即同步点是设置在语音信号中的各个语音帧结束处,例如:若语音帧的步进长度为10ms,那么一段6s的语音,仅需作600次的线程间的同步操作,这样的同步开销几乎是可以忽略的。
因而,本发明通过对搜索引擎内核的改造实现了系统中搜索计算量的自动动态分配,可提高具有多处理器或者多内核处理器的语音服务器的系统响应及吞吐率。该发明使计算机硬件资源得到了最大利用,从而在给定系统服务性能指标的前提下,与传统的语音服务器搜索引擎相比,可减少系统中处理器的数量,使系统的可靠性得以提高的同时提高了系统的性价比。在相当程度上解决了语音识别技术在电信等系统应用中对系统的高可靠性和低成本的要求。
此外,在单CPU系统中也支持多进程,本发明的方法也可以应用于单CPU的语音服务系统。在单CPU中采用一个线程进行串行处理时,系统中的各部件会经常处于等待状态,如CPU和内存之间,采用多线程的并行运算后,可以提高各部件的并行性,因而从总体上说,也可以提高搜索的速度和效率。
Claims (6)
1、一种语音识别中的并行搜索方法,包括以下步骤:
(a)令牌扩展初始化;
(b)从输入的长度为T的语音特征矢量序列中依次取出下一个语音帧的特征矢量,置其为当前语音帧Ot(1≤t≤T);
(c)由所有令牌扩展线程中的任一令牌扩展线程Ti(0≤i≤N-1),N为线程数,按索引单位分配得到各自的t-1时刻词典树的令牌资源;
(d)对于分配所得的t-1时刻的令牌资源,线程Ti对各状态的全局令牌链表中的令牌进行扩展运算;并将新产生的令牌链入目标状态中线程Ti对应的令牌链表中;
(e)在所有线程的扩展运算完成后,合并词典树每个状态对应的各个线程的令牌链表,生成t时刻各个状态的全局令牌链表,再按索引单位链接得到t时刻词典树活动节点令牌资源表;
(f)扩展处理词节点的令牌;
(g)根据每个令牌扩展线程t时刻的局部剪枝阈值,产生t时刻的全局剪枝阈值;
(h)判断语音帧是否读取完毕,如果是,执行下一步,否则返回步骤(b);
(i)结束令牌扩展,产生识别结果。
2、如权利要求1所述的并行搜索算法,其特征在于,所述索引单位是活动节点、一层中的所有活动节点,或者是各HMM状态。
3、如权利要求1所述的并行搜索算法,其特征在于,所述的令牌初始化是指:产生一个分值为零的令牌,并把该令牌链入词典树中的root节点的全局令牌链表,当前词典树的活动节点仅包含根节点root,它处在词典树的第0层;初始化全局剪枝阈值g为对数最小值;以及,初始化每个令牌扩展线程对应的局部剪枝阈值li(0≤i≤N-1)为对数最小值。
4、如权利要求1所述的并行搜索算法,其特征在于,所述步骤(c)中的资源分配是由各线程竞争实现的,或者是按索引单位的个数对各个线程进行平均分配。
5、如权利要求1所述的并行搜索算法,其特征在于,所述步骤(g)中的全局剪枝阈值更新算法包括:将时刻t的全局剪枝阈值更新为所有令牌扩展线程的时刻t的局部剪枝阈值中的最大者;以及,所有令牌扩展线程的局部剪枝阈值置为对数最小值。
6、如权利要求1所述的并行搜索算法,其特征在于,所述步骤(d)中进行扩展运算时,采用了基于局部路径最大概率的自适应剪枝策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101150440A CN1201285C (zh) | 2002-11-20 | 2003-11-20 | 一种语音识别中的并行搜索方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN02149407 | 2002-11-20 | ||
CN02149407.X | 2002-11-20 | ||
CNB2003101150440A CN1201285C (zh) | 2002-11-20 | 2003-11-20 | 一种语音识别中的并行搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1503220A true CN1503220A (zh) | 2004-06-09 |
CN1201285C CN1201285C (zh) | 2005-05-11 |
Family
ID=34276077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101150440A Expired - Fee Related CN1201285C (zh) | 2002-11-20 | 2003-11-20 | 一种语音识别中的并行搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1201285C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420438B (zh) * | 2008-11-18 | 2011-06-22 | 北京航空航天大学 | 一种基于序列联配的三阶段渐进式网络攻击特征提取方法 |
CN101120397B (zh) * | 2005-01-17 | 2011-08-17 | 日本电气株式会社 | 语音识别系统、语音识别方法 |
CN104852864A (zh) * | 2014-02-13 | 2015-08-19 | 中兴通讯股份有限公司 | 一种报文转发方法、装置及网络转发设备 |
CN105632500A (zh) * | 2014-11-21 | 2016-06-01 | 三星电子株式会社 | 语音识别装置及其控制方法 |
CN105702257A (zh) * | 2015-08-12 | 2016-06-22 | 乐视致新电子科技(天津)有限公司 | 语音处理方法与装置 |
CN106992007A (zh) * | 2017-03-28 | 2017-07-28 | 百度在线网络技术(北京)有限公司 | 基于语音识别打分系统的数据处理方法和装置 |
CN108986800A (zh) * | 2017-05-31 | 2018-12-11 | 上海智觅智能科技有限公司 | 一种基于多处理器协调链表逻辑实时离线语音交互系统及方法 |
CN112037774A (zh) * | 2017-10-24 | 2020-12-04 | 北京嘀嘀无限科技发展有限公司 | 用于关键短语识别的系统和方法 |
-
2003
- 2003-11-20 CN CNB2003101150440A patent/CN1201285C/zh not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101120397B (zh) * | 2005-01-17 | 2011-08-17 | 日本电气株式会社 | 语音识别系统、语音识别方法 |
CN101420438B (zh) * | 2008-11-18 | 2011-06-22 | 北京航空航天大学 | 一种基于序列联配的三阶段渐进式网络攻击特征提取方法 |
CN104852864B (zh) * | 2014-02-13 | 2018-12-14 | 中兴通讯股份有限公司 | 一种报文转发方法、装置及网络转发设备 |
WO2015120699A1 (zh) * | 2014-02-13 | 2015-08-20 | 中兴通讯股份有限公司 | 一种报文转发方法、装置及网络转发设备 |
CN104852864A (zh) * | 2014-02-13 | 2015-08-19 | 中兴通讯股份有限公司 | 一种报文转发方法、装置及网络转发设备 |
CN105632500A (zh) * | 2014-11-21 | 2016-06-01 | 三星电子株式会社 | 语音识别装置及其控制方法 |
CN105702257A (zh) * | 2015-08-12 | 2016-06-22 | 乐视致新电子科技(天津)有限公司 | 语音处理方法与装置 |
WO2017024908A1 (zh) * | 2015-08-12 | 2017-02-16 | 乐视控股(北京)有限公司 | 语音处理方法与装置 |
CN106992007A (zh) * | 2017-03-28 | 2017-07-28 | 百度在线网络技术(北京)有限公司 | 基于语音识别打分系统的数据处理方法和装置 |
CN106992007B (zh) * | 2017-03-28 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 基于语音识别打分系统的数据处理方法和装置 |
CN108986800A (zh) * | 2017-05-31 | 2018-12-11 | 上海智觅智能科技有限公司 | 一种基于多处理器协调链表逻辑实时离线语音交互系统及方法 |
CN112037774A (zh) * | 2017-10-24 | 2020-12-04 | 北京嘀嘀无限科技发展有限公司 | 用于关键短语识别的系统和方法 |
CN112037774B (zh) * | 2017-10-24 | 2024-04-26 | 北京嘀嘀无限科技发展有限公司 | 用于关键短语识别的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1201285C (zh) | 2005-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pratap et al. | Wav2letter++: A fast open-source speech recognition system | |
US8566259B2 (en) | Method and system for parallel statistical inference on highly parallel platforms | |
CN1156820C (zh) | 使用词汇树的识别系统 | |
US9477925B2 (en) | Deep neural networks training for speech and pattern recognition | |
JP6346893B2 (ja) | ハイブリッドgpu/cpuデータ処理方法 | |
US6249761B1 (en) | Assigning and processing states and arcs of a speech recognition model in parallel processors | |
US20050159952A1 (en) | Pattern matching for large vocabulary speech recognition with packed distribution and localized trellis access | |
CN104137178B (zh) | 声学处理单元接口 | |
CN1201285C (zh) | 一种语音识别中的并行搜索方法 | |
CN111104124B (zh) | 基于Pytorch框架的卷积神经网络在FPGA上的快速部署方法 | |
CN105229625B (zh) | 用于语音识别的方法和声处理装置 | |
You et al. | Parallel scalability in speech recognition | |
CN117951346B (zh) | 面向向量数据库的混合加速架构 | |
CN106407184A (zh) | 用于统计机器翻译的解码方法、统计机器翻译方法及装置 | |
CN105340005B (zh) | 基于直方图获取有效hmm的预剪枝方案 | |
Ravishankar | Parallel implementation of fast beam search for speaker-independent continuous speech recognition | |
Wei et al. | Nn-stretch: Automatic neural network branching for parallel inference on heterogeneous multi-processors | |
Lin et al. | A multi-FPGA 10x-real-time high-speed search engine for a 5000-word vocabulary speech recognizer | |
US20020049582A1 (en) | Speech label accelerators and techniques for using same | |
US20210125032A1 (en) | Method and system for distributed neural network training | |
CN1318969C (zh) | 一种工作流引擎高效处理的方法 | |
CN113031952B (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
CN1204811A (zh) | 汉语语句切分的方法及其系统 | |
Asanovic et al. | Spoken natural language understanding as a parallel application | |
Youness et al. | A design space exploration methodology for allocating task precedence graphs to multi-core system architectures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050511 |