首页 / 专利库 / 人工智能 / 剪枝 / 语音识别解码优化方法及装置

语音识别解码优化方法及装置

阅读:390发布:2020-05-08

专利汇可以提供语音识别解码优化方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 语音识别 解码优化方法及装置,该方法包括:基于最大堆确定解码网络中各语音 帧 的活跃信息单元;根据各语音帧的活跃信息单元得到解码路径。利用本发明,可以大大提高解码速度。,下面是语音识别解码优化方法及装置专利的具体信息内容。

1.一种语音识别解码优化方法,其特征在于,所述方法包括:
基于最大堆确定解码网络中各语音的活跃信息单元;
根据各语音帧的活跃信息单元得到解码路径。
2.根据权利要求1所述的方法,其特征在于,所述基于最大堆确定解码网络中各语音帧的活跃信息单元包括:
获取放置前一帧的活跃信息单元的第一最大堆;
通过顺序遍历所述第一最大堆各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元;
将当前帧的活跃信息单元放置到第二最大堆中;
释放所述第一最大堆。
3.根据权利要求2所述的方法,其特征在于,所述通过顺序遍历所述第一最大堆各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元包括:
顺序遍历所述第一最大堆中的各节点,得到所述节点中的前一帧的活跃信息单元在解码网络中指向的所有后续当前帧的信息单元以及所述当前帧的信息单元在当前帧的得分;
根据所述节点中的前一帧的活跃信息单元的总得分及所述当前帧的信息单元在当前帧的得分,计算得到所述当前帧的信息单元的总得分;
如果所述当前帧的信息单元的总得分大于设定的剪枝阈值,则将所述当前帧的信息单元作为当前帧的活跃信息单元;
如果所述当前帧的信息单元的总得分大于当前的最大得分,则更新所述最大得分及所述剪枝阈值。
4.根据权利要求2所述的方法,其特征在于,所述将当前帧的活跃信息单元放置到第二最大堆中包括:
依次将当前帧的各活跃信息单元作为当前待插入活跃信息单元;
将当前待插入活跃信息单元插入到第二最大堆中,并根据最大堆原则进行调整。
5.根据权利要求4所述的方法,其特征在于,所述将当前帧的活跃信息单元放置到第二最大堆中还包括:
如果当前帧的活跃信息单元数量大于所述第二最大堆的容量,则在所述第二最大堆插满后,从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元;
如果当前待插入活跃信息单元的总得分小于所述待替换活跃信息单元的总得分,则丢弃当前待插入活跃信息单元;
否则,用当前待插入活跃信息单元替换所述待替换活跃信息单元,并根据最大堆原则进行调整。
6.根据权利要求5所述的方法,其特征在于,所述从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元包括:
如果所述第二最大堆为满堆,则从所述第二最大堆最后一层子节点中随机选择一个活跃信息单元作为待替换活跃信息单元;否则,从所述第二最大堆最后一层子节点或最后一半子节点中随机选择一个活跃信息单元作为待替换活跃信息单元。
7.根据权利要求4至6任一项所述的方法,其特征在于,所述最大堆原则包括:同层内同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分。
8.一种语音识别解码优化装置,其特征在于,所述装置包括:
活跃信息单元确定模,用于基于最大堆确定解码网络中各语音帧的活跃信息单元;
路径生成模块,用于根据各语音帧的活跃信息单元得到解码路径。
9.一种计算机设备,其特征在于,包括:一个或多个处理器、存储器
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现如权利要求1至7任一项所述的方法。
10.一种可读存储介质,其上存储有指令,所述指令被执行以实现如权利要求1至7任一项所述的方法。

说明书全文

语音识别解码优化方法及装置

技术领域

[0001] 本发明涉及语音识别领域,具体涉及一种语音识别解码优化方法及装置。

背景技术

