掌桥专利:专业的专利平台
掌桥专利
首页

加速解码方法、装置、设备和介质

文献发布时间:2024-05-31 01:29:11


加速解码方法、装置、设备和介质

技术领域

本申请涉及语音识别技术领域,特别是涉及到一种加速解码方法、装置、设备和介质。

背景技术

在语音唤醒和命令词识别时,除了网络模型速度要快,对结果的解码速度也要快才能保证设备智能语音设备实时处理。解码指的是将神经网络输出的结果转化为命令词的过程。命令词识别,需要定位出命令词的左右时间边界才能准确对其进行识别。窗口过小或过大,均会影响命令词最终得分。由于ctc解码算法对序列任务不需要对齐且具有快速、节省内存等优势,一般的嵌入式设备上的语音识别算法一般采用ctc解码算法,一般的ctc解码算法是按照前向算法计算路径得分。流式识别时对语音识别网络输出的结果进行缓存,形成是一个 T

发明内容

本发明的主要目的为提供一种加速解码方法、装置、设备和介质,旨在加速命令词识别的解码速度以及准确识别出命令词左右时间边界。

第一方面,本申请实施例提供一种加速解码方法,所述方法包括:

获取解码矩阵;其中,所述解码矩阵是一个T

基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界;

将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

进一步的,所述基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤包括:

在所述左时间边界左侧的一定范围内选取一边界作为第二左时间边界;

将所述第二左时间边界到所述右时间边界的范围作为解码范围;

基于所述解码范围对命令词按照解码方式进行打分。

进一步的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界的步骤之后,所述方法还包括:

判断所述命令词序的最大乘积得分是否大于预设的阈值;

若小于,则跳过ctc解码;

若大于或等于,则执行将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤。

进一步的,设命令词建模单元长度为M,命令词第一个建模单元为w1,命令词第二个建模单元为w2,...,命令词第M个建模单元为WM,h(t,k)表示动态规划递推到时间到t命令词到wk时乘积得分的最大值,pos(t,k)表示到达(t,k)位置乘积得分的最大值是由前一步哪个位置得来的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分的步骤包括:

令初始值h(1,1) = logits(1,w1);

令t=2;

将t的值将代入公式h(t, 1) = max(h(t-1, 1), logits(t, w1 ));

令t=t+1;

返回将t的值将代入h(t, 1) = max(h(t-1, 1), logits(t, w1 ))的步骤,直到t=T,计算得出h(T, 1);

令k=2,将k的值代入公式 h(k, k) = h(k-1, k-1)

令t=k+1;

将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

更新位置pos(t,k) ;若最大值是h(t-1, k) ,则位置为(t-1,k);若最大值是h(t-1, k-1) ,则位置为(t-1, k-1);

令t=t+1;

返回将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

令k=k+1;

返回将k的值代入公式h(k, k) = h(k-1, k-1)

其中, logits为ctc输出的建模单元的概率值组成的解码矩阵。

进一步的,所述同时按照回溯算法找出命令词的左时间边界的步骤包括:

由pos(T,M)出发,依次往前回溯,直到pos(t,2)再做回溯时,(t,k)中 k=1时的t值,即为左时间边界。

进一步的,所述获取解码矩阵的步骤之前,还包括:

将语音识别神经网络每一时刻输出的结果依次缓存;其中,所述语音识别神经网络每一时刻输出各类建模单元的概率值;

实时获取预设时间长度的所述结果构建所述解码矩阵;其中,所述预设时间长度为解码缓存长度。

第二方面,本申请实施例提供一种加速解码装置,所述装置包括:

获取模块,用于获取解码矩阵;其中,所述解码矩阵是一个T

左时间边界确定模块,用于基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界;

打分模块,用于将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

进一步的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界之后,还包括:

判断所述命令词序的最大乘积得分是否大于预设的阈值;

若小于,则跳过ctc解码;

若大于或等于,则执行将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

第三方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述的加速解码方法步骤。

第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的加速解码方法的步骤。

有益效果:

本申请实施例提供的加速解码方法,通过动态规划算法,一次计算出左时间边界,只需做一次ctc解码即可计算出命令词的得分,大幅减少了ctc解码的次数。另外,考虑了命令词的顺序进行最大乘积得分计算,左时间边界定位更加准确。而目前方法一般只取最大值做乘积未考虑命令词内建模单元顺序,左时间边界定位准确率较本申请实施例提供的方式低。一般M非常小,命令词很短,T时间由于命令词属于短语音,也较短,因此可在M

附图说明

图1为本发明一实施例提供的加速解码方法的流程示意图;

图2为本发明一实施例提供的前向算法动态规划时的路径递推图;

图3为本发明一实施例提供的加速解码装置的结构示意图;

图4是本发明一实施例提供的计算机设备的结构示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“上述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件、模块、模块和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、模块、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一模块和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

参照图1,本发明实施例提供一种加速解码方法,所述方法包括步骤S1-S3:

S1、获取解码矩阵;其中,所述解码矩阵是一个T

在步骤S1中,所述建模单元可以是拼音、字或者英文等,根据实际需求设置即可。以建模单元为汉字为例,命令词序为:打 开 风 扇,则解码矩阵记录的是每一时刻打、开、风、扇这四个字的概率值。

