技术新讯 > 乐器声学设备的制造及制作,分析技术 > 命令词得分计算方法、装置、设备和介质与流程  >  正文

命令词得分计算方法、装置、设备和介质与流程

  • 国知局
  • 2024-06-21 11:54:24

本技术涉及语音,特别是涉及到一种命令词得分计算方法、装置、设备和介质。

背景技术:

1、命令词识别属于语音识别,广泛应用于智能家居领域,比如智能语音音箱、智能语音耳机、智能语音灯、智能语音风扇等。嵌入式设备由于成本考虑,相比手机等智能设备,其算力低、内存和flash小。由于ctc解码算法具有对序列任务无需对齐、解码过程高效、节省内存等优势,一般的嵌入式设备上的语音识别算法一般采用ctc解码算法。一般的解码算法是按照前向算法计算路径得分,大致是去重和去blank,从而计算得到命令词得到。此方式的缺陷在于,比如,对于命令词“打开”对应的音素序列 d a k ai,按照现有的ctc解码方法,其可行的路径只能是d a _ _ k k ai或者是d _ _ a k k ai ,但是实际上d a _ a kk ai (此序列表征ctc解码矩阵每列的最大值对应的音素或blank(用_ 表示 )))这个路径也是可以的,而且此路径可能是主要路径,而由于ctc解码方法的去重和去blank规则,这条路径会被漏掉,由于多条路径可以映射为一个命令词,因此这也导致“打开”这个命令词的得分降低。因此,如何解决现有ctc解码算法会漏掉可行路径,导致命令词识别准确率降低的问题是目前亟需解决的技术问题。

技术实现思路

1、本发明的主要目的为提供一种命令词得分计算方法、装置、设备和介质,旨在解决现有ctc解码算法会漏掉可行路径,导致命令词识别准确率降低的问题。

2、为了实现上述发明目的,本发明第一方面提出一种命令词得分计算方法,所述方法包括:

3、将语音识别网络输出的结果进行缓存,组成解码矩阵;其中,所述解码矩阵的形状为 tc,t表示时间长度,c 等于音素类别数+1;1对应blank类别;

4、根据所述解码矩阵构建用于计算预设命令词得分的矩阵,将所述用于计算预设命令词得分的矩阵记为第一矩阵;其中,所述第一矩阵的形状为ts,s等于预设命令词的长度+1;1对应blank类别;

5、基于所述第一矩阵进行递推,对递推到的每一个节点计算两个值;其中一个值是到达此节点时是音素的总概率,另一个值是达到此节点时是blank的总概率;

6、确定用于计算所述预设命令词得分的节点,将所述用于计算所述预设命令词得分的节点的所述两个值进行相加,获得所述预设命令词的得分。

7、进一步的,所述语音识别网络每一时刻输出各音素的概率以及blank的概率,所述将语音识别网络输出的结果进行缓存,组成解码矩阵的步骤包括:按照时间先后顺序,将各时刻输出的blank的概率填充到第一空白矩阵的第一行,将各时刻输出的第一音素的概率填充到第一空白矩阵的第二行,将各时刻输出的第二音素的概率填充到第一空白矩阵的第三行,依次类推直到将各时刻输出的第c个音素的概率填充到第一空白矩阵的最后一行组成所述解码矩阵;其中,第一行是解码矩阵最上面的一行。

8、进一步的,所述根据所述解码矩阵构建用于计算预设命令词得分的矩阵的步骤包括:

9、将所述解码矩阵的第一行对应的数值复制到第二空白矩阵的第一行;

10、从所述解码矩阵中,将所述预设命令词对应的音素序列的第一音素所在的行对应的数值复制到第二空白矩阵的第二行;

11、从所述解码矩阵中,将所述预设命令词对应的音素序列的第二音素所在的行对应的数值复制到第二空白矩阵的第三行,依次类推,直到所述预设命令词对应的音素序列的最后一个音素所在的行对应的数值复制到第二空白矩阵的最后一行。