[0002] 语音识别是利用声学模型和语言模型将语音转成文字的过程,核心算法是对一个超级大的图进行广度搜索,搜索结束之后再进行回溯获得识别结果。与传统的广度搜索不同,语音识别的解码网络超级庞大,如果遍历所有的节点速度会非常慢,所以在广度搜索过程中还伴随着剪枝
[0003] 剪枝的本质是控制每一往前遍历的活跃信息单元(具体为活跃节点或者活跃边)的个数,常用的剪枝方法有直方图剪枝和最小堆剪枝等。
[0004] 最小堆剪枝,顾名思义就是将前一时刻的活跃信息单元放置在最小堆中,然后遍历该最小堆中的活跃信息单元生成当前时刻的活跃信息单元,并将当前时刻的活跃信息单元放置在新的最小堆中,同时释放前一时刻最小堆中的活跃信息单元。通过循环往复遍历前一时刻和当前时刻的最小堆活跃信息单元,整个解码就逐渐从图的开始遍历到图的结束,进而完成整个解码。
[0005] 最小堆在遍历过程中是以一种近似递减的顺序遍历活跃信息单元,即最小堆的下层元素值大于上层元素,但是该约束只局限在父节点和其子节点之间,同层内的节点大小关系不确定。所以在最小堆中,如果最小堆是满二叉树,如图1所示,则最大元素在最后一层;如果最小堆是完全二叉树,如图2所示,则最大元素在最后一层或倒数第二层,但是最坏情况下却在整个数组的中间位置,此外不少得分很低的元素也可能在最后一层,使得剪枝过程中很多得分较低的节点进入最小堆,这都会导致最小堆的剪枝能受限,进而会导致遍历很多得分很低的路径,影响解码效率。

发明内容

