语音识别方法、装置和系统及存储介质与流程
本发明涉及语音处理技术领域,具体地,涉及一种语音识别方法、装置和系统及存储介质。
背景技术:
在语音识别领域,端到端(seq2seq)模型最近取得了长足的进步。它们消除了隐马尔可夫模型(hmm)和连接时序分类模型(ctc)所做出的不合理的帧独立性假设,从而使自己能够学习隐式语言模型,并更直接地优化词错误率(wer)。端到端模型中一个典型的代表是基于自注意(self-attention)的转换器(transformer)模型。
现有技术使用transformer模型作为语音识别的整个处理模型。对于通用的场景,诸如日常聊天等一些常见表达时没什么问题。但是,当要预测比较生僻的词,或者人名地名这种专有名词时,就比较容易识别错。如果重新训练transformer模型也会有很大困难:一是训练数据少,二是训练周期长,不能满足快速迭代的产品需求。
技术实现要素:
为了至少部分地解决现有技术中存在的问题,提供一种语音识别方法、装置和系统及存储介质。
根据本发明一个方面,提供一种语音识别方法,包括:获取待识别语音;提取待识别语音的声学特征;将声学特征输入转换器模型,以在第i个时间步获得转换器模型输出的与第i个语音段相对应的模型分数集合,其中,待识别语音包括n个语音段,i=1,2,……,n,模型分数集合包括与转换器模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示第i个语音段属于该模型分数所对应的文字的概率;结合模型分数集合以及加权有限状态机模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数;以及基于至少一个转移路径各自的路径分数,获得与第i个语音段相对应的文字解码结果。
示例性地,将声学特征输入转换器模型,以在第i个时间步获得转换器模型输出的与第i个语音段相对应的模型分数集合包括:将待识别语音的声学特征输入转换器模型的编码器模块,以获得编码器模块输出的编码结果;在第i个时间步下,将在第i个语音段之前的所有语音段的文字解码结果与编码结果一起,输入转换器模型的解码器模块,以获得解码器模块输出的模型分数集合。
示例性地,结合模型分数集合以及加权有限状态机模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的转移路径各自的路径分数包括:从加权有限状态机模块中获取第i个语音段所对应的转移分数集合,转移分数集合包括与从先前状态转移到当前状态集合的所有转移弧一一对应的转移分数,其中,在i=1的情况下,先前状态为起始状态,并且在i>1的情况下,先前状态为与第i-1个语音段的文字解码结果相对应的状态,当前状态集合包括先前状态链接到的所有当前状态;对于从起始状态出发转移至当前状态集合的过程中经历的所有转移路径中的任一当前转移路径,将先前转移路径的路径分数、转移分数集合中的与特定转移弧相对应的转移分数、以及模型分数集合中的与特定文字相对应的模型分数相加,以获得当前转移路径的路径分数,其中,当前转移路径包括先前转移路径和特定跳转弧,先前转移路径是从起始状态出发转移至先前状态的过程中经历的转移路径,特定转移弧是从先前状态转移至当前状态集合中的当前状态之一的转移弧,特定文字是与特定转移弧上的输出标签一致的文字;其中,至少一个转移路径是从起始状态出发转移至当前状态集合的过程中经历的所有转移路径。
示例性地,基于第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数,获得与第i个语音段相对应的文字解码结果包括:从至少一个转移路径中选择路径分数最高的转移路径;确定所选择的转移路径中包含的从先前状态转移至当前状态的转移弧上的输出标签为第i个语音段所对应的文字解码结果。
示例性地,在结合模型分数集合以及加权有限状态机模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数之前,语音识别方法还包括:接收用户输入的模型更新信息;以及基于模型更新信息对加权有限状态机模块中的模型进行更新,其中,加权有限状态机模块包括声学模型、发音词典模型、语言模型、上下文相关音子模型中的一种或多种。
示例性地,模型更新信息包括与新的转移弧相关的转移弧信息,转移弧信息包括新的转移弧上的输入标签、新的转移弧上的输出标签和新的转移弧的转移分数,基于模型更新信息对加权有限状态机模块中的模型进行更新包括:将新的转移弧添加到加权有限状态机模块的对应模型中;或者,利用新的转移弧替换加权有限状态机模块的对应模型中的对应转移弧。
示例性地,在结合模型分数集合以及加权有限状态机模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数的过程中,语音识别方法还包括:通过令牌传递方法记录并传递加权有限状态机模块中的各转移路径的路径分数和历史文字解码结果。
示例性地,提取待识别语音的声学特征包括:从待识别语音中提取n个语音段中的每个语音段的声学嵌入向量和位置编码向量,以获得n个语音段中的每个语音段的声学特征;将n个语音段的声学特征合并在一起,以获得待识别语音的声学特征。
根据本发明另一方面,还提供一种语音识别装置,包括:获取模块,用于获取待识别语音;提取模块,用于提取待识别语音的声学特征;输入模块,用于将声学特征输入转换器模型,以在第i个时间步获得转换器模型输出的与第i个语音段相对应的模型分数集合,其中,待识别语音包括n个语音段,i=1,2,……,n,模型分数集合包括与转换器模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示第i个语音段属于该模型分数所对应的文字的概率;计算模块,用于结合模型分数集合以及加权有限状态机模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数;以及结果获得模块,用于基于至少一个转移路径各自的路径分数,获得与第i个语音段相对应的文字解码结果。
根据本发明另一方面,还提供一种语音识别系统,包括处理器和存储器,其中,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时用于执行上述语音识别方法。
根据本发明另一方面,还提供一种存储介质,在所述存储介质上存储了程序指令,所述程序指令在运行时用于执行上述语音识别方法。
根据本发明实施例的语音识别方法、装置和系统及存储介质,可以针对每个语音段通过transformer模型预测其属于预定文字的模型分数,通过结合transformer模型输出的模型分数计算加权有限状态机(wfst)模块中的各转移路径的总的路径分数得到文字解码结果。由于在获得文字解码结果时,不再仅仅依靠transformer模型输出的模型分数,而是将wfst模块的分数也考虑进去,这样可以有助于提高整个语音识别系统的识别正确率。此外,transformer+wfst的结构可以弥补transformer模型不够灵活的缺陷,当需要识别新词时,可以无需重新训练transformer模型,而是依靠更新wfst中的模型来调整新词的权重,进而获得更倾向于新词的识别结果。通过这种方式可以使得模型更新的操作代价很小,可以实现模型的快速迭代。
在发明内容中引入了一系列简化形式的概念,这将在具体实施方式部分中进一步详细说明。本发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。
以下结合附图,详细说明本发明的优点和特征。
附图说明
本发明的下列附图在此作为本发明的一部分用于理解本发明。附图中示出了本发明的实施方式及其描述,用来解释本发明的原理。在附图中,
图1示出根据本发明一个实施例的语音识别方法的示意性流程图;
图2示出根据本发明一个实施例的整个transformer+wfst语音识别模型的结构框图;
图3示出根据本发明一个实施例的wfst模块的示意图;
图4示出根据本发明一个实施例的在wfst模块更新前后的语音识别结果的示意图;
图5示出根据本发明一个实施例的语音识别装置的示意性框图;以及
图6示出根据本发明一个实施例的语音识别系统的示意性框图。
具体实施方式
在下文的描述中,提供了大量的细节以便能够彻底地理解本发明。然而,本领域技术人员可以了解,如下描述仅示例性地示出了本发明的优选实施例,本发明可以无需一个或多个这样的细节而得以实施。此外,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行详细描述。
为了解决上述问题,本发明提出一种基于transformer模型和wfst模块的语音识别方法。根据本发明实施例,可以针对每个语音段通过transformer模型预测各个建模单元(每个建模单元可以理解为单个预定文字的建模模型)的模型分数,然后将此模型分数发送至wfst模块,通过结合transformer模型输出的模型分数计算wfst模块中的各转移路径的总的路径分数得到识别结果(即文字解码结果)。
由于在获得文字解码结果时,不再仅仅依靠transformer模型输出的模型分数,而是将wfst模块的路径分数也考虑进去,这样可以扩展语音识别的可识别范围,对于生僻词或者人名地名这种专有名词,可以进一步依靠wfst模块识别,进而可以提高对这些生僻词或专有名词的识别正确率。此外,基于transformer+wfst的结构,当需要识别新词时,可以无需重新训练transformer模型,而是依靠更新wfst中的模型来调整新词的权重,进而获得更倾向于新词的识别结果。通过这种方式可以使得模型更新的操作代价很小,可以实现模型的快速迭代。
图1示出根据本发明一个实施例的语音识别方法100的示意性流程图。如图1所示,语音识别方法100包括步骤s110、s120、s130、s140和s150。
在步骤s110,获取待识别语音。
待识别语音可以是任何语音,其可以采集自任何合适的人或接收自任何合适的设备。
在步骤s120,提取待识别语音的声学特征。
可以对待识别语音进行各种预处理。预处理可以包括滤波、分帧、端点检测等处理。例如,可以首先对待识别语音(其是一种音频信号)进行滤波与采样,此过程主要是为了排除人体发声以外频率的信号与50hz电流频率的干扰。此外,可以对待识别语音进行分帧,也就是将声音切开成一小段一小段,每一小段称为一帧(即语音帧)。分帧操作主要是为了使原有频域随时间变化的信号具有短时平稳特性,即将连续的信号用不同长度的采集窗口分成一个个独立的频域稳定的部分以便于分析。此外,还可以对待识别语音进行端点检测工作,也就是对输入的语音信号的起止点进行判断,这主要可以通过短时能量(同一帧内信号变化的幅度)与短时平均过零率(同一帧内采样信号经过零的次数)来进行大致的判定。
完成待识别语音的预处理之后,可以进行特征提取的操作。示例性地,可以针对每个语音帧,提取该语音帧的声学特征。声学特征可以用多维向量表示,可以简单地理解为这个向量包含了对应语音帧的内容信息。波形在时域上几乎没有描述能力,因此针对原始的语音信号波形进行识别并不能取得很好的语音识别效果,因此可以选择将语音信号波形变换到频域,即提取声学特征。步骤s120提取的待识别语音的声学特征可以包括所有语音帧的声学特征,例如,可以将所有语音帧的声学特征向量合并在一起,形成一个总的声学特征向量作为待识别语音的声学特征。
示例性地,提取待识别语音的声学特征(步骤s120)可以包括:从待识别语音中提取所有语音帧中的每个语音帧的声学嵌入向量和位置编码向量,以获得所有语音帧中的每个语音帧的声学特征;将所有语音帧的声学特征合并在一起,以获得待识别语音的声学特征。
每个语音帧的声学特征可以包括该语音帧的声学嵌入(embedding)向量和位置编码(positionalencoding)向量。可以通过嵌入算法计算每个语音帧的声学嵌入向量。本领域技术人员可以理解声学嵌入向量和位置编码向量的计算方式,此处不赘述。将所有语音帧的声学特征合并在一起可以是将所有语音帧的向量形式的声学特征拼接在一起。
在步骤s130,将声学特征输入transformer模型,以在第i个时间步获得transformer模型输出的与第i个语音段相对应的模型分数集合,其中,待识别语音包括n个语音段,i=1,2,……,n,模型分数集合包括与transformer模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示第i个语音段属于该模型分数所对应的文字的概率。
图2示出根据本发明一个实施例的整个transformer+wfst语音识别模型的结构框图。如图2所示,整个语音识别模型可以包括transformer模型和wfst模块,wfst模块也可以称为lg模块,其是将发音词典和语言模型等通过wfst操作得到的一个有向图。如图2所示,transformer模型可以包括编码器模块和解码器模块,本领域技术人员可以理解这些模块的实现方式,本文不赘述。图2中的编码器模块中可以包括例如12层编码器,解码器模块中可以包括例如6层解码器。上述编码器和解码器的层数仅是示例而非对本发明的限制,编码器和解码器均可以具有任何合适的层数。此外,解码器模块还可以包括线性变换层和softmax函数层。
示例性地,将声学特征输入转换器模型,以在第i个时间步获得转换器模型输出的与第i个语音段相对应的模型分数集合(步骤s130)可以包括:将待识别语音的声学特征输入转换器模型的编码器模块,以获得编码器模块输出的编码结果;在第i个时间步下,将在第i个语音段之前的所有语音段的文字解码结果与编码结果一起,输入转换器模型的解码器模块,以获得解码器模块输出的模型分数集合。
可以将待识别语音的声学特征输入编码器模块,获得编码结果,其可以是例如编码矩阵c。随后,在解码器模块处,对于待识别语音中的所有语音段,可以按照例如时间顺序一一进行处理,每次处理一个语音段。每个语音段可以与一个时间步(timestep)对应,时间步可以理解为针对一个语音段进行一次语音识别的步骤或说操作,其可以包括本文描述的步骤s140-s150。对于不同语音段来说,在时间步内执行的操作是一致的,即上述步骤s140-s150可以针对不同的语音段循环往复地执行,每次循环可以视为一个时间步,直至所有语音段处理完毕为止。任一正在经历上述循环步骤处理的语音段,可以将其称为当前语音段。本领域技术人员可以理解时间步和与每个时间步对应的语音段的含义,本文不赘述。可以理解的是,每个语音段基本与一个文字相对应,每个语音段可以包括分帧获得的一个或多个语音帧。任意两个不同语音段的长度可以相同或不同。
在解码阶段,可以首先对待识别语音提取特征,经过处理之后与位置编码信息一起作为输入,输入到transformer模型的编码器模块。编码器模块的输出和wfst模块输出的历史文字解码结果可以作为共同输入,输入至transformer模型的解码器模块。随后,解码器输出的信息经过线性变换层和softmax函数层的处理之后,可以获得softmax函数层输出的当前语音段的模型分数集合。
示例性地,在i=1,即第1个时间步下,在第i个语音段之前的语音段的文字解码结果可以包括起始符sos,即此时可以将起始符sos和编码器结果一起,输入解码器模块进行处理,以在解码器模块的输出端处获得第1个语音段的模型分数集合,并进而在wfst模块的输出端处获得第1个语音段的文字解码结果。随后,在每次处理当前语音段,第i个语音段时,可以将起始符sos加上第1个语音段至第i-1个语音段的文字解码结果以及编码矩阵c一起输入至解码器模块的,来获得第i个语音段的transformer模型输出的模型分数集合,并进而在wfst模块的输出端处获得第i个语音段的文字解码结果。假设transformer模型能够对1000个文字进行预测,则每次针对当前语音段,解码器模块能够输出例如1000维的向量(即模型分数集合),每个维度表示当前语音段属于该维度所对应文字的概率是多少。本领域技术人员能够理解解码器模块的输出结果的表达形式和含义,本文不赘述。
为帮助理解,下面举例说明。假设待识别语音的音频内容是:“ilovechina”,transformer模型所能识别的文字(即标签,label)有1000个,则在每个时间步内,解码器模块的输入和输出以及wfst模块的输出如下:
时间步1
解码器模块输入:起始符sos+位置编码信息+编码矩阵c
解码器模块输出:1000个模型分数
wfst模块输出:解码得到的标签,即“i”
时间步2
解码器模块输入:起始符sos+“i”+位置编码信息+编码矩阵c
解码器模块输出:1000个模型分数
wfst模块输出:解码得到的标签,即“love”
时间步3
解码器模块输入:起始符sos+“i”+“love”+位置编码信息+编码矩阵c
解码器模块输出:1000个模型分数
wfst模块输出:解码得到的标签,即“china”
从以上例子可知,在解码器模块的输入端,除起始符、第i个语音段之前的所有语音段的文字解码结果以及编码结果之外,还可以输入位置编码信息,此处的位置编码信息可以是与第i个语音段之前的所有语音段的文字解码结果在整个待识别语音中的位置相关的信息。
下面描述在每个时间步下执行的处理。
在步骤s140,结合模型分数集合以及wfst模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数。
在步骤s150,基于至少一个转移路径各自的路径分数,获得与第i个语音段相对应的文字解码结果。
在本文中,为将transformer模型所建模的文字(即该模型能够预测的文字)与wfst模块中的文字进行区分,可以将transformer模型所建模的文字称为第一文字,将wfst模块中的文字称为第二文字,因此,该第一和第二仅用于区分,并不表示顺序或其他含义,其他类似包含第一和第二的描述也是如此,不再赘述。
如上所述,可以在transformer模型后面添加一个wfst模块,transformer模型输出的模型分数集合可以输入至wfst模块,以加入对每条转移路径的路径分数的计算。示例性地,可以按照传统路径分数计算方式计算wfst模块中的各条转移路径的原始路径分数,并同时将第i个语音段的模型分数与原始路径分数叠加在一起,获得对应转移路径的新的路径分数,并基于该新的路径分数确定与第i个语音段相对应的文字解码结果。如上所述,wfst模块输出的文字解码结果可以返回至transformer模型的解码器模块,作为解码器模块的一个输入,与transformer模型的编码器模块输出的编码结果一起输入至解码器模块,进行对下一语音段的处理。
由于self-attention可以通过位置对计算而不是反馈神经网络(rnn)的位置链计算来绘制不同位置之间的依赖关系,因此只需要计算一次即可获得变换表示,而无需在rnn中一一计算。因此,仅依靠注意力机制的transformer模型可以通过更多的并行化来更快地进行训练,这正是自动语音识别中端到端模型所确切需要的。wfst则可以提供一个统一的形式来表示当前最前沿(state-of-the-art,sota)的大规模连续语音识别(lvcsr)系统的不同知识源,比如隐马尔科夫模型(hmm)、声学模型、发音词典模型和n-gram语言模型等。表示不同知识源的多个wfst可以通过复合运算整合成一个wfst。然后这个wfst可以通过各种优化运算来去掉其中的冗余部分而变成等价的但是更加紧凑高效的wfst来加速解码过程。
示例性地,结合模型分数集合以及wfst模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的转移路径各自的路径分数(步骤s140)可以包括:从wfst模块中获取第i个语音段所对应的转移分数集合,转移分数集合包括与从先前状态转移到当前状态集合的所有转移弧一一对应的转移分数,其中,在i=1的情况下,先前状态为起始状态,并且在i>1的情况下,先前状态为与第i-1个语音段的文字解码结果相对应的状态,当前状态集合包括先前状态链接到的所有当前状态;对于从起始状态出发转移至当前状态集合的过程中经历的所有转移路径中的任一当前转移路径,将先前转移路径的路径分数、转移分数集合中的与特定转移弧相对应的转移分数、以及模型分数集合中的与特定文字相对应的模型分数相加,以获得当前转移路径的路径分数,其中,当前转移路径包括先前转移路径和特定跳转弧,先前转移路径是从起始状态出发转移至先前状态的过程中经历的转移路径,特定转移弧是从先前状态转移至当前状态集合中的当前状态之一的转移弧,特定文字是与特定转移弧上的输出标签一致的文字;其中,至少一个转移路径是从起始状态出发转移至当前状态集合的过程中经历的所有转移路径。需注意,从起始状态出发转移至当前状态集合的过程中经历的所有转移路径可以包括一条或多条当前转移路径,针对其中每一条当前转移路径,均可以执行上述将先前转移路径的路径分数、转移分数集合中的与特定转移弧相对应的转移分数、以及模型分数集合中的与特定文字相对应的模型分数相加的步骤。
图3示出根据本发明一个实施例的wfst模块的示意图。wfst模块是发音词典模型和语言模型等通过wfst操作得到的一个有向状态图模型。图3中的每个圆圈代表一个状态(或称节点),里面的数字是状态编号。图3中两个状态之间的转移弧上示出了输入标签(label)、输出标签和转移分数等信息。例如,状态“0”至状态“2”之间具有转移弧b:bill/1.386,该转移弧的含义如下:b代表输入标签,bill代表输出标签,1.386是由b得到bill的分数(称为转移分数)。本领域技术人员可以理解上述有向状态图的表示方式及其中各项信息的含义,本文不赘述。
有向状态图中的转移分数可以和transformer模型输出的模型分数相加,并叠加历史路径分数(即先前转移路径的路径分数),以获得截止到当前转移路径的总的路径分数,并将该路径分数作为当前时间步内确定最终文字解码结果的判断依据。例如,路径分数最高的转移路径所对应的标签即为当前时间步内预测获得的文字解码结果。
下面举例说明。假设待识别语音包含的内容是“我想去划船”。第1个字是“我”,划分出的第1个语音段与“我”的发音对应。在第1个时间步,将待识别语音的声学特征输入transformer模型的编码器模块并将起始符sos输入至transformer模型的解码器模块之后,获得解码器模块输出的该语音段属于其所建模的所有(例如1000个)第一文字的概率,即模型分数集合。理论上来说,transformer模型将输出第1个语音段属于“我”这个文字的概率最大,例如用模型分数0.6表示,而属于其他文字的概率都很小,例如可能仅获得零点零几的模型分数。
而在wfst模块中,假设“0”是起始状态,该起始状态后面链接有三个后续状态,分别对应于第1个文字是“你”、“我”和“他”。假设,状态“1”对应于第1个文字是“你”的状态,状态“2”对应于第1个文字是“我”的状态,状态“3”对应于第1个文字是“他”的状态。对于第1个语音段来说,先前状态为起始状态“0”,当前状态为上述状态“1”、“2”和“3”,当前状态集合即为包括上述三种当前状态的集合。第1个语音段所对应的转移分数集合可以包括从起始状态“0”转移到状态“1”的第1条转移弧的转移分数、从起始状态“0”转移到状态“2”的第2条转移弧的转移分数以及从起始状态“0”转移到状态“3”的第3条转移弧的转移分数。另外,包含第1条转移弧的转移路径为第1条当前转移路径,包含第2条转移弧的转移路径为第2条当前转移路径,包含第3条转移弧的转移路径为第3条当前转移路径。对于第1个语音段来说,先前转移路径不存在,其路径分数为0。因此,对于第1条当前转移路径、第2条当前转移路径和第3条当前转移路径中的任一当前转移路径来说,可以直接将该当前转移路径包含的转移弧的转移分数与之前获得的模型分数集合中的与该转移弧上的输出标签一致的第一文字的模型分数相加,来获得该当前转移路径的路径分数。
假设第1条转移弧所对应的转移分数为0.4,第2条转移弧所对应的转移分数为0.4,第3条转移弧所对应的转移分数为0.2。同时,假设模型分数集合中“你”,“我”和“他”的模型分数分别为0.1、0.6、0.08,则对于第1条当前转移路径,即“0->1”这条转移路径的路径分数为0.1+0.4=0.5;对于第2条当前转移路径,即“0->2”这条转移路径的路径分数为0.6+0.4=1.0;对于第3条当前转移路径,即“0->3”这条转移路径的路径分数为0.08+0.2=0.28。其中,第2条当前转移路径是路径分数最高的,因此第1个语音段属于“我”的概率最大,将“我”作为文字解码结果,返回输入至transformer模型中,进行下一个语音段的预测。
上述计算转移路径的路径分数的方法可以在每个时间步下重复执行,不过从第2个时间步开始,除模型分数和转移分数以外,还可以将转移路径的历史路径分数加入进去一起计算,即转移路径的路径分数是不断累加的。例如,对于第2个语音段,先前状态是上一次的文字解码结果“我”所对应的状态“2”,假设状态“2”后续链接到两个状态,即状态“4”和“5”,分别对应于第2个文字是“想”和“能”。则对于第2个语音段来说,其当前转移路径“0->2->4”包含先前转移路径“0->2”以及从状态“2”转移至状态“4”的这一转移弧,另一当前转移路径“0->2->5”包含先前转移路径“0->2”以及从状态“2”转移至状态“5”的这一转移弧。在计算当前转移路径“0->2->4”的路径分数时,可以将先前转移路径“0->2”的路径分数、从状态“2”转移至状态“4”的转移弧的转移分数以及与“想”对应的模型分数相加,获得该当前转移路径“0->2->4”的路径分数。类似地,在计算当前转移路径“0->2->5”的路径分数时,可以将先前转移路径“0->2”的路径分数、从状态“2”转移至状态“5”的转移弧的转移分数以及与“能”对应的模型分数相加,获得该当前转移路径“0->2->5”的路径分数。
可选地,在任一时间步,可以从所有当前转移路径中选择得分最高的一条或得分位于前几名的若干条当前转移路径,选择出的路径所包含的特定转移弧上的输出标签可以作为与当前语音段对应的文字解码结果输出。在选择得分位于前几名的若干条当前转移路径的情况下,可以获得多个候选的文字解码结果。可以将每个候选的文字解码结果各自独立地返回transformer模块的解码器模块,分别基于每个候选的文字解码结果进行对下一语音段的预测和识别。
根据本发明实施例的语音识别方法,可以针对每个语音段通过transformer模型预测其属于预定文字的模型分数,然后将此模型分数发送至wfst模块,通过结合transformer模型输出的模型分数计算wfst模块中的各转移路径的总的路径分数得到文字解码结果。由于在获得文字解码结果时,不再仅仅依靠transformer模型输出的模型分数,而是将wfst模块的分数也考虑进去,这样可以有助于提高整个语音识别系统的识别正确率。此外,transformer+wfst的结构可以弥补transformer模型不够灵活的缺陷,当需要识别新词时,可以无需重新训练transformer模型,而是依靠更新wfst中的模型来调整新词的权重,进而获得更倾向于新词的识别结果。通过这种方式可以使得模型更新的操作代价很小,可以实现模型的快速迭代。
根据本发明实施例,基于第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数,获得与第i个语音段相对应的文字解码结果(步骤s150)可以包括:从至少一个转移路径中选择路径分数最高的转移路径;确定所选择的转移路径中包含的从先前状态转移至当前状态的转移弧上的输出标签为第i个语音段所对应的文字解码结果。
如上所述,可选地,可以选择路径分数最高的一条或多条转移路径来获得第i个语音段所对应的文字解码结果。并且可选地,可以在最后一个语音段处,选择路径分数最高的第一预设数目(即前若干名)的转移路径来获得第一预设数目的文字解码结果。即,可以在最后输出一个或多个文字解码结果,以获得整个待识别语言的一个或多个候选的语音识别结果,并将这些候选结果可以一起输出以供用户进行比较和查看。
根据本发明实施例,在结合模型分数集合以及wfst模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数(步骤s140)之前,语音识别方法100还可以包括:接收用户输入的模型更新信息;以及基于模型更新信息对wfst模块中的模型进行更新,其中,wfst模块包括声学模型、发音词典模型、语言模型、上下文相关音子模型中的一种或多种。
wfst模块可以随时更新,当有新的词或者用户希望调整某个词的权重时,可以通过输入装置输入模型更新信息。语音识别系统可以基于用户输入的模型更新信息增加、替换wfst模块中的有向状态图的指定状态的信息或者调整指定转移弧的转移分数等。如上所述,这种通过更新wfst模块来更新整个语音识别系统的方式可以使得模型更新的操作代价很小,可以实现模型的快速迭代。
根据本发明实施例,模型更新信息包括与新的转移弧相关的转移弧信息,转移弧信息包括新的转移弧上的输入标签、新的转移弧上的输出标签和新的转移弧的转移分数,基于模型更新信息对wfst模块中的模型进行更新包括:将新的转移弧添加到wfst模块的对应模型中;或者,利用新的转移弧替换wfst模块的对应模型中的对应转移弧。
示例性地,模型更新信息还可以包括用户指令,该用户指令可以指示新的转移弧的添加或替换位置。可以基于该用户指令将新的转移弧添加到对应位置或利用新的转移弧替换对应位置处的旧的转移弧。例如,原始的wfst模块中的有向状态图存在与“今天是下雨天”这样的短句对应的转移路径,用户想要将其修改为“今天是阴雨天”,则可以将有向状态图中的“是->下”转移弧修改为“是->阴”,并可以可选地修改其转移分数。
根据本发明实施例,在结合模型分数集合以及wfst模块,计算从第1个语音段至第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数(步骤s140)的过程中,语音识别方法100还可以包括:通过令牌传递方法记录并传递wfst模块中的各转移路径的路径分数和历史文字解码结果。
在wfst模块中进行解码的过程中,可以使用令牌(token)来记录走过的路径信息。通过称为令牌(token)的数据结构来解码某时间步某个状态上的分数和信息,以令牌传递(tokenprocessing)的方式访问wfst,令牌可以由起始状态进入,通过输入状态的符号(即输入符号)发生转移到从而到达下一个状态,当完成最后一个转移后令牌到达终止状态。令牌在从起始状态向终止状态传递的过程中,令牌中所记录的一连串的状态和转移弧组成了转移路径。令牌可以记录对应转移路径的路径分数,并且可以可选地记录在计算对应转移路径时所采用的转移分数和模型分数。此外,令牌还可以记录转移路径所对应的历史文字解码结果。本领域技术人员可以理解令牌传递方法的实现方式,本文不做赘述。
图4示出根据本发明一个实施例的在wfst模块更新前后的语音识别结果的示意图。如图4所示,待识别语音的音频内容是:“在海南成立了分公司”,pred是整个语音识别模型的预测结果,truth是正确答案。上面的l1是在wfst模块中采用正常的“海南”这一词语的情况下识别出的待识别语音的语音识别结果,下面的l2是故意为了识别“海楠”而做的测试。在l2测试时,在wfst模块的语言模型和发音词典模型中添加了“海楠”一词,使得识别出来的语音识别结果变为了“在海楠成立了分公司”。可见通过更新wfst模块,整个语音识别模型就可以用来更好地识别一些专有名词。
根据本发明另一方面,提供一种语音识别装置。图5示出了根据本发明一个实施例的语音识别装置500的示意性框图。如图5所示,根据本发明实施例的语音识别装置500包括获取模块510、提取模块520、输入模块530、计算模块540和结果获得模块550。所述各个模块可分别执行上文中结合图1描述的语音识别方法100的各个步骤/功能。以下仅对该语音识别装置500的各部件的主要功能进行描述,而省略以上已经描述过的细节内容。
获取模块510用于获取待识别语音。
提取模块520用于提取所述待识别语音的声学特征。
输入模块530用于将所述声学特征输入转换器模型,以在第i个时间步获得所述转换器模型输出的与第i个语音段相对应的模型分数集合,其中,所述待识别语音包括n个语音段,i=1,2,……,n,所述模型分数集合包括与所述转换器模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示所述第i个语音段属于该模型分数所对应的文字的概率。
计算模块540用于结合所述模型分数集合以及加权有限状态机模块,计算从第1个语音段至所述第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数。
结果获得模块550用于基于所述至少一个转移路径各自的路径分数,获得与所述第i个语音段相对应的文字解码结果。
根据本发明另一方面,提供一种语音识别系统。图6示出了根据本发明一个实施例的语音识别系统600的示意性框图。语音识别系统600包括处理器610和存储器620。
所述存储器620存储用于实现根据本发明实施例的语音识别方法100中的相应步骤的计算机程序指令。
所述处理器610用于运行所述存储器620中存储的计算机程序指令,以执行根据本发明实施例的语音识别方法100的相应步骤。
在一个实施例中,所述计算机程序指令被所述处理器510运行时用于执行以下步骤:获取待识别语音;提取所述待识别语音的声学特征,其中,所述待识别语音包括n个语音段;将所述声学特征输入转换器模型,以在第i个时间步获得所述转换器模型输出的与第i个语音段相对应的模型分数集合,其中,i=1,2,……,n,所述模型分数集合包括与所述转换器模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示所述第i个语音段属于该模型分数所对应的文字的概率;结合所述模型分数集合以及加权有限状态机模块,计算从第1个语音段至所述第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数;以及基于所述至少一个转移路径各自的路径分数,获得与所述第i个语音段相对应的文字解码结果。
根据本发明另一方面,提供一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的语音识别方法100的相应步骤,并且用于实现根据本发明实施例的语音识别装置500中的相应模块。
在一个实施例中,所述程序指令在运行时用于执行以下步骤:获取待识别语音;提取所述待识别语音的声学特征,其中,所述待识别语音包括n个语音段;将所述声学特征输入转换器模型,以在第i个时间步获得所述转换器模型输出的与第i个语音段相对应的模型分数集合,其中,i=1,2,……,n,所述模型分数集合包括与所述转换器模型所建模的文字集合中的所有文字一一对应的模型分数,每个模型分数表示所述第i个语音段属于该模型分数所对应的文字的概率;结合所述模型分数集合以及加权有限状态机模块,计算从第1个语音段至所述第i个语音段中的所有语音段所对应的至少一个转移路径各自的路径分数;以及基于所述至少一个转移路径各自的路径分数,获得与所述第i个语音段相对应的文字解码结果。
所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、或者上述存储介质的任意组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的语音识别系统中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除