S2、基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界。

在步骤S2中,以建模单元为汉字为例,对于命令词打开风扇,计算命令词序的最大乘积得分就是计算出 打 开 风 扇 顺序在解码矩阵中的最大乘积得分。目前现有方法一般只取最大值做乘积未考虑命令词内建模单元顺序,左边界定位准确率较低,而本申请考虑了命令词的顺序进行最大乘积得分计算,左边界定位更准确。

S3、将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

在步骤S3中,在获取解码矩阵之前,还包括将语音识别神经网络每一时刻输出的结果依次缓存,解码矩阵中的T时刻即是缓存时的当前时刻,由于将每个时刻的语音识别神经网络输出结果放到结果缓存时,右时间边界是依次增加的,故只需要通过步骤S3的方式定位出命令词的左时间边界即可,将缓存时的当前时刻作为右时间边界可以省滤掉右时间边界的查找。另外因为时右边界依次增加,所以不会对搜索遗漏。在一例子中,将左时间边界到右时间边界的范围作为解码范围。基于所述解码范围对命令词按照ctc解码方式打分即是进行ctc解码。

本申请实施例提供的加速解码方法,通过动态规划算法,一次计算出左时间边界,只需做一次ctc解码即可计算出命令词的得分,大幅减少了ctc解码的次数。另外,考虑了命令词的顺序进行最大乘积得分计算,左时间边界定位更加准确。而目前方法一般只取最大值做乘积未考虑命令词内建模单元顺序,左时间边界定位准确率较本申请实施例提供的方式低。一般M非常小,命令词很短,T时间由于命令词属于短语音,也较短,因此可在M

在一实施例中,所述基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤包括:

在所述左时间边界左侧的一定范围内选取一边界作为第二左时间边界;

将所述第二左时间边界到所述右时间边界的范围作为解码范围;

基于所述解码范围对命令词按照解码方式进行打分。

在本申请实施例中,为了保证命令词识别的准确率,定位到左时间边界left_pos后,左时间边界可以在定位到的左时间边界的左侧的一定范围内偏移,即可在定位到的左时间边界left_pos左侧一定范围内选择一边界作为第二左时间边界,即可以在范围[left_pos - delta ,left_pos]选择一边界作为第二左时间边界,delta比如取2,由于ctc解码可从音素开始也可从blank开始,此处加上此松弛条件,可保证命令词识别的准确率。

在一实施例中,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界的步骤之后,所述方法还包括:

判断所述命令词序的最大乘积得分是否大于预设的阈值;

若小于,则跳过ctc解码;

若大于或等于,则执行将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤。

在本申请实施例中,若命令词序的最大乘积得分小于预设的阈值,可判定此范围没有该命令词,可跳过ctc解码,即左时间边界定位步骤可作为一个过滤步骤,从而提高命令词识别速度。

如图2所示,在一实施例中,设命令词建模单元长度为M,命令词第一个建模单元为w1,命令词第二个建模单元为w2,...,命令词第M个建模单元为WM,h(t,k)表示动态规划递推到时间到t命令词到wk时乘积得分的最大值,pos(t,k)表示到达(t,k)位置乘积得分的最大值是由前一步哪个位置得来的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分的步骤包括:

令初始值h(1,1) = logits(1,w1);

令t=2;

将t的值将代入公式h(t, 1) = max(h(t-1, 1), logits(t, w1 ));

令t=t+1;

返回将t的值将代入h(t, 1) = max(h(t-1, 1), logits(t, w1 ))的步骤,直到t=T,计算得出h(T, 1);

令k=2,将k的值代入公式 h(k, k) = h(k-1, k-1)

令t=k+1;

将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

更新位置pos(t,k) ;若最大值是h(t-1, k) ,则位置为(t-1,k);若最大值是h(t-1, k-1) ,则位置为(t-1, k-1);

令t=t+1;

返回将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

令k=k+1;

返回将k的值代入公式h(k, k) = h(k-1, k-1)

其中, logits为ctc输出的建模单元的概率值组成的解码矩阵。

需要说明的是,h(T,M)即是命令词序的最大乘积得分。其中,图2仅示出了命令词序是w1w2w3w4以及T=5时的情况。

本申请实施例基于解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分无需考虑ctc规则,按照上述方式计算即可,为了更清楚如何基于解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,下面给出相关代码:

- 初值计算 第一个建模单元的得分

h(1,1) = logits(1,w1)

for t = 2 to T:

h(t, 1) = max(h(t-1, 1), logits(t, w1 ))

- 递推 计算其它建模单元的得分

for k = 2 to M

h(k, k) = h(k-1, k-1)

for t = k + 1 to Tdo

h(t, k) = max(h(t-1, k), h(t-1, k-1) )

更新位置pos(t,k) 若最大值是h(t-1, k) ,则位置为(t-1,k);若最大值是h(t-1, k-1) ,则位置为(t-1, k-1)。

在一实施例中,所述同时按照回溯算法找出命令词的左时间边界的步骤包括:

由pos(T,M)出发,依次往前回溯,直到pos(t,2)再做回溯时,(t,k)中 k=1时的t值,即为左时间边界。

在本申请实施例中,在上述计算最大乘积得分同时,除了记录到达当前位置的最大乘积得分信息外,还需要记录是从前一时间哪个位置到达的这个位置,结合回溯算法,由pos(Ts,M)出发,依次往前回溯,直到pos(t,2)再做回溯时,(t,k) k=1时的t值,即为左时间边界。

在本申请实施例中,所述获取解码矩阵的步骤之前,还包括:

将语音识别神经网络每一时刻输出的结果依次缓存;其中,所述语音识别神经网络每一时刻输出各类建模单元的概率值;

实时获取预设时间长度的所述结果构建所述解码矩阵;其中,所述预设时间长度为解码缓存长度。

在本申请实施例中,语音识别网络可以是各种网络结构中的一种,如循环神经网络(Recurrent Neural Networks,RNN)、卷积神经网络(Convolutional Neural Networks,CNN)或者它们的结合,如长短期记忆网络(Long Short-Term Memory,LSTM)等。待识别的语音输入语音识别网络后,语音识别网络会在每一时刻输出各类建模单元的概率值,将这些概率值放到缓存,同时实时获取缓存中的数据构建解码矩阵用于定位左时间边界,构建的解码矩阵的横坐标是时间t,T=5,纵坐标是命令词的建模单元k,比如,命令词是w1w2w3w4,解码矩阵如图2所示。

参照图3,本申请实施例还提供一种加速解码装置,所述装置包括:

获取模块1,用于获取解码矩阵;其中,所述解码矩阵是一个T

左时间边界确定模块2,用于基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界;

打分模块3,用于将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

在一实施例中,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界之后,还包括:

判断所述命令词序的最大乘积得分是否大于预设的阈值;

若小于,则跳过ctc解码;

若大于或等于,则执行将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。

在一实施例中,所述基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤包括:

在所述左时间边界左侧的一定范围内选取一边界作为第二左时间边界;

将所述第二左时间边界到所述右时间边界的范围作为解码范围;

基于所述解码范围对命令词按照解码方式进行打分。

在一实施例中,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界之后,还包括:

判断所述命令词序的最大乘积得分是否大于预设的阈值;

若小于,则跳过ctc解码;

若大于或等于,则执行将所述解码矩阵中的T时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤。

在一实施例中,设命令词建模单元长度为M,命令词第一个建模单元为w1,命令词第二个建模单元为w2,...,命令词第M个建模单元为WM,h(t,k)表示动态规划递推到时间到t命令词到wk时乘积得分的最大值,pos(t,k)表示到达(t,k)位置乘积得分的最大值是由前一步哪个位置得来的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分包括:

令初始值h(1,1) = logits(1,w1);

令t=2;

将t的值将代入公式h(t, 1) = max(h(t-1, 1), logits(t, w1 ));

令t=t+1;

返回将t的值将代入h(t, 1) = max(h(t-1, 1), logits(t, w1 ))的步骤,直到t=T,计算得出h(T, 1);

令k=2,将k的值代入公式 h(k, k) = h(k-1, k-1)

令t=k+1;

将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

更新位置pos(t,k) ;若最大值是h(t-1, k) ,则位置为(t-1,k);若最大值是h(t-1, k-1) ,则位置为(t-1, k-1);

令t=t+1;

返回将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )

令k=k+1;

返回将k的值代入公式h(k, k) = h(k-1, k-1)

其中, logits为ctc输出的建模单元的概率值组成的解码矩阵。

在一实施例中,所述同时按照回溯算法找出命令词的左时间边界包括:

由pos(T,M)出发,依次往前回溯,直到pos(t,2)再做回溯时,(t,k)中 k=1时的t值,即为左时间边界。

在一实施例中,所述获取解码矩阵之前,还包括:

将语音识别神经网络每一时刻输出的结果依次缓存;其中,所述语音识别神经网络每一时刻输出各类建模单元的概率值;

实时获取预设时间长度的所述结果构建所述解码矩阵;其中,所述预设时间长度为解码缓存长度。

参照图4,本发明实施例还提供一种计算机设备,该计算机设备的内部结构可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储加速解码方法的数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。进一步地,上述计算机设备还可以设置有输入装置和显示屏等。上述计算机程序被处理器执行时以实现加速解码方法,包括如下步骤:获取解码矩阵;其中,所述解码矩阵是一个T

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现加速解码方法,包括如下步骤:获取解码矩阵;其中,所述解码矩阵是一个T

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

需要说明的是,本申请实施例所涉及的信息(包括但不限于用户设备信

息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、

展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关

数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 解码方法、装置、电子设备以及存储介质
  • 一种路径解码方法、装置、计算机设备及存储介质
  • 卷积神经网络计算的加速方法、装置、设备及存储介质
  • 一种编码方法、解码方法及装置、计算机可读存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种纠删码解码加速的方法、系统、介质及计算机设备
  • 音频编码方法和设备、音频解码方法和设备及其记录介质和采用音频编码方法和设备、音频解码方法和设备的多媒体装置
技术分类

06120116625513