[0006] 本发明实施例提供一种语音识别解码优化方法及装置,以提高解码速度。
[0007] 为此,本发明提供如下技术方案:
[0008] 一种语音识别解码优化方法,所述方法包括:
[0009] 基于最大堆确定解码网络中各语音帧的活跃信息单元;
[0010] 根据各语音帧的活跃信息单元得到解码路径。
[0011] 可选地,所述基于最大堆确定解码网络中各语音帧的活跃信息单元包括:
[0012] 获取放置前一帧的活跃信息单元的第一最大堆;
[0013] 通过顺序遍历所述第一最大堆各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元;
[0014] 将当前帧的活跃信息单元放置到第二最大堆中;
[0015] 释放所述第一最大堆。
[0016] 可选地,所述通过顺序遍历所述第一最大堆各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元包括:
[0017] 顺序遍历所述第一最大堆中的各节点,得到所述节点中的前一帧的活跃信息单元在解码网络中指向的所有后续当前帧的信息单元以及所述当前帧的信息单元在当前帧的得分;
[0018] 根据所述节点中的前一帧的活跃信息单元的总得分及所述当前帧的信息单元在当前帧的得分,计算得到所述当前帧的信息单元的总得分;
[0019] 如果所述当前帧的信息单元的总得分大于设定的剪枝阈值,则将所述当前帧的信息单元作为当前帧的活跃信息单元;
[0020] 如果所述当前帧的信息单元的总得分大于当前的最大得分,则更新所述最大得分及所述剪枝阈值。
[0021] 可选地,所述将当前帧的活跃信息单元放置到第二最大堆中包括:
[0022] 依次将当前帧的各活跃信息单元作为当前待插入活跃信息单元;
[0023] 将当前待插入活跃信息单元插入到第二最大堆中,并根据最大堆原则进行调整。
[0024] 可选地,所述将当前帧的活跃信息单元放置到第二最大堆中还包括:
[0025] 如果当前帧的活跃信息单元数量大于所述第二最大堆的容量,则在所述第二最大堆插满后,从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元;
[0026] 如果当前待插入活跃信息单元的总得分小于所述待替换活跃信息单元的总得分,则丢弃当前待插入活跃信息单元;
[0027] 否则,用当前待插入活跃信息单元替换所述待替换活跃信息单元,并根据最大堆原则进行调整。
[0028] 可选地,所述从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元包括:
[0029] 如果所述第二最大堆为满堆,则从所述第二最大堆最后一层子节点中随机选择一个活跃信息单元作为待替换活跃信息单元;否则,从所述第二最大堆最后一层子节点或最后一半子节点中随机选择一个活跃信息单元作为待替换活跃信息单元。
[0030] 可选地,所述最大堆原则包括:同层内同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分。
[0031] 一种语音识别解码优化装置,所述装置包括:
[0032] 活跃信息单元确定模,用于基于最大堆确定解码网络中各语音帧的活跃信息单元;
[0033] 路径生成模块,用于根据各语音帧的活跃信息单元得到解码路径。
[0034] 可选地,所述活跃信息单元确定模块包括:
[0035] 获取模块,用于获取放置前一帧的活跃信息单元的第一最大堆;
[0036] 遍历模块,用于通过顺序遍历所述第一最大堆中的各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元;
[0037] 插入模块,用于将当前帧的活跃信息单元放置到第二最大堆中,并释放所述第一最大堆。
[0038] 可选地,所述遍历模块包括:
[0039] 信息获取单元,用于顺序遍历所述第一最大堆中的各节点,得到所述节点中的前一帧的活跃信息单元在解码网络中指向的所有后续当前帧的信息单元以及所述当前帧的信息单元在当前帧的得分;
[0040] 计算单元,用于根据所述节点中的前一帧的活跃信息单元的总得分及所述当前帧的信息单元在当前帧的得分,计算所述当前帧的信息单元的总得分;
[0041] 判断单元,用于在所述当前帧的信息单元的总得分大于设定的剪枝阈值时,将所述当前帧的信息单元作为当前帧的活跃信息单元;
[0042] 更新单元,用于在所述当前帧的信息单元的总得分大于当前的最大得分时,更新所述最大得分及所述剪枝阈值。
[0043] 可选地,所述插入模块包括:
[0044] 待插入信息获取单元,用于依次将当前帧的各活跃信息单元作为当前待插入活跃信息单元;
[0045] 插入调整单元,用于将当前待插入活跃信息单元插入到第二最大堆中,并根据最大堆原则进行调整。
[0046] 可选地,所述插入模块还包括:
[0047] 选择单元,用于在当前帧的候选活跃信息单元数量大于所述第二最大堆的容量时,在所述第二最大堆插满后,从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元;
[0048] 替换调整单元,用于在当前待插入活跃信息单元的总得分小于所述待替换活跃信息单元的总得分时,丢弃当前待插入活跃信息单元;否则,用当前待插入活跃信息单元替换所述待替换活跃信息单元,并根据最大堆原则进行调整。
[0049] 可选地,所述选择单元,具体用于在所述第二最大堆为满堆时,从所述第二最大堆最后一层子节点中随机选择一个活跃信息单元作为待替换活跃信息单元;否则,从所述第二最大堆最后一层子节点或最后一半子节点中随机选择一个活跃信息单元作为待替换活跃信息单元。
[0050] 可选地,所述最大堆原则还包括:同层内同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分。
[0051] 一种计算机设备,包括:一个或多个处理器、存储器
[0052] 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现前面所述的方法。
[0053] 一种可读存储介质,其上存储有指令,所述指令被执行以实现前面所述的方法。
[0054] 本发明实施例提供的语音识别解码优化方法及装置,基于最大堆确定解码网络中各语音帧的活跃信息单元,相比现有技术中采用最小堆保存活跃信息单元,可以在提高剪枝能力的同时,使得解码速度大大加快。
[0055] 进一步地,通过顺序遍历放置前一帧的活跃信息单元的最大堆中的各节点,可以更快获得一个较大的剪枝阈值,极大地避免了当前帧中得分过低的节点作为候选活跃信息单元进入最大堆中。
[0056] 进一步地,还可以在将当前帧的候选活跃信息单元插入最大堆的过程中,始终使同一父节点下的两个子节点中的左子节点的得分大于等于右子节点的得分,这样,在确定下一帧的候选活跃信息单元时,可以在一定程度上使对最大堆的遍历顺序更加有序,因为对最大堆采取顺序遍历的方式,即从左到右逐层遍历,从而可以总是先遍历得分较大的子节点,进一步强化了剪枝能力。
[0057] 进一步地,在当前帧的候选活跃信息单元数量大于最大堆的容量的情况下,通过在插入过程中用得分较高的候选活跃信息单元替换掉最大堆中得分较低的活跃信息单元,可以进一步起到剪枝的作用,提升剪枝能力及效果。附图说明
[0058] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0059] 图1是现有技术中满二叉树示例;
[0060] 图2是现有技术中完全二叉树示例;
[0061] 图3是本发明实施例语音识别解码优化方法的一种流程图
[0062] 图4是本发明实施例中最大堆的一个示例;
[0063] 图5是本发明实施例中基于最大堆确定解码网络中各语音帧的活跃信息单元的流程图;
[0064] 图6是本发明实施例中最大堆插满后通过替换方式插入剩余活跃信息单元的流程图;
[0065] 图7是本发明实施例中最大堆的另一个示例;
[0066] 图8是本发明实施例中子节点保持顺序关系的最大堆示例;
[0067] 图9、图10、图11、图12是本发明实施例中在将活跃信息单元插入最大堆的过程中使左、右子节点保持有序关系的调整示例;
[0068] 图13是本发明实施例语音识别解码优化装置的结构框图
[0069] 图14是本发明实施例语音识别解码优化装置中活跃信息单元确定模块的结构框图;
[0070] 图15是根据一示例性实施例示出的用于语音识别解码优化方法的装置的框图;
[0071] 图16是本发明实施例中服务器的结构示意图。