12、进一步的,所述确定用于计算所述预设命令词得分的节点的步骤包括:

13、将所述第一矩阵中最后一时刻对应的最后一个音素节点作为所述预设命令词得分的节点。

14、进一步的,当所述预设命令词对应的音素序列为abc,其中,a是音素序列abc的第一个音素,b是音素序列abc的第二个音素,c是音素序列的第三个音素,t=5时,递推时,当t=0时,可走blank 和a这两个节点,接下来,t=0时的blank节点可走t=1时blank 和a这两个节点,t=0时的a节点可走t=1时blank 、a和b这三个节点,接着,t=1时的blank节点可走t=2时blank 和a这两个节点,t=1时的a节点可走t=2时blank 、a和b这三个节点,t=1时的b节点可走t=2时blank 、b和c这三个节点,接着,t=2时的blank节点可走t=3时blank 和a这两个节点,t=2时的a节点可走t=3时blank 、a和b这三个节点,t=2时的b节点可走t=3时blank 、b和c这三个节点,t=2时的c节点可走t=3时blank和c这两个节点,接着,t=3时的blank节点可走t=4时blank 和a这两个节点,t=3时的a节点可走t=4时blank 、a和b这三个节点,t=3时的b节点可走t=4时blank 、b和c这三个节点,t=3时的c节点可走t=4时blank和c这两个节点。

15、进一步的,所述基于所述第一矩阵进行递推,对递推到的每一个节点计算两个值的步骤包括:

16、对于blank 节点,其problabel等于0 ,其probblank的计算方式为:blank[t].probblank = blank[t-1].probblankctc[t][blank_id];其中,blank[t].probblank表示到达t时刻到达节点时;其中,t表示时刻,t>0,blank[t].probblank表示到达blank[t]这个节点时是blank的总概率;blank[t-1].probblank表示到达blank[t-1]这个节点时是blank的总概率,ctc[t][blank_id]表示从解码矩阵取时刻t位置 blank_id处的值 ,blank_id表示blank所处的位置;

17、对预设命令词对应的音素序列的第一个音素节点,其probblank 和 problabel分别如下计算: a[t].probblank = sum(a[t -1])ctc[t][blank_id];a[t].problabel =(blank[t -1].probblank + sum(a[t -1]))ctc[t][a_id];其中,a表示预设命令词对应的音素序列的第一个音素节点,t>0,a[t].probblank表示到达a[t]这个节点时是blank的总概率,a[t].problabel表示到达a[t]这个节点时是音素的总概率,sum(a[t -1])=a[t-1].probblank +a[t-1].problabel;a[t-1].probblank表示到达a[t-1]这个节点时是blank的总概率,a[t-1].problabel表示到达a[t-1]这个节点时是音素的总概率,ctc[t][blank_id]表示从解码矩阵取时刻t位置 blank_id处的值 ,blank_id表示blank所处的位置,blank[t -1].probblank表示达到blank[t -1]这个节点时是blank的总概率,ctc[t][a_id]表示解码矩阵取时刻t位置 a_id处的值 ,a_id表示a所处的位置;

18、对预设命令词对应的音素序列的非首位音素节点, 其probblank 和 problabel分别如下计算:b[t].probblank = sum(b[t - 1 ])ctc[t][blank_id],b[t].problabel= (sum(a[t - 1]) + sum(b[t - 1]))ctc[t][b_id];其中,b表示预设命令词对应的音素序列的非首位音素节点;t大于0,b[t].probblank 表示到达b[t]这个节点时是blank的总概率,b[t].problabel表示到达b[t]这个节点时是音素的总概率,sum(b[t - 1 ])=b[t-1].probblank+b[t-1].problabel;b[t-1].probblank表示到达b[t-1]这个节点时是blank的总概率,b[t-1].problabel表示到达b[t-1]这个节点时是音素的总概率,ctc[t][b_id]表示从解码矩阵取时刻t位置 b_id处的值 ,b_id表示b所处的位置;

