加速解码方法、装置、设备和介质与流程
- 国知局
- 2024-06-21 11:53:43
本技术涉及语音识别,特别是涉及到一种加速解码方法、装置、设备和介质。
背景技术:
1、在语音唤醒和命令词识别时,除了网络模型速度要快,对结果的解码速度也要快才能保证设备智能语音设备实时处理。解码指的是将神经网络输出的结果转化为命令词的过程。命令词识别,需要定位出命令词的左右时间边界才能准确对其进行识别。窗口过小或过大,均会影响命令词最终得分。由于ctc解码算法对序列任务不需要对齐且具有快速、节省内存等优势,一般的嵌入式设备上的语音识别算法一般采用ctc解码算法,一般的ctc解码算法是按照前向算法计算路径得分。流式识别时对语音识别网络输出的结果进行缓存,形成是一个 tc的矩阵,其中t表示时间长度,c表示建模单元类别数,命令词识别就是在[0,t-1] 范围内找出命令词的左右时间边界,进而精准识别到命令词。因此,如何准确识别出命令词左右时间边界以及如何加速解码速度是目前亟需解决的技术问题。
技术实现思路
1、本发明的主要目的为提供一种加速解码方法、装置、设备和介质,旨在加速命令词识别的解码速度以及准确识别出命令词左右时间边界。
2、第一方面,本技术实施例提供一种加速解码方法,所述方法包括:
3、获取解码矩阵;其中,所述解码矩阵是一个tm的矩阵,t表示时间长度,m表示命令词建模单元的个数;
4、基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界;
5、将所述解码矩阵中的t时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。
6、进一步的,所述基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤包括:
7、在所述左时间边界左侧的一定范围内选取一边界作为第二左时间边界;
8、将所述第二左时间边界到所述右时间边界的范围作为解码范围;
9、基于所述解码范围对命令词按照解码方式进行打分。
10、进一步的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界的步骤之后,所述方法还包括:
11、判断所述命令词序的最大乘积得分是否大于预设的阈值;
12、若小于,则跳过ctc解码;
13、若大于或等于,则执行将所述解码矩阵中的t时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分的步骤。
14、进一步的,设命令词建模单元长度为m,命令词第一个建模单元为w1,命令词第二个建模单元为w2,...,命令词第m个建模单元为wm,h(t,k)表示动态规划递推到时间到t命令词到wk时乘积得分的最大值,pos(t,k)表示到达(t,k)位置乘积得分的最大值是由前一步哪个位置得来的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分的步骤包括:
15、令初始值h(1,1) = logits(1,w1);
16、令t=2;
17、将t的值将代入公式h(t, 1) = max(h(t-1, 1), logits(t, w1 ));
18、令t=t+1;
19、返回将t的值将代入h(t, 1) = max(h(t-1, 1), logits(t, w1 ))的步骤,直到t=t,计算得出h(t, 1);
20、令k=2,将k的值代入公式 h(k, k) = h(k-1, k-1)logits(k,wk );
21、令t=k+1;
22、将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )logits(t,wk );
23、更新位置pos(t,k) ;若最大值是h(t-1, k) ,则位置为(t-1,k);若最大值是h(t-1, k-1) ,则位置为(t-1, k-1);
24、令t=t+1;
25、返回将t的值代入公式 h(t, k) = max(h(t-1, k), h(t-1, k-1) )logits(t,wk )的步骤,直到t=t,计算得出h(t,k);
26、令k=k+1;
27、返回将k的值代入公式h(k, k) = h(k-1, k-1)logits(k,wk )的步骤,直到k=m,计算得出h(t,m);
28、其中, logits为ctc输出的建模单元的概率值组成的解码矩阵。
29、进一步的,所述同时按照回溯算法找出命令词的左时间边界的步骤包括:
30、由pos(t,m)出发,依次往前回溯,直到pos(t,2)再做回溯时,(t,k)中 k=1时的t值,即为左时间边界。
31、进一步的,所述获取解码矩阵的步骤之前,还包括:
32、将语音识别神经网络每一时刻输出的结果依次缓存;其中,所述语音识别神经网络每一时刻输出各类建模单元的概率值;
33、实时获取预设时间长度的所述结果构建所述解码矩阵;其中,所述预设时间长度为解码缓存长度。
34、第二方面,本技术实施例提供一种加速解码装置,所述装置包括:
35、获取模块,用于获取解码矩阵;其中,所述解码矩阵是一个tm的矩阵,t表示时间长度,m表示命令词建模单元的个数;
36、左时间边界确定模块,用于基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界;
37、打分模块,用于将所述解码矩阵中的t时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。
38、进一步的,所述基于所述解码矩阵,采用动态规划的方式计算出命令词序的最大乘积得分,同时按照回溯算法找出命令词的左时间边界之后,还包括:
39、判断所述命令词序的最大乘积得分是否大于预设的阈值;
40、若小于,则跳过ctc解码;
41、若大于或等于,则执行将所述解码矩阵中的t时刻作为命令词的右时间边界,基于所述左时间边界和所述右时间边界确定解码范围,基于所述解码范围对命令词按照ctc解码方式打分。
42、第三方面,本技术实施例提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述的加速解码方法步骤。
43、第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的加速解码方法的步骤。
44、有益效果:
45、本技术实施例提供的加速解码方法,通过动态规划算法,一次计算出左时间边界,只需做一次ctc解码即可计算出命令词的得分,大幅减少了ctc解码的次数。另外,考虑了命令词的顺序进行最大乘积得分计算,左时间边界定位更加准确。而目前方法一般只取最大值做乘积未考虑命令词内建模单元顺序,左时间边界定位准确率较本技术实施例提供的方式低。一般m非常小,命令词很短,t时间由于命令词属于短语音,也较短,因此可在mt时间量级内算出左时间边界,计算速度快。本技术实施例只含乘积和最大值比较算法,没有复杂的指对数运算,使得左时间边界定位算法适合部署在嵌入式设备,且运算速度快。
本文地址:https://www.jishuxx.com/zhuanli/20240618/24326.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。