具体实施方式

[0072] 为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
[0073] 语音识别系统的模型通常由声学模型和语言模型两部分组成,分别对应于语音到音节或音素或状态概率的计算,字到字概率的计算。语音识别主要有以下两方面的工作:(1)构建一个解码网络;(2)从解码网络中寻找与声音最匹配的路径。其中,构建解码网络是由单词级网络展开成音素网络,再展开成状态网络。语音识别的过程就是在解码网络中搜索一条最佳路径,语音对应这条路径的概率最大,该过程称为解码过程。
[0074] 需要说明的是,解码网络是一个有向图,在该有向图中包含语音识别相关的声学信息和语言信息,这些信息称为有效信息,所述有效信息可以在有向图的边上或点上,所述边或点代表的含义可以是声学中的三音子或者声学状态或者词。
[0075] 由于语音识别的解码网络非常庞大,如果遍历所有节点会导致识别异常缓慢,所以整个解码是带剪枝操作的广度搜索。通过该搜索,找到全局最优路径。针对有效信息在点上的解码网络,在每一帧往下遍历的过程中,通过剪枝保留下来的节点称为活跃节点;针对有效信息在边上的解码网络,在每一帧往下遍历的过程中,通过剪枝保留下来的边称为活跃边。
[0076] 为了描述方便,在后续描述中,将所述活跃边和所述活跃节点统一用活跃信息单元来描述。
[0077] 本发明实施例提供一种语音识别解码优化方法及装置,利用最大堆剪枝,得到各语音帧的活跃信息单元,进而得到解码路径,完成解码过程。所述最大堆剪枝是指维护活跃信息单元采用的数据结构为最大堆。
[0078] 如图3所示,是本发明实施例语音识别解码优化方法的一种流程图,包括以下步骤:
[0079] 步骤101,基于最大堆确定解码网络中各语音帧的活跃信息单元。
[0080] 最大堆是一个完全二叉树结构,而且父节点的键值总是大于或等于其任何一个子节点,该约束只局限在父节点和其子节点之间,同层内的节点大小关系没有限定。
[0081] 如图4所示,是本发明实施例中最大堆的一个示例,图中圆圈内的数字表示相应节点的得分。
[0082] 步骤102,根据各语音帧的活跃信息单元得到解码路径。
[0083] 在本发明实施例中,利用最大堆确定各语音帧的活跃信息单元,从而可以得到解码网络中的各解码路径,然后计算各解码路径的得分,找到得分最高的解码路径即为最佳路径,根据该最佳路径即可得到语音对应的单词。
[0084] 在利用最大堆确定解码网络中各语音帧的活跃信息单元时,可以通过遍历前一帧对应的最大堆中的活跃信息单元确定当前帧的活跃信息单元。整个遍历过程中,前一帧对应的最大堆可以认为是已知的,是上一次迭代生成的,针对当前迭代来说它已经存在,当前迭代完成之后,前一帧对应的最大堆被释放。当前帧对应的最大堆在当前迭代开始之前是空的,遍历完之后是非空的。对于起始帧,将其各信息单元放入第一最大堆中,对于后续各语音帧,重复上述迭代过程。
[0085] 如图5所示,是本发明实施例中基于最大堆确定解码网络中各语音帧的活跃信息单元的流程图,包括以下步骤:
[0086] 步骤201,获取放置前一帧的活跃信息单元的第一最大堆。
[0087] 在本发明实施例中,利用两个最大堆,依次控制每一帧的活跃信息单元的个数,为了描述方便,将放置前一帧的活跃信息单元的最大堆称为第一最大堆,将放置当前帧的活跃信息单元的最大堆称为第二最大堆。其中,前一帧和当前帧是相对当前时刻的语音帧,依此类推,相对当前时刻的当前帧即为相对下一时刻的前一帧。
[0088] 放置前一帧的活跃信息单元的第一最大堆是指该第一最大堆中保存的是已经通过剪枝后保留下来的前一帧的活跃信息单元,第一最大堆中的每个节点对应一个前一帧的活跃信息单元。
[0089] 当然,对于起始帧,也就是说,如果所述前一帧是起始帧,则通过最大堆原则将起始帧的活跃信息单元放置到所述第一最大堆中,从而得到放置所述起始帧的活跃信息单元的第一最大堆。起始帧的活跃信息单元只有解码网络的初始节点,通常有一个或多个初始节点。
[0090] 在现有技术中,创建最大堆通常过程如下:
[0091] 先创建一个空的最大堆,然后根据元素一个一个去插入节点。
[0092] 最大堆的插入操作可以简单看成是节点上浮。在向最大堆中插入一个节点时必须满足完全二叉树的标准,被插入节点的位置是固定的,而且要满足父节点键值不小于子节点键值,因此在插入节点后需要调整父节点和子节点的相互位置关系,以使其满足最大堆的约束条件。
[0093] 最大堆的容量可以预先设置。
[0094] 在本发明实施例中,将起始帧的各活跃信息单元依次插入第一最大堆中,并进行相应的调整。
[0095] 需要说明的是,通常解码网络的初始节点一般只有一个或者几十个,不会超过最大堆的容量。
[0096] 步骤202,通过顺序遍历所述第一最大堆各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元。
[0097] 与基于最小堆进行剪枝的倒序遍历方式不同,在本发明实施例中,采用顺序遍历的方式。
[0098] 例如,图4所示的最大堆中,顺序遍历的顺序为:100->45->50->35->30->40->20->1->2->3->4->5->25->10->15。
[0099] 具体地,从所述第一最大堆中第0个节点遍历到最后一个节点。每个节点中的活跃信息单元都代表解码网络中的一个活跃节点或一个活跃边,在活跃信息单元中维护了从解码网络初始节点到当前活跃信息单元的一个总得分。获取该活跃信息单元在解码网络中指向的所有后续信息单元以及后续信息单元在当前帧的得分,所述得分是指声学得分;对于每一个当前帧的信息单元,其得分包括两部分,分别为:该当前帧的信息单元在当前帧的得分、以及解码网络中与该当前帧的信息单元相邻的前一帧的信息单元的总得分,也就是说,将所述当前帧的信息单元在当前帧的得分加上解码网络中与该当前帧的信息单元相邻的前一帧的活跃信息单元的总得分,得到所述当前帧的信息单元的总得分。如果后续当前帧的信息单元的总得分大于设定的剪枝阈值,则将该后续当前帧的信息单元作为当前帧的活跃信息单元。另外,如果该后续当前帧的信息单元的总得分大于当前的最大得分,则更新所述最大得分和所述剪枝阈值,即将该后续当前帧的信息单元的总得分作为新的最大得分,并增大剪枝阈值。
[0100] 需要说明的是,所述当前帧的信息单元是指解码网络中对应当前帧的有效信息在有向图中的边或点。
[0101] 另外,所述剪枝阈值的初始值可以根据当前最大得分及剪枝的力度来设定。
[0102] 继续以图4所示的最大堆为例,假定剪枝阈值的初始值设为(当前最大得分Max-100),在每次遍历开始之前,重置当前最大得分Max。
[0103] 假设遍历的当前节点对应的是得分为100的活跃信息单元,其有三个后续信息单元,得分分别为5,10,20,则三个后续信息单元的总得分分别为105,110,120。三个后续信息单元的总得分均大于剪枝阈值,因此可以将这些信息单元作为活跃信息单元,将它们放入第二最大堆中。并且修改剪枝阈值为120-100=20。
[0104] 按照上述流程依次遍历第一最大堆中的其它节点。当遍历到得分为1的活跃信息单元时,其有两个后续信息单元,得分分别为10,30,则这两个后续信息单元的总得分分别为11和31。将总得分为31的信息单元作为活跃信息单元,将其放入第二最大堆中。
[0105] 可见,利用最大堆并采用顺序遍历方式,可以在遍历第一个节点(即图4中总得分为100的活跃信息单元)的时候就可以确定合适的剪枝阈值,避免后续得分较小的信息单元进入第二最大堆。而如果利用最小堆来遍历,剪枝阈值的能力就会减弱,可能会将得分为1的后续信息单元引入最小堆中,从而导致遍历很多得分很低的路径。
[0106] 相比最小堆的倒序遍历方式,本发明实施例的方案可以在一开始就确定一个很大(不一定是最大)的剪枝阈值,相比现有技术中最小堆的遍历,利用最大堆可以更快地获得当前时刻的最大得分,从而大大减少得分较低的活跃信息单元进入堆中,大大加快了解码速度。通过实验表明,在极端情况下,最大堆和最小堆遍历的活跃信息单元个数差异可达3倍以上。
[0107] 步骤203,将当前帧的活跃信息单元放置到第二最大堆中。
[0108] 在将当前帧的活跃信息单元放入第二最大堆中时,可以按照常规方式依次将当前帧的各活跃信息单元作为当前待插入活跃信息单元;将当前待插入活跃信息单元插入到第二最大堆中,并根据最大堆原则进行调整。
[0109] 在插入时,是由底而上,先将要插入的活跃信息单元放在最底层的最右边的节点位置上,然后将其依次向上调整到合适位置,然后插入下一个节点。一层一层地插入,直至到达根节点。
[0110] 如果当前帧的活跃信息单元数量大于第二最大堆的容量,则在所述第二最大堆插满后,还会有剩余的活跃信息单元,这些活跃信息单元中,可能会有一些活跃信息单元的总得分比已插入第二最大堆中的活跃信息单元的总得分要高,为了能够利用最大堆筛选掉得分较低的活跃信息单元,在本发明实施例中,可以通过替换的方式将剩余的当前帧的活跃信息单元中得分较高的活跃信息单元插入第二最大堆中,具体过程如后面图6所示。
[0111] 步骤204,释放所述第一最大堆。
[0112] 需要说明的是,上述步骤203和步骤204的执行没有时间上的先后顺序要求,可以同步执行,也可以先执行其中任意一个步骤,然后再执行另外一个步骤。
[0113] 需要说明的是,在实际应用中,第一最大堆和第二最大堆的容量需要预先设定,而且保持一致,比如,可以是1000、5000等。
[0114] 如图6所示,是本发明实施例中最大堆插满后通过替换方式插入剩余活跃信息单元的流程图,包括以下步骤:
[0115] 步骤301,获取当前待插入活跃信息单元。
[0116] 步骤302,从第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元。
[0117] 考虑到实际应用中硬件实现上计算的方便性及数据存储能力的大小,最大堆的容量会有一定的限制,而且最大堆容量的不同可能会使最大堆为满堆或非满堆。所述满堆,是指最后一行是满元素的情况,如图4所示;所述非满堆,是指最后一行是非满元素的情况,如图7所示。
[0118] 针对上述不同情况,在选择待替换活跃信息单元时,可以基于以下方式:
[0119] 如果第二最大堆为满堆,则从所述第二最大堆最后一层子节点中随机选择一个活跃信息单元作为待替换活跃信息单元。虽然这样选择不能保证选出的待替换活跃信息单元是堆中得分最小的活跃信息单元,但基本不会影响活跃信息单元的筛选效果。
[0120] 如果第二最大堆为非满堆,则从所述第二最大堆最后一层子节点(如图7中节点25、3、4、1、2)或最后一半子节点(如图7中节点25、3、4、1、2、20)中随机选择一个活跃信息单元作为待替换活跃信息单元。
[0121] 可以理解的是,在插入其他剩余的活跃信息单元时,可以从当前选择的待替换活跃信息单元之后依次选择待替换的活跃信息单元。
[0122] 步骤303,判断当前待插入活跃信息单元的总得分是否小于所述待替换活跃信息单元的总得分;如果是,则执行步骤304;否则,执行步骤305。
[0123] 步骤304,丢弃当前待插入活跃信息单元;然后执行步骤306。
[0124] 步骤305,用当前待插入活跃信息单元替换所述待替换活跃信息单元,并根据最大堆原则进行调整。
[0125] 步骤306,判断是否还有待插入活跃信息单元;如果是,则执行步骤301;否则结束。
[0126] 通过上述过程,即可将当前帧的活跃信息单元中得分最高的前n个节点插入到第二最大堆中。
[0127] 进一步地,在本发明方法另一实施例中,在将活跃信息单元插入最大堆的过程中,还可以使每个父节点下的两个子节点保持有序关系,即:同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分,如图8所示。这样处理可以在一定程度上使后续对该最大堆遍历顺序更加有序,进一步强化剪枝能力。
[0128] 下面结合图9至图12进一步说明本发明实施例中在将活跃信息单元插入最大堆的过程中使左、右子节点保持有序关系的调整示例。
[0129] 如图9所示,插入位置是左子节点c,此时有以下两种情况:如果c小于等于其父节点a,则无需调整;如果c大于其父节点a,将c与其父节点a交换位置。
[0130] 如图10所示,插入位置是右子节点d,首先比较d与属于同一父节点的左子节点c的大小;如果c大于等于d,则无需调整;如果c小于d,则将d与c交换位置,交换位置后,d为左子节点,c为右子节点;
[0131] 然后判断左子节点d是否可以往上移动,如果d大于其父节点a,则将d与其父节点a交换位置,因为a肯定大于等于b,所以d也大于b,仍然满足左子节点大于等于右子节点的要求,此外根据最大堆的约束条件,a肯定大于等于c,所以a交换到下面一层也满足左子节点大于等于右子节点的要求。
[0132] 如图11所示,插入位置是左子节点e,如果e小于等于其父节点b,则无需调整;否则将e与其父节点b交换位置;交换完成之后判断e与其属于同一父节点的左子节点a的大小;如果a大于等于e,则无需调整;否则将e再与左子节点a交换位置,由于插入之前满足左子节点大于等于右子节点的要求,因此e大于c和d,e与a交换位置后不需要再进行调整。
[0133] 如图12所示,插入位置是右子节点f。首先判断f与属于同一父节点的左子节点e的大小;如果e大于等于f,则无需调整;否则将f与e交换位置。交换完成之后再判断f是否需要往上一层调整。如果其父节点b大于等于f,则无需调整;否则将f与其父节点b交换位置。交换完成之后再判断f与左子节点a的大小,如果a大于等于f,则无需调整,否则再将f与左子节点a交换位置。
[0134] 可见,不论插入位置属于上述哪种情况,为了保证同层内同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分,在插入时,如果当前插入位置是右子节点的位置,则先与左子节点进行比较,确定是否需要与所述左子节点交换位置;如果需要交换,则交换完成之后继续从左子节点的位置继续往判断是否需要向上一层移动。重复上面的步骤,直到不能向上移动。
[0135] 本发明实施例提供的语音识别解码优化方法,基于最大堆确定解码网络中各语音帧的活跃信息单元,相比现有技术中采用最小堆保存活跃信息单元,可以在提高剪枝能力的同时,使得解码速度大大加快。
[0136] 进一步地,通过顺序遍历放置前一帧的活跃信息单元的最大堆,可以更快获得一个较大的剪枝阈值,极大地避免了当前帧中得分过低的节点作为候选活跃信息单元进入最大堆中。
[0137] 进一步地,在将当前帧的候选活跃信息单元插入最大堆的过程中,始终使同一父节点下的两个子节点中的左子节点的得分大于等于右子节点的得分,这样,在确定下一帧的候选活跃信息单元时,可以在一定程度上使对最大堆的遍历顺序更加有序,因为对最大堆采取顺序遍历的方式,即从左到右逐层遍历,从而可以总是先遍历得分较大的子节点,进一步强化了剪枝能力。
[0138] 进一步地,在当前帧的候选活跃信息单元数量大于最大堆的容量的情况下,通过在插入过程中用得分较高的候选活跃信息单元替换掉最大堆中得分较低的活跃信息单元,可以进一步起到剪枝的作用,提升剪枝能力及效果。
[0139] 相应地,本发明实施例还提供一种语音识别解码优化装置,如图13所示,是该装置的一种结构框图。
[0140] 在该实施例中,所述语音识别解码优化装置包括:
[0141] 活跃信息单元确定模块701,用于基于最大堆确定解码网络中各语音帧的活跃信息单元;
[0142] 路径生成模块702,用于根据各语音帧的活跃信息单元得到解码路径。
[0143] 其中,活跃信息单元确定模块701的一种具体结构如图14所示,包括以下各模块:
[0144] 获取模块711,用于获取放置前一帧的活跃信息单元的第一最大堆;
[0145] 遍历模块712,用于通过顺序遍历所述第一最大堆中的各节点中的前一帧的活跃信息单元确定当前帧的活跃信息单元;
[0146] 插入模块713,用于将当前帧的活跃信息单元放置到第二最大堆中,并释放所述第一最大堆。
[0147] 其中,所述遍历模块712包括以下各单元:
[0148] 信息获取单元,用于顺序遍历所述第一最大堆中的各节点,得到所述节点中的前一帧的活跃信息单元在解码网络中指向的所有后续当前帧的信息单元以及所述当前帧的信息单元在当前帧的得分;
[0149] 计算单元,用于根据所述节点中的前一帧的活跃信息单元的总得分及所述当前帧的信息单元在当前帧的得分,计算所述当前帧的信息单元的总得分;
[0150] 判断单元,用于在所述当前帧的信息单元的总得分大于设定的剪枝阈值时,将所述当前帧的信息单元作为当前帧的活跃信息单元;
[0151] 更新单元,用于在所述当前帧的信息单元的总得分大于当前的最大得分时,更新所述最大得分及所述剪枝阈值。
[0152] 其中,所述插入模块713的一种具体结构包括以下各单元:
[0153] 待插入信息获取单元,用于依次将当前帧的各活跃信息单元作为当前待插入活跃信息单元;
[0154] 插入调整单元,用于将当前待插入活跃信息单元插入到第二最大堆中,并根据最大堆原则进行调整。
[0155] 进一步地,所述插入模块713还可包括以下各单元:
[0156] 选择单元,用于在当前帧的候选活跃信息单元数量大于所述第二最大堆的容量时,在所述第二最大堆插满后,从所述第二最大堆中选择一个活跃信息单元作为待替换活跃信息单元;
[0157] 替换调整单元,用于在当前待插入活跃信息单元的总得分小于所述待替换活跃信息单元的总得分时,丢弃当前待插入活跃信息单元;否则,用当前待插入活跃信息单元替换所述待替换活跃信息单元,并根据最大堆原则进行调整。
[0158] 上述选择单元在所述第二最大堆为完全堆时,每次可以从所述第二最大堆最后一层子节点中随机选择一个活跃信息单元作为待替换活跃信息单元;在所述第二最大堆为非完全堆时,每次可以从所述第二最大堆最后一层子节点或最后一半子节点中随机选择一个活跃信息单元作为待替换活跃信息单元。
[0159] 需要说明的是,在实际应用中,所述插入模块713在将活跃信息单元插入最大堆的过程中,插入和调整的操作可以按照常规的插入及调整方式进行,保证下层同一父节点下的两个子节点的得分始终小于上层其父节点的得分。进一步地,还可以使同层内同一父节点下的两个子节点中,左子节点的得分始终大于等于右子节点的得分,以使便在一定程度上使后续对该最大堆遍历顺序更加有序,进一步强化剪枝能力。
[0160] 本发明实施例提供的语音识别解码优化装置,基于最大堆确定解码网络中各语音帧的活跃信息单元,相比现有技术中采用最小堆保存活跃信息单元,可以在提高剪枝能力的同时,使得解码速度大大加快。
[0161] 进一步地,通过顺序遍历放置前一帧的活跃信息单元的最大堆中的各节点,可以更快获得一个较大的剪枝阈值,极大地避免了当前帧中得分过低的节点作为候选活跃信息单元进入最大堆中。
[0162] 进一步地,还可以在将当前帧的候选活跃信息单元插入最大堆的过程中,始终使同一父节点下的两个子节点中的左子节点的得分大于等于右子节点的得分,这样,在确定下一帧的候选活跃信息单元时,可以在一定程度上使对最大堆的遍历顺序更加有序,因为对最大堆采取顺序遍历的方式,即从左到右逐层遍历,从而可以总是先遍历得分较大的子节点,进一步强化了剪枝能力。
[0163] 进一步地,在当前帧的候选活跃信息单元数量大于最大堆的容量的情况下,通过在插入过程中用得分较高的候选活跃信息单元替换掉最大堆中得分较低的活跃信息单元,可以进一步起到剪枝的作用,提升剪枝能力及效果。
[0164] 图15是根据一示例性实施例示出用于语音识别解码优化方法的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0165] 参照图15,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/O)的接口812,传感器组件814,以及通信组件816。
[0166] 处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理部件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0167] 存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0168] 电力组件806为装置800的各种组件提供电力。电力组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
[0169] 多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0170] 音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0171] I/O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和定按钮。
[0172] 传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器压力传感器或温度传感器。
[0173] 通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。
在一个示例性实施例中,所述通信部件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0174] 在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程阵列(FPGA)、控制器微控制器微处理器或其他电子元件实现,用于执行上述方法。
[0175] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述按键误触纠错方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0176] 本发明还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行上述本发明方法实施例中的全部或部分步骤。
[0177] 图16是本发明实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
[0178] 服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
[0179] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0180] 应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
[0181] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