19、对预设命令词对应的音素序列的最后一个音素节点 ,其probblank 和problabel分别如下计算:c[t].probblank = sum(c[t -1])ctc[t][blank_id],c[t].problabel =(sum(b[t-1])+sum(c[t -1]) )ctc[t][c_id];c表示预设命令词对应的音素序列的最后一个音素节点,t>0,c[t].probblank表示到达c[t]这个节点时是blank的总概率,c[t].problabel表示到达c[t]这个节点时是音素的总概率,sum(c[t -1]) =c[t-1].probblank+c[t-1].problabel,c[t-1].probblank表示到达c[t-1]这个节点时是blank的总概率,c[t-1].problabel表示到达c[t-1]这个节点时是音素的总概率,ctc[t][blank_id]表示从解码矩阵取时刻t位置 blank_id处的值,ctc[t][c_id]表示从解码矩阵取时刻t位置c_id处的值 ,c_id表示c所处的位置;

20、当t=0时,blank[0].probblank = ctc[0][blank_id] ;label[0].problabel =ctc[0][label_id];其中,ctc[0][blank_id]表示从解码矩阵取t=0位置 blank_id处的值,blank[0].probblank表示到达blank[0]这个节点时是blank的总概率,label[0].problabel表示到达label[0]这个节点时是音素的总概率;其中,label表示音素。

21、进一步的,当所述命令词对应的音素序列存在连续重复的音素时,递推时,相邻两个重复的音素之间只有斜向下走路径,没有平移的路径。

22、第二方面,本技术实施例提供一种命令词得分计算装置,所述装置包括:

23、缓存模块,用于将语音识别网络输出的结果进行缓存,组成解码矩阵;其中,所述解码矩阵的形状为 tc,t表示时间长度,c 等于音素类别数+1;1对应blank类别;

24、构建模块,用于根据所述解码矩阵构建用于计算预设命令词得分的矩阵,将所述用于计算预设命令词得分的矩阵记为第一矩阵;其中,所述第一矩阵的形状为ts,s等于预设命令词的长度+1;1对应blank类别;

25、递推模块,用于基于所述第一矩阵进行递推,对递推到的每一个节点计算两个值;其中一个值是到达此节点时是音素的总概率,另一个值是达到此节点时是blank的总概率;

26、确定模块,用于确定用于计算所述预设命令词得分的节点,将所述用于计算所述预设命令词得分的节点的所述两个值进行相加,获得所述命令词的得分。

27、第三方面,本技术实施例提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如上述任一项所述的命令词得分计算方法的步骤。

28、第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的命令词得分计算方法的步骤。

29、有益效果:

30、本技术实施例通过将语音识别网络输出的结果进行缓存,组成解码矩阵;

31、并根据所述解码矩阵构建用于计算预设命令词得分的矩阵,且该矩阵只有一行blank,为后面实现减少可行路径的遗漏提供了基础,另外,基于所述第一矩阵进行递推时,对递推到的每一个节点计算两个值,其中一个值是到达此节点时是音素的总概率,另一个值是达到此节点时是blank的总概率,通过计算这两个值为实现减少可行路径遗漏提供了保障,最后通过确定用于计算所述预设命令词得分的节点,将所述用于计算所述预设命令词得分的节点的所述两个值进行相加,获得所述预设命令词的得分,这样由于减少了可行路径的遗漏,因此命令词得分计算更加准确,从而提高命令词得分准确率,进而提高命令词识别的准确率。另外,在第一矩阵中,由于以往的方式需要存储多行blank的概率值,而本技术只需要存储一行blank的概率值,因此存储空间相较于以往的方式更少 。

本文地址:https://www.jishuxx.com/zhuanli/20240618/24392.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。