具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
分析前面介绍的二遍解码过程可以看出,为了提高多遍解码效率,优化一遍解码候选集合,控制二遍解码搜索网络规模是一种较为有效的方法。对响应速度较快的语音输入在二遍解码时采用较大的裁剪门限优化其搜索网络,确保在不占用过多解码时间基础上得到较高的识别率;而对响应速度较慢的解码则可以采用较小的裁剪门限以限定搜索网络规模,使得在不过度牺牲识别率的前提下提高系统的响应速度,避免用户长时间的等待。为此,本发明实施例语音识别方法及系统,首先采用简单的快速搜索算法在由声学模型和大规模不受限的语言模型构成的一遍解码识别网络的搜索空间对提取的简单声学特征进行粗略匹配,过滤不合理的识别结果以获取一遍解码候选项;然后根据解码延时状态以及一遍解码可信度自适应优化二遍解码搜索网络;最后在优化后的搜索空间上通过更复杂更精准的二遍搜索确定最优路径,并确保系统对语音输入的识别响应在可控延时内,从而可以在不影响原响应速度较快语音信号的识别性能的情况下,针对性地提高响应时间过慢数据的运算效率,并将系统整体响应时延控制在可接受的预设范围内,减少系统过长响应时间。
如图2所示,是本发明实施例语音识别方法的流程图,包括以下步骤:
步骤201,构建一遍解码识别网络。
上述一遍解码识别网络是由简单声学模型和大规模不受限的语言模型构成的初始搜索网络。
其中,所述声学模型主要用于模拟字符音特点,具体可以采用语音识别领域常用的基于转移概率和传输概率的HMM(Hidden Markov Model,隐马尔可夫)模型。考虑到在大词汇量连续语音识别中,词汇量的数量过于庞大,若是对每个字符都构建一个HMM模型,则模型数量太多,不利于数据存储及计算。因此,在实际应用中,可以仅对基本的发音单元,如音节或音素单元构建HMM模型。
其中,所述语言模型是为了更有效地表征语法及语义等知识,以弥补声学模型的不足,提高识别率。具体可以采用语音识别领域常用统计语言模型,利用统计概率的方式描述词和词之间的关系,即假设某个词wk出现的概率仅和其前n-1个词相关,记为
上述一遍解码识别网络的构建可以采用现有技术中的一些构建方法,利用声学模型将系统预置的大规模不受限的语言模型扩展成模型层的搜索网络。
步骤202,对接收的语音信号在一遍解码识别网络中搜索得到一遍解码候选项。
该过程是一个连续动态的处理过程,对用户输入的语音信号进行实时采集,当采集的语音数据达到预设时长时,将其送入识别队列,并记录该语音数据接收时刻。
一般来说,上述预设时长的长短会影响用户等待时间,长度越短,则等待时间越短。然而,在实际系统中,考虑到网络传输压力,该长度设置不能太短,比如可以设为200-500ms。
在进行一遍解码时,对上述识别队列中的每帧语音数据,首先提取其简单声学特征,然后在上述步骤201构建的一遍解码识别网络中搜索得到最优候选路径集合,具体搜索过程可以采用Viterbi Beam搜索算法。当然,也可以采用现有技术中的一些其它相关算法,对此本发明实施例不做限定。
另外,考虑到在真实环境中采集到的语音数据存在各种噪声干扰,若直接将其和在无噪声的干净环境中训练得到的声学模型匹配,则系统识别性能会受影响。因此,为了进一步提高系统的鲁棒性,还可以在进行一遍解码前,对采集的语音数据进行前端降噪处理。比如,首先利用端点检测技术去除多余的静音和非说话音,然后采用盲源分离技术实现噪声和语音的自动分离,为后续语音识别提供较为纯净的语音。当然,具体是否需要进行降噪处理、以及采用何种方式进行降噪处理,本发明实施例不做限定。
步骤203,判断所述一遍解码候选项是否满足一遍解码条件;如果是,则执行步骤208;否则,执行步骤204。
一般来说,对于高质量的语音输入,一遍解码通常可以得到较高的识别率,因而可以直接输出一遍解码的最优结果。而对某些复杂语音,一遍解码的响应时间已经过长甚至接近用户可接受的最大响应时限,因而对于这类语音,也可以直接输出一遍解码的识别结果,以避免二遍解码带来的过长等待时间。为此,在本发明实施例中,可以根据一遍解码时延或解码效果确定一遍解码候选项是否满一遍解码条件,以提前终止二遍解码,提高效率。
具体地,可以有以下几种情况:
(1)如果一遍解码延时大于预设的第一时间阈值,则确定满足一遍解码条件,执行步骤208;否则,执行步骤204。
(2)如果一遍解码延时小于或等于预设的第一时间阈值,在这种情况下,进一步根据解码效果判断是否满足一遍解码条件,如果是,则执行步骤208;否则,执行步骤204。
(3)综合考虑以上两种情况来确定执行步骤208,还是执行步骤204。
具体采用哪种判断条件可根据实际需要来设定,对此本发明实施例不做限定。
步骤204,根据一遍解码延时以及解码可信度对所述一遍解码候选项进行优化处理。
在现有技术中,二遍解码搜索空间的大小主要由一遍解码的参数N(最优历史路径)确定。在一遍解码过程中,通常会设置较大N(最优历史路径)值以保留足够路径,避免二遍解码无法生成正确识别结果。但现有技术这种方案会使得一遍解码得到的候选集合中可能存在大量的冗余信息,影响解码效率。
为此,在本发明实施例中,可以综合考虑解码延时和解码可信度来优化一遍解码得到的最优候选路径集合中的候选路径。具体地,可以通过自适应调整裁减门限优化二遍搜索空间,以保证在不影响原响应速度较快语音信号识别性能的情况下,针对性地提高响应时间过慢数据的运算效率,并将系统整体响应时延控制在可接受的预设范围内。
步骤205,根据优化处理后的一遍解码候选项,构建二遍解码识别网络。
在该步骤中,需要利用更精确的声学模型及更高阶的语言模型将优化处理后的一遍解码候选项组成的网格扩展成基于模型层的网络。具体构建过程与现有技术类似,在此不再详细说明。
步骤206,对接收的语音信号在二遍解码识别网络中进行搜索,得到二遍解码候选项。
在二遍解码过程中,可以提取更复杂精准的高维语音特征,然后在上述优化后的搜索空间中搜索最优路径。
步骤207,输出二遍解码得到的最优识别结果,即将二遍解码得到的最优路径作为最终的识别结果。
步骤208,输出一遍解码得到的最优识别结果,即将一遍解码得到的解码候选项中的最优候选项作为最终的识别结果。
需要说明的是,上述语音识别处理过程是一个连续动态的处理过程,在跟踪用户语音输入的同时,采集用户输入的语音信号,当采集得到的语音数据达到预设时长时,将其送入识别队列,并记录该语音数据接收时刻。同时,对该识别队列中的每个语音数据帧进行解码识别。
由此可见,本发明实施例语音识别方法,首先采用简单的快速搜索算法在由声学模型和大规模不受限的语言模型构成的一遍解码识别网络的搜索空间对提取的简单声学特征进行粗略匹配,过滤不合理的识别结果以获取一遍解码候选项;然后根据解码延时状态以及一遍解码可信度自适应优化二遍解码搜索网络;最后在优化后的搜索空间上通过更复杂更精准的二遍搜索确定最优路径,从而可以在不影响原响应速度较快语音信号的识别性能的情况下,针对性地提高响应时间过慢数据的运算效率,并将系统整体响应时延控制在可接受的预设范围内,减少系统过长响应时间。
如图3所示,是本发明实施例中一遍解码识别的一种流程图。
在该实施例中,一遍解码采用Viterbi Beam搜索算法,包括以下步骤:
步骤301,提取每帧语音数据中的有效语音特征。
由于接收的语音数据中依然存在大量与语音识别无关的冗余信息,直接对其识别将导致运算量和识别准确率的下降,为此,可以从上述语音数据中提取识别有效语音特征。比如,可以提取连续语音识别中的MFCC特征,对窗长25ms帧移10ms的每帧语音数据做短时分析得到MFCC参数及其一阶二阶差分,共计39维,将每帧语音数据量化为一39维特征序列。
步骤302,利用Viterbi Beam搜索算法,对提取的有效语音特征在一遍解码识别网络中搜索得到一遍解码候选项。
在一遍简单解码中,由于采用了相对简单的声学特征,其解码运算往往较快。而同时由于模型较为粗糙,不同路径之间的概率区分往往不太明显,为了保证不过早删减最优路径,可以保留较多的候选路径。具体来说,对tk时刻的语音数据,需要考察对应时间点上所有活跃节点,如图4所示,并保留每一节点最优N(比如N=3)条历史路径及概率。
前面提到,在本发明实施例中,可以根据一遍解码延时或者解码效果确定一遍解码候选项是否满足一遍解码条件。
图5示出了本发明实施例中是否输出一遍解码候选项一种具体流程图,包括以下步骤:
步骤501,统计一遍解码延时。
上述一遍解码延时可以通过计算所述语音信号中的最后一个语音段的最后1帧数据的解码延时来确定,具体公式如下:
t-(tE+ts*(NE-1));
其中,t为当前时间,tE为所述接收的语音信号的最后一个语音段的接收时刻,ts为语音信号处理时设置的帧移长度,NE为最后一个语音段所包括的语音帧总数。
步骤502,判断所述一遍解码延时是否大于预设的第一时间阈值;如果是,则执行步骤505;否则,执行步骤503。
上述第一时间阈值可根据实际应用需要来设定,比如用户一般可以接受的2秒时延等。如果当前语音数据帧解码延时大于所述第一时间阈值,则说明一遍解码过慢,不适合继续二遍解码,也就是说,此时得到的一遍解码候选项满足一遍解码条件。
步骤503,计算一遍解码的最优路径得分和次优路径得分的差值。
步骤504,判断所述差值是否大于预设的第一概率阈值;如果是,则执行步骤505;否则,执行步骤506。
上述第一概率阈值可根据实际应用环境来设定,比如在概率得分的Log域可设定该阈值为5,在概率得分差值的单位平均值大于该阈值时判定当前解码有效。如果得到的差值大于所述第一概率阈值,则说明一遍解码的最优路径很大可能是可靠的识别结果,也就是说,可以不用再进行二遍解码,此时得到的一遍解码候选项满足一遍解码条件,可以直接输出一遍解码的最优路径作为最终解码识别结果。
步骤505,输出一遍解码的最优识别结果。
步骤506,指示当前一遍解码结果不可靠,需要执行二遍解码。
当然,本发明实施例并不仅限定利用图5所示流程来判断一遍解码候选项是否满足一遍解码条件,可根据具体应用环境来确定,比如,也可以只根据一遍解码延时或解码效果来确定一遍解码候选项是否满足一遍解码条件。
前面提到,在本发明实施例中,可以根据一遍解码延时以及解码可信度,对所述一遍解码候选项进行优化处理。
如图6所示,是本发明实施例中对一遍解码候选项进行优化处理的一种具体流程,包括以下步骤:
步骤601,计算自适应于一遍解码延时的概率裁剪门限。
上述概率裁剪门限的设置主要用于剔除一遍解码得到的最优候选路径集合中不太可能的候选路径,一般来说,解码延时越大,则概率裁剪门限需要设置越小,以保证二遍解码识别网络尽可能紧凑,以提高解码效率。
为了进一步提高处理效率,在本发明实施例中,可以预先建立解码延时(可以是一个延时范围)与概率裁剪门限的对应关系,根据该对应关系确定自适应于一遍解码延时的概率裁剪门限。
当然,也可以采用基于模型的方式确定不同解码延时对应的概率裁剪门限。所述模型中的参数可以由系统预先在海量数据上训练得到。
比如,系统可以选择神经网络模型作为解码延时估计的模型结构,并预先从海量训练语音数据中获取(解码延时,裁剪门限)的参数对作为模型训练数据,随后通过传统的神经网络训练算法获取模型参数。
步骤602,选择计算得到的概率裁剪门限以及预设的裁剪门限阈值中的较小值作为网络优化裁剪门限。
上述裁剪门限阈值主要用于剪除一遍解码得到的最优候选路径集合中概率得分上不可能正确的路径,可根据应用需要来设置。
步骤603,删除一遍解码得到的最优候选路径集合中所有候选路径概率得分与最优路径概率得分差值大于所述网络优化裁剪门限的候选路径,比如将其设置为不活跃状态。
由图6所示流程可以看出,本发明实施例中,综合解码延时和解码概率得分对一遍解码得到的候选项进行优化,减小二遍搜索网络规模,从而在不影响原响应速度较快语音信号的识别性能的情况下,可以针对性地提高响应时间过慢数据的运算效率,并将系统整体响应时延控制在可接受的预设范围内。
需要说明的是,本发明并不仅限于上述优化方式,还可以采用其它方式对一遍解码得到的候选项进行优化,减小二遍搜索网络规模,对此不再一一举例。
如图7所示,是本发明实施例中二遍解码的一种流程图,包括以下步骤:
步骤701,初始化,设置当前语音段k=1,语音段中的语音数据帧i=1。
步骤702,获取第k个语音段k中的第i个语音数据帧。
步骤703,从第i个语音数据帧中提取声学特征。
在二遍解码中,可以采用复杂的高维特征以提高识别精度,为此,在本发明实施例中,可以选用识别效果较好的TANDEM特征。TANDEM技术是目前主流语音识别系统中提升性能的重要手段之一,它基于训练数据和其所对应的正确标注用有监督的方式训练神经网络的参数。
考虑到TANDEM特征的提取较为复杂,往往占用较大的运算量,特别是对于一些解码较快的语音,其特征提到占用的运算量比解码运算量还大。因此,在实际应用中,可以在一遍解码的同时即提取二遍解码所需的声学特征,以提高系统整体的识别效率。
步骤704,根据提取的声学特征对第k个语音段中的第i个语音数据帧进行解码,得到当前所有活跃节点的历史路径概率。
具体地,可以采用Viterbi Beam搜索算法进行解码,得到当前所有活跃节点的历史路径概率。
步骤705,判断当前语音数据帧是否为最后一帧;如果是,则执行步骤710;否则,执行步骤706。
步骤706,统计第i个语音数据帧的累计解码延时。
假设当前语音数据帧的生成时刻是:tk+ts*(i-1),其中tk为第k个语音段的接收时刻,而ts为语音信号处理时设置的帧移长度,比如将该帧移长度设置为10ms。则当前第i个语音数据帧的解码延时为:t-(tk+ts*(i-1)),其中t为系统当前时间。
需要说明的是,上述累计解码延时是指从所述语音数据帧的生成时刻到二遍解码时的时间,也就是说,该累计解码延时包含了前面提到的一遍解码延时。
步骤707,判断所述累计解码延时是否超过预设的第二时间阈值;如果是,则执行步骤709;否则,执行步骤708。
步骤708,获取下一语音数据帧,即i+1。然后,返回步骤703。
步骤709,将一遍解码的最优路径作为当前搜索识别结果。
步骤710,获取二遍解码的最优路径作为当前搜索识别结果。
需要说明的是,上述步骤706、707和709是可选步骤,也就是说,在二遍解码过程中,也可以不用考虑每个语音数据帧的累计解码延时,而最终输出二遍解码的最优识别结果。
当然,具体采用哪种方式可根据应用环境,综合考虑解码延时及识别准确率在该应用环境下的重要性来确定。
需要说明的是,上述第二时间阈值可以等于或大于前面所述的第一时间阈值。比如在第一时间阈值设定为2秒时,第二时间阈值可以设定为3秒,以便在用户可接受范围内给与更充足的解码时间,得到更精确的解码结果。
可见,本发明实施例中,在二遍解码识别过程中,如果当前累计的解码延时超过设定的阈值,则将一遍解码的最优路径作为当前搜索识别结果,从而可以针对原本超长响应时间的输入,快速反应给出较为合理识别结果,确保系统对语音输入的识别响应在可控延时内,避免了用户长时间的等待。
相应地,本发明实施例还提供一种语音识别系统,如图8所示,是该系统的一种结构示意图。
在该实施例中,所述系统包括:
第一网络构建单元801,用于构建一遍解码识别网络;
第一解码单元802,用于对接收的语音信号在所述一遍解码识别网络中搜索得到一遍解码候选项;
判断单元803,用于确定所述一遍解码候选项是否满足一遍解码条件;
结果输出单元804,用于在所述判断单元803确定所述一遍解码候选项满足一遍解码条件时,输出一遍解码得到的最优识别结果;
优化处理单元805,用于在所述判断单元803确定所述一遍解码候选项不满足一遍解码条件时,根据一遍解码延时以及解码可信度对所述一遍解码候选项进行优化处理;
第二网络构建单元806,用于根据优化处理后的一遍解码候选项,构建二遍解码识别网络;
第二解码单元807,用于对接收的语音信号在所述二遍解码识别网络中进行二遍解码,得到二遍解码候选项;
所述结果输出单元804,还用于输出二遍解码得到的最优识别结果。
上述判断单元803具体可以根据一遍解码延时或解码效果来确定一遍解码候选项是否满足一遍解码条件,相应地,所述判断单元803也可以有多种实现方式,比如,在判断单元803的一个实施例中,可以包括以下子单元:
一遍解码延时统计子单元,用于统计一遍解码延时;
第一确定子单元,用于在所述一遍解码延时统计子单元统计的一遍解码延时大于预设的第一时间阈值时,确定所述一遍解码候选项满足一遍解码条件;
差值计算子单元,用于在所述延时统计子单元统计的一遍解码延时小于或等于预设的第一时间阈值时,计算一遍解码的最优路径得分和次优路径得分的差值;
第二确定子单元,用于在所述差值计算子单元计算得到的差值大于预设的第一概率阈值时,确定所述一遍解码候选项满足一遍解码条件。
上述一遍延时统计子单元,具体可以按以下公式计算一遍解码延时:t-(tE+ts*(NE-1));
其中,t为当前时间,tE为所述接收的语音信号的最后一个语音段的接收时刻,ts为语音信号处理时设置的帧移长度,NE为最后一个语音段所包括的语音帧总数。
在判断单元803的另一个实施例中,也可以只包括上述一遍解码延时统计子单元和第一确定子单元。
在本发明系统中,所述优化处理单元805可以根据一遍解码延时以及解码可信度,对所述一遍解码候选项进行优化处理。比如,该优化处理单元805的一种优选实施例包括以下几个子单元:
裁剪门限计算子单元,用于计算自适应于所述一遍解码延时的概率裁剪门限;
选择子单元,用于选择所述裁剪门限计算子单元计算得到的概率裁剪门限以及预设的裁剪门限阈值中的较小值作为网络优化裁剪门限;
优化子单元,用于删除一遍解码得到的一遍解码候选项中概率得分与最优路径概率得分差值大于所述网络优化裁剪门限的候选项。
在具体应用中,上述裁剪门限计算子单元可以通过多种方式确定自适应于所述一遍解码延时的概率裁剪门限。比如:
(1)在所述语音识别系统中设置对应关系建立单元(未图示),用于预先建立解码延时与概率裁剪门限的对应关系。
相应地,所述裁剪门限计算子单元可以根据所述对应关系建立单元建立的解码延时与概率裁剪门限的对应关系确定自适应于所述一遍解码延时的概率裁剪门限。
(2)在所述语音识别系统中设置模型训练单元(未图示),用于预先训练得到概率裁剪门限模型。
相应地,所述裁剪门限计算子单元可以根据所述模型训练单元训练得到的概率裁剪门限模型确定自适应于所述一遍解码延时的概率裁剪门限。
当然,本发明实施例中的优化处理单元805并不仅限于上述优化处理方式,优化处理单元805还可以采用其它方式对一遍解码得到的候选项进行优化,减小二遍搜索网络规模,对此不再一一举例。
由此可见,本发明实施例语音识别系统,首先采用简单的快速搜索算法在由声学模型和大规模不受限的语言模型构成的一遍解码识别网络的搜索空间对提取的简单声学特征进行粗略匹配,过滤不合理的识别结果以获取一遍解码候选项;然后根据解码延时状态以及一遍解码可信度自适应优化二遍解码搜索网络;最后在优化后的搜索空间上通过更复杂更精准的二遍搜索确定最优路径,从而可以在不影响原响应速度较快语音信号的识别性能的情况下,针对性地提高响应时间过慢数据的运算效率,并将系统整体响应时延控制在可接受的预设范围内,减少系统过长响应时间。
如图9所示,是本发明实施例语音识别系统的另一种结构示意图。
与图8所示实施例的区别在于,在该实施例中,所述系统还进一步包括:
解码控制单元901,用于在所述第二解码单元807对接收的语音信号在二遍解码识别网络中进行二遍解码过程中,统计所述语音信号中当前语音数据帧的累计解码延时,并在当前语音数据帧的累计解码延时超过预设的第二时间域值时,通知所述第二解码单元807停止二遍解码,并通知所述结果输出单元804输出一遍解码得到的最优识别结果。
需要说明的是,上述累计解码延时是指从所述语音数据帧的生成时刻到二遍解码时的时间,也就是说,该累计解码延时包含了前面提到的一遍解码延时。所述解码控制单元901具体可以按以下公式计算第k个语音段中第i个语音数据帧解码延时:t-(tk+ts*(i-1));其中,t为当前时间,tk为第k个语音段的接收时刻,ts为语音信号处理时设置的帧移长度。
可见,本发明实施例的语音识别系统,在二遍解码识别过程中,如果当前累计的解码延时超过设定的阈值,则将一遍解码的最优路径作为当前搜索识别结果,从而可以针对原本超长响应时间的输入,快速反应给出较为合理识别结果,确保系统对语音输入的识别响应在可控延时内,避免了用户长时间的等待。
对于系统实施例而言,由于其基本相应于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。