1.本说明书涉及语音识别领域,特别涉及一种语音识别实时重打分的方法和系统。
背景技术:2.在语音识别时,通常会用到语音识别模型,并结合实时重打分方法得到语音识别效果。实时重打分需要实时构建解码网络,并在多个解码网络进行路径搜索和计算,解码速度较慢,同时解码网络占用内存空间较大。在此情境下,需要在保持准确率的情况下,快速地得到语音识别结果。
3.因此,希望提供一种语音识别实时重打分的方法。
技术实现要素:4.本说明书实施例之一提供一种语音识别实时重打分的方法。所述方法包括:获取语音材料中语音帧的特征;基于所述语音帧的特征,通过解码模型和预设重打分模型获取候选语音识别结果,所述预设重打分模型用于对所述解码模型的语音识别结果的分数进行实时修正;基于所述候选语音识别结果确定目标语音识别结果。
5.本说明书实施例之一提供一种语音识别实时重打分的系统。所述系统包括:特征获取模块、候选结果获取模块和目标结果确定模块;所述特征获取模块用于获取语音材料中语音帧的特征;所述候选结果获取模块用于基于所述语音帧的特征,通过解码模型和预设重打分模型获取候选语音识别结果,所述预设重打分模型用于对所述解码模型的语音识别结果的分数进行实时修正;所述目标结果确定模块用于基于所述候选语音识别结果确定目标语音识别结果。
6.本说明书实施例之一提供一种语音识别实时重打分的装置,包括处理器,所述处理器用于执行本说明书所述的语音识别实时重打分的方法。
7.本说明书实施例之一提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行本说明书所述的语音识别实时重打分的方法。
附图说明
8.本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
9.图1是根据本说明书一些实施例所示的语音识别实时重打分的系统的应用场景示意图;
10.图2是根据本说明书一些实施例所示的语音识别实时重打分的系统的示意图;
11.图3是根据本说明书一些实施例所示的语音识别实时重打分的方法的示例性流程图;
12.图4是根据本说明书一些实施例所示的生成预设重打分模型的方法的示例性流程图;
13.图5是根据本说明书一些实施例所示的生成重打分模型的方法的示意图;
14.图6是根据本说明书一些实施例所示的模型遍历的方法的示例性示意图;
15.图7是根据本说明书一些实施例所示的语音识别实时重打分的方法的示例性示意图;
16.图8是根据本说明书一些实施例所示的生成预设重打分模型方法的示例性流程图。
具体实施方式
17.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
18.应当理解,本文使用的“系统”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
19.如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
20.本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
21.图1是根据本说明书一些实施例所示的语音识别实时重打分的系统的应用场景示意图。语音识别实时重打分的系统100(以下称为系统100)可以包括服务器110、网络120、存储设备130、语音采集设备140和用户150。
22.服务器110可以用于管理资源以及处理来自本系统至少一个组件或外部数据源(例如,云数据中心)的数据和/或信息。在一些实施例中,服务器110可以是单个服务器,也可以是服务器组。服务器组可以是集中式的或分布式的。在一些实施例中,服务器110可以是本地的,也可以是远程的。例如,服务器110可以通过网络120接收或获取语音采集设备140采集的语音数据和/或存储设备130中的信息和/或数据。又例如,服务器110可以直接连接到语音采集设备140和/或存储设备130以访问存储信息和/或数据。在一些实施例中,服务器110可以在云平台或车载计算机上实现。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,服务器110可以从存储设备130中获取用于执行本说明书一些实施例所示的语音识别实时重打分相关数据和/或信息,例如,语音数据、语言模型、解码模型、打分模型等。
23.在一些实施例中,服务器110可以包括处理引擎112。处理引擎112可以处理与语音识别实时重打分相关的信息和/或数据,以执行本技术中描述的一个或以上功能。在一些实施例中,服务器110可以包括用于语音识别实时重打分的模型,例如,解码模型、预设打分模型。在一些实施例中,处理引擎112可以通过解码模型对语音数据进行解码获得文字形式的语音识别结果,通过预设的打分模型对语音识别结果进行实时重打分,以获得最优的语音识别结果。在一些实施例中,处理引擎112可以基于已有的语言模型,生成解码模型和/或预设打分模型。在一些实施例中,处理引擎112可以通过将多个打分模型合并以获取预设打分模型。在一些实施例中,服务器110可以将处理引擎112生成的模型、文字语音识别结果等数据和/或信息发送到存储设备130中,以进行保存。在一些实施例中,服务器110可以将文字语音识别结果发送给语音采集设备140、用户终端和/或输出设备等,以对用户150进行反馈和/或对文字语音识别结果进行展示。
24.在一些实施例中,处理引擎112可包括一个或以上处理引擎(例如,单芯片处理引擎或多芯片处理引擎)。仅作为示例,处理引擎112可以包括中央处理单元(cpu)、特定应用集成电路(asic)、特定应用指令集处理器(asip)、图形处理单元(gpu)、物理处理单元(ppu)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑设备(pld)、控制器、微控制器单元、精简指令集计算机(risc)、微处理器等或其任意组合。
25.网络120可以促进信息和/或数据的交换。在一些实施例中,系统100的一个或以上组件(例如,服务器110、存储设备130、语音采集设备140)可以经由网络120将信息和/或数据发送至系统100的其他组件。例如,服务器110可以经由网络120获取语音采集设备140采集的语音数据。又例如,服务器110、语音采集设备140可以通过网络120从存储器130中获取数据和/信息,和/或向存储器130中写入数据和/信息。在一些实施例中,网络120可以为任意形式的有线或无线网络,或其任意组合。仅作为示例,网络120可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(lan)、广域网络(wan)、无线局域网络(wlan)、城域网(man)、公共交换电话网络(pstn)、蓝牙网络、紫蜂网络、近场通讯(nfc)网络等或其任意组合。
26.存储设备130可以储存数据和/或指令。在一些实施例中,存储设备130可以存储从语音采集设备140获取的数据,例如,采集的语音数据等。在一些实施例中,存储设备130可以储存服务器110用来执行或使用以完成本技术中描述的示例性方法的数据和/或指令,例如,解码模型、打分模型、文字语音识别结果等。在一些实施例中,存储设备130可包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(rom)等或其任意组合。在一些实施例中,存储设备130可在云平台上实现。仅作为示例,该云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。
27.在一些实施例中,存储设备130可以连接到网络120以与系统100的一个或以上组件(例如,服务器110、语音采集设备140)通信。系统100的一个或以上组件可以经由网络120访问存储在存储设备130中的数据或指令。在一些实施例中,存储设备130可以直接连接到系统100的一个或以上组件(例如,服务器110和语音采集设备140)或与之通信。在一些实施例中,存储设备130可以是服务器110的一部分。在一些实施例中,存储设备130可以集成在语音采集设备140中。
28.语音采集设备140可以采集用户150的语音数据,以用于获取语音识别结果,例如,
文字形式的语音识别结果。语音采集设备140可以是任何可以输入并采集语音或者包含了语音输入和采集模块的设备和/或装置。在一些实施例中,语音采集设备140可以包括移动设备140
‑
1、平板计算机140
‑
2、膝上型计算机140
‑
3、麦克风140
‑
4等,或其任意组合。移动设备140
‑
1可以是任何能够进行语音输入和采集的移动/手持设备,例如,智能手机、个人数字处理、手持智能终端等;平板计算机140
‑
2可以是任何能够进行语音输入和采集的智能平板设备,例如,安卓平板、ipad等;膝上型计算机140
‑
3可以是任何集成了麦克风等语音输入模块的笔记本电脑等;麦克风140
‑
4可以是单独的设备或者是集成了麦克风的设备,例如,话筒、集成了麦克风的耳机、集成了麦克风的vr设备等。在一些实施例中,语音采集设备140可以包括用于获取语音数据/材料的设备和/或模块,例如,用于获取语音的麦克风140
‑
5或获取语音数据/材料的模块等。在一些实施例中,语音采集设备140可以通过任何语音输入设备(例如,麦克风等)获取用户150的语音数据,例如,对话等。在一些实施例中,语音采集设备140可以通过网络120与服务器110和/或存储设备130进行通信和/或连接。例如,语音采集设备140可以通过网络120将获取的语音数据/材料提供给服务器110。在一些实施例中,语音采集设备140可以直接与服务器110连接或者集成于其内部。在一些实施例中,语音采集设备140可以接收服务器110返回的文字语音识别结果,并向用户150进行展示。
29.用户150可以提供用于识别的语音数据。用户150可以通过语音采集设备140将语音数据提供给服务器110,处理引擎112通过模型对语音数据进行识别,获取文字语音识别结果。在一些实施例中,用户150可以通过语音采集设备140、用户终端或其他设备获取服务器110的文字语音识别结果。
30.应当注意系统100仅仅是为了说明的目的而提供,并不意图限制本技术的范围。对于本领域的普通技术人员来说,可以根据本技术的描述,做出多种修改或变化。例如,系统100还可以包括语音数据库、语音信息源等。又例如,服务器110和语音采集设备140可以是一体的。系统100可以在其他设备上实现以实现类似或不同的功能。然而,变化和修改不会背离本技术的范围。
31.图2是根据本说明书一些实施例所示的语音识别实时重打分的系统的示意图。在一些实施例中,系统200可以包括特征获取模块210、候选结果获取模块220和目标结果确定模块230。
32.特征获取模块210可以用于获取语音材料中语音帧的特征。关于如何获取语音材料中语音帧的特征的更多细节可以参见图3及其描述。
33.候选结果获取模块220可以用于基于语音帧的特征,通过解码模型和预设重打分模型获取候选语音识别结果。在一些实施例中,预设重打分模型用于对解码模型的语音识别结果的分数进行实时修正。
34.预设重打分模型是指预先指定的用于对语音识别结果重打分的模型。在一些实施例中,预设重打分模型可以包括预先保存的分数。在一些实施例中,预设重打分模型可以包括预先保存的分数的修正值。
35.修正后分数为对解码模型的语音识别结果的分数修正后得到的分数。在一些实施例中,实时修正可以包括基于分数与修正值获取修正后分数。在一些实施例中,可以通过将分数与修正值求和对解码模型的语音识别结果的分数进行实时的修正,获取修正后分数。例如,分数为0.5分,修正值为
‑
0.03,两者进行求和,可以获取修正后分数为0.47。
36.目标结果确定模块230可以用于基于候选语音识别结果确定目标语音识别结果。关于如何基于候选语音识别结果确定目标语音识别结果的更多细节可以参见图3及其描述。
37.在一些实施例中,预设重打分模型可以为预先生成的模型。在一些实施例中,系统200还可以包括语言模型获取模块240、解码模型生成模块250、打分模型生成模块260和重打分模型生成模块270。
38.语言模型获取模块240可以用于获取第一语言模型和第二语言模型。在一些实施例中,第二语言模型可以通过对预设的语言模型进行训练得到。在一些实施例中,第一语言模型可以通过裁剪第二语言模型得到。关于如何获取第一语言模型和第二语言模型的更多细节可以参见图4及其描述。
39.解码模型生成模块250可以用于基于第一语言模型生成解码模型。关于如何基于第一语言模型生成解码模型的更多细节可以参见图4及其描述。
40.打分模型生成模块260可以用于基于第一语言模型和第二语言模型生成第一打分模型和第二打分模型。关于如何基于第一语言模型和第二语言模型生成第一打分模型和第二打分模型的更多细节可以参见图4及其描述。
41.重打分模型生成模块270可以用于通过将第一打分模型和第二打分模型合并得到预设重打分模型。关于如何通过将第一打分模型和第二打分模型合并得到预设重打分模型的更多细节可以参见图4及其描述。
42.在一些实施例中,重打分模型生成模块270可以包括分数获取单元271、模型更新单元272和模型确定单元273。
43.分数获取单元271可以用于通过对第二打分模型进行遍历获取语音识别结果分数二,并基于对第二打分模型的遍历,同步对第一打分模型进行遍历以获取语音识别结果分数一。
44.在一些实施例中,可以在遍历第二打分模型的同时,在第一打分模型中确定与第二打分模型的特征对应的特征,从而对第一打分模型进行同步遍历,该对应特征可以是第一打分模型和第二打分模型共有的特征,例如,一致的弧等。
45.在一些实施例中,可以基于第二打分模型中的弧,在第一打分模型中确定与第二打分模型中的弧的对应弧。在一些实施例中,当在第一打分模型中找到与第二打分模型中的弧一致的弧时,将一致的弧确定为对应弧;当在第一打分模型中找不到与第二打分模型中的弧一致的弧时,通过回退将回退步数最少的一致的弧确定为对应弧。关于遍历和回退的更多细节可以参见图6及其描述。
46.模型更新单元272可以用于基于语音识别结果分数一和语音识别结果分数二的差值更新第二打分模型。关于如何基于语音识别结果分数一和语音识别结果分数二的差值更新第二打分模型的更多细节可以参见图5及其描述。
47.模型确定单元273可以用于基于更新后的第二打分模型确定预设重打分模型。
48.修正值是指对语音识别结果的分数进行修正时依据的值。在一些实施例中,修正值可以为第一打分模型和第二打分模型的语音识别结果分数的差值。例如,第一打分模型的语音识别结果分数一为0.6分,第二打分模型的语音识别结果分数二为0.63分,则修正值可以为
‑
0.03分或0.03分。在一些实施例中,语音识别结果分数一和语音识别结果分数二相
减的顺序是固定的。例如,修正值是基于语音识别结果分数一减去语音识别结果分数二得到的。仍以上述示例为例,则修正值为
‑
0.03分。
49.图3是根据本说明书一些实施例所示的语音识别实时重打分的方法的示例性流程图。如图3所示,流程300包括下述步骤。
50.步骤310,获取语音材料中语音帧的特征。在一些实施例中,步骤310可以由特征获取模块210执行。
51.特征是指语音材料中包含的信息。例如,响度、音高等。在一些实施例中,特征可以是指语音材料中的音素。
52.特征获取模块210可以通过多种方式获取语音材料中语音帧的特征,并生成特征向量。
53.在一些实施例中,特征获取模块210可以以固定时间间隔提取语音帧特征,生成语音的特征组成的序列;然后使用声学模型计算每个语音帧中音素的概率,生成一个矩阵,矩阵的每一行对应一个特征向量,每一个特征向量对应一帧语音,矩阵中的每一个元素表示音素的概率,n帧的语音组成了矩阵,每一列都对应相同的音素。音素的数量是固定的,比如80个。每一帧语音在每个音素上都有一个概率值,每一帧中所有音素的概率加起来为1。
54.步骤320,基于语音帧的特征,通过解码模型和预设重打分模型获取候选语音识别结果。在一些实施例中,步骤320可以由候选结果获取模块220执行。
55.候选语音识别结果是指包含至少一个语音识别结果的集合,可以从中确定目标语音识别结果。目标语音识别结果的说明可以参见下文。
56.候选语音识别结果可以包括解码模型的语音识别结果。在一些实施例中,候选语音识别结果可以包括解码模型的语音识别结果和实时修正后的分数。
57.解码模型和预设重打分模型可以为各种能够实现解码和重打分的模型。在一些实施例中,解码模型可以为解码网络hclg。在一些实施例中,预设重打分模型可以为加权有限状态机(weighted finite
‑
state transducer,wfst)。
58.候选结果获取模块220可以将矩阵和/或特征向量输入到解码模型(例如,解码网络hclg)中,得到有向图结构。有向图结构包括多个弧和节点,弧具有输入、输出和权重。权重可以用来对弧构成的序列打分。弧的序列是弧的有序集合,可以反映出词的有序集合,例如,“今天是星期一”、“我是张三”。在一些实施例中,弧构成的序列可以反映出整个语音识别过程的顺序。例如,通过弧的序列中弧的顺序,可以反映语音识别过程中识别出来的词的顺序。在一些实施例中,分数可以表示语音识别结果的置信度和/或准确度。例如,分数越高,表示语音识别结果的可信度和准确度越高。弧的输入为音素之间跳转的id,弧的输出为0时,表示没有语音识别结果,输出不为0时,对应到语音识别结果,即弧的序列反映出的词的序列。预设重打分模型可以对弧输出的语音识别结果进行重打分,得到实时修正后的分数,进而可以获取候选语音识别结果。关于重打分的更多细节可以在本说明书的其他地方找到。
59.步骤330,基于候选语音识别结果确定目标语音识别结果。在一些实施例中,步骤330可以由目标结果确定模块230执行。
60.目标语音识别结果是最终确定的准确度和/或置信度最高的语音识别结果。其中,准确度和/或置信度可以用百分比或分数等来表示。例如,在准确度为80%、90%的两个语
音识别结果中,将准确度为90%的语音识别结果确定为目标语音识别结果。又例如,在分数为0.8、0.85、0.78的三个语音识别结果中,将分数为0.85的语音识别结果确定为目标语音识别结果。
61.目标结果确定模块230可以通过多种方式确定目标语音识别结果。在一些实施例中,目标结果确定模块230可以基于候选语音识别结果的分数获取最优语音识别结果,将最优语音识别结果确定为目标语音识别结果。
62.在本说明书一些实施例中,使用预先生成的重打分模型对解码模型的语音识别结果进行重打分,节省了模型生成的时间,减少了解码时的资源占用;预设的重打分模型存储了分数的修正值,可以直接对解码模型的分数通过简单的计算进行实时修正,加快了重打分速度,无需在多个解码模型中搜索路径并进行计算,只需在重打分模型中搜索即可;同时减少了内存占用,减少了解码网络的个数。
63.图4是根据本说明书一些实施例所示的生成预设重打分模型的方法的示例性流程图。
64.在一些实施例中,预设重打分模型可以为预先生成的模型。如图4所示,流程400包括下述步骤。
65.步骤410,获取第一语言模型和第二语言模型。在一些实施例中,步骤410可以由语言模型获取模块240执行。
66.在一些实施例中,第一语言模型和第二语言模型可以是arpa格式的语言模型。
67.语言模型获取模块240可以通过多种方式获取第一语言模型和第二语言模型。在一些实施例中,语言模型获取模块240可以对预设的arpa格式的语言模型进行训练得到第二语言模型。训练的方式可以包括但不限于监督学习等。在一些实施例中,语言模型获取模块240可以从第二语言模型中裁剪出一个体积较小的语言模型,作为第一语言模型。裁剪的方式可以有多种。例如,限定状态和弧的数量。又例如,删除不重要的状态和弧,保留分数较高的状态和弧。
68.步骤420,基于第一语言模型生成解码模型。在一些实施例中,步骤420可以由解码模型生成模块250执行。
69.解码模型生成模块250可以通过多种方式生成解码模型。在一些实施例中,解码模型生成模块250可以基于第一语言模型生成解码模型。在一些实施例中,解码模型生成模块250可以根据第一语言模型和声学模型以及字典文件,生成解码模型hclg.fst。
70.步骤430,基于第一语言模型和第二语言模型生成第一打分模型和第二打分模型。在一些实施例中,步骤430可以由打分模型生成模块260执行。
71.第一打分模型和第二打分模型是指可以用来对语音识别结果进行打分的模型。在一些实施例中,第一打分模型和第二打分模型可以对有向图结构中的弧的输出(即,语音识别结果)进行打分。
72.在一些实施例中,第一打分模型和第二打分模型可以为各种可以用于打分的模型。在一些实施例中,第一打分模型和第二打分模型可以为加权有限状态机。
73.在一些实施例中,可以对第一打分模型的规模和第二打分模型的规模进行限定。例如,第一打分模型的规模和第二打分模型的规模是不相等的。在一些实施例中,第一打分模型的规模小于第二打分模型的规模。
74.在一些实施例中,第一打分模型和第二打分模型之间可以存在关联。例如,第一打分模型和第二打分模型之间至少一部分是相同的。在一些实施例中,第一打分模型可以是第二打分模型的一部分。
75.打分模型生成模块260可以通过多种方式生成第一打分模型和第二打分模型。在一些实施例中,打分模型生成模块260可以通过将第一语言模型和第二语言模型转换为有限状态机(finite
‑
state transducer,fst),以生成第一打分模型和第二打分模型。
76.步骤440,通过将第一打分模型和第二打分模型合并得到预设重打分模型。在一些实施例中,步骤440可以由重打分模型生成模块270执行。
77.重打分模型生成模块270可以通过多种方式生成预设重打分模型。在一些实施例中,重打分模型生成模块270可以通过将第一打分模型和第二打分模型合并得到预设重打分模型。关于通过将第一打分模型和第二打分模型合并得到预设重打分模型的更多细节可以参见图5及其描述。
78.在本说明书一些实施例中,第一语言模型是通过裁剪第二语言模型得到的。如此设置,一是提高了第一语言模型的准确性,即裁剪第二语言模型时,将分数高的状态和弧保存为第一语言模型;二是减少了工作量,即不需要再单独训练一个语言模型,将其作为第一语言模型。
79.应当注意的是,上述有关流程300、400的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程300、400进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,步骤320可以合并到步骤330中。
80.图5是根据本说明书一些实施例所示的生成重打分模型的方法500的示意图。
81.语音识别结果分数是指通过打分模型对语音识别结果进行打分得到的分数。例如,第一打分模型对语音识别结果打分为0.6分,则语音识别结果分数一为0.6分。又例如,第二打分模型对语音识别结果打分为0.63分,则语音识别结果分数二为0.63分。
82.重打分模型生成模块270可以通过多种方式得到预设重打分模型。在一些实施例中,重打分模型生成模块270可以通过将第一打分模型和第二打分模型合并得到预设重打分模型。在一些实施例中,分数获取单元271可以通过对第二打分模型进行遍历获取语音识别结果分数二,并基于对第二打分模型的遍历,同步对第一打分模型进行遍历以获取语音识别结果分数一,模型更新单元272可以基于语音识别结果分数一和语音识别结果分数二的差值更新第二打分模型,模型确定单元273可以基于更新后的第二打分模型确定预设重打分模型。关于遍历的更多细节可以参见图6及其描述。
83.分数获取单元271可以通过多种方式进行遍历。例如,深度优先遍历或广度优先遍历等。在一些实施例中,分数获取单元271遍历的方式可以为递归的深度优先遍历。
84.更新和遍历是有顺序要求的。在一些实施例中,模型更新单元272可以在分数获取单元271遍历第一打分模型和第二打分模型的同时更新第二打分模型。
85.在一些实施例中,可以将第一打分模型和第二打分模型的语音识别结果的分数的差值确定为修正值。例如,将第二打分模型的语音识别结果的分数减去第一打分模型的语音识别结果的分数,所得差作为修正值。
86.模型更新单元272可以通过多种方式更新第二打分模型。例如,模型更新单元272
可以基于语音识别结果分数一和语音识别结果分数二对第二打分模型进行更新。在一些实施例中,模型更新单元272可以使用语音识别结果分数一和语音识别结果分数二的差值,即修正值,替换第二打分模型中的语音识别结果分数二,完成第二打分模型的更新。
87.在本说明书一些实施例中,使用差值进行更新,将更新后的第二打分模型确定为预设重打分模型,简化了重打分模型的生成,同时也降低了重打分过程中分数计算的复杂度,提升了解码速度,也减少了内存资源的占用。
88.图6是根据本说明书一些实施例所示的模型遍历的方法600的示例性示意图。
89.在一些实施例中,第一打分模型和第二打分模型可以是有向图结构,有向图结构包括多个弧和节点。关于弧的更多细节,可以参见步骤320中的相关说明。
90.在一些实施例中,在第一打分模型中与第二打分模型存在对应的弧,即弧的输出具有特定关系,例如,输出为相同或相近的语音识别结果等。
91.对打分模型的遍历是指访问模型的节点和弧,以获取模型的所有可能的弧的序列。在一些实施例中,对模型的遍历即是获取所有可能的语音识别结果。
92.同步遍历是指第二打分模型遍历弧的序列时,在第一打分模型中同步寻找与第二打分模型的弧的序列对应的弧的序列。由于弧的序列是由弧组成的有序集合,因此需找对应的弧的序列的过程,实质上就是需找弧的序列中下一条对应的弧的过程。例如,在第二打分模型中遍历到“今天是星期一晚上”弧的序列,而在第二打分模型中已找到“今天是星期一”弧的序列,那么,需要在第二打分模型中寻找下一条弧,使得新的弧的序列为“今天是星期一晚上”。在一些实施例中,对应的弧的序列可以是完全一致的弧的序列,也可以是最接近的弧的序列。例如,对于“今天是星期一晚上”,如果不能找到完全一致的,则可以将“是星期一晚上”确定为对应的弧的序列。
93.在一些实施例中,分数获取单元271可以通过多种方式基于第二打分模型中的弧,在第一打分模型中确定与第二打分模型中的弧的对应弧。在一些实施例中,分数获取单元271当在第一打分模型中找到与第二打分模型中的弧一致的弧时,将一致的弧确定为对应弧。例如,如图6所示,第二打分模型中的弧为“今天是星期一晚上”(即弧的对应输出为“今天是星期一晚上”,下同),分数获取单元271在第一打分模型中找到与第二打分模型中的弧一致的弧,即“今天是星期一晚上”,则将第一打分模型中的弧“今天是星期一晚上”,确定为对应弧。
94.在一些实施例中,分数获取单元271当在第一打分模型中找不到与第二打分模型中的弧一致的弧时,通过回退将回退步数最少的一致的弧确定为对应弧。例如,如图6所示,第二打分模型中的弧为“今天是星期一晚上”,分数获取单元271在第一打分模型中找到“今天是星期一”所对应的弧,但是进一步在第一打分模型中寻找时,没有找到“今天是星期一晚上”所对应的弧,因此,需要回退一次到“是星期一”所对应的弧,然后继续寻找“是星期一晚上”所对应的弧,分数获取单元271在第一打分模型中找到了弧“是星期一晚上”,所以将回退步数最少的一致的弧“是星期一晚上”,确定为对应弧。
95.在一些实施例中,分数获取单元271可以在对第二打分模型中进行遍历的同时,基于第二打分模型中的弧,对第一打分模型进行同步遍历。例如,分数获取单元271遍历到第二打分模型中的弧“今天是星期一晚上”时,在第一打分模型中确定与第二打分模型中的“今天是星期一晚上”的弧所对应的弧。
96.回退步数是指回退时需要去掉词的次数。在一些实施例中,回退步数是指对于弧所对应的词序列从前到后依次去掉词,每去掉一个为回退一步。
97.图7是根据本说明书一些实施例所示的语音识别实时重打分的方法700的示例性示意图。
98.如图7所示,语音识别的过程是,基于用户语音生成特征序列,然后使用声学模型处理特征序列,再进行解码搜索,即可得到识别结果。在解码搜索时,需要用到预设重打分模型gf.fst和解码模型hclg.fst。在一些实施例中,预设重打分模型gf.fst是重打分模型生成模块270使用第一打分模型g1.fst和第二打分模型g2.fst提前生成的,预设重打分模型gf.fst保存了每个语音识别结果在第一打分模型g1.fst和第二打分模型g2.fst中的语音识别结果分数的差值。例如,重打分模型生成模块270基于语音识别结果分数一为0.6分,语音识别结果分数二为0.63分,规定差值为语音识别结果分数二减去语音识别结果分数一,则得到差值为0.03分,并将其保存在预设重打分模型gf.fst中。在对语音识别结果进行实时重打分时,候选结果获取模块220可以直接从预设重打分模型gf.fst中取出与语音识别结果对应的得分,即差值,将通过解码模型hclg.fst得到的语音识别结果的分数与预设重打分模型gf.fst中的对应得分求和,即可得到最终的语音识别结果的分数。
99.在本说明书一些实施例中,基于预设重打分模型gf.fst对解码模型hclg.fst的语音识别结果进行重打分,一是加快了解码速度,原先需要同时在第一打分模型g1.fst和第二打分模型g2.fst中进行一系列计算,现在只需在一个预设重打分模型gf.fst中搜索即可,且不需要计算,加快了解码过程的速度;二是由于减少了解码网络的个数以及保存的中间变量,从而减少了内存占用。
100.图8是根据本说明书一些实施例所示的生成预设重打分模型方法800的示例性流程图。
101.在一些实施例中,第一打分模型g1.fst和第二打分模型g2.fst中的每个状态都具有额外的属性(例如,阶数),该属性并不直接保存在第一打分模型g1.fst和第二打分模型g2.fst的数据结构中,而是一个独立的属性。如图8所示,在一些实施例中,可以通过统计等方法分别获取第一打分模型g1.fst和获取第二打分模型g2.fst中每个状态的ngram阶数,并分别保存到sn1和sn2中。
102.如图8所示,在一些实施例中,可以基于第一打分模型g1.fst构建回退模型gback.fst。在第一打分模型g1.fst中,对于一般的状态,有若干弧,对应了其能接受的若干个输入。给定这些输入中的一个,可以返回权重,并跳转到下一个状态。如果给定的输入不在这些弧可接受的范围内,那么返回一个错误。回退模型gback.fst对第一打分模型g1.fst进行了扩展,可以接受任意的输入。该功能基于这样一个假设:如果某个输入不在该状态的几个弧中,那么通过若干次的回退操作,一定可以找到可接受该输入的弧。回退模型gback.fst允许不断回退,直到找到满足要求的弧。将这几次回退的权重连同符合要求的弧权重,求和作为最终的弧的权重分数返回,并跳转到最终弧的下一状态。
103.如图8所示,在一些实施例中,在遍历第二打分模型g2.fst时,可以借助sn1、sn2和回退模型gback.fst修改弧的权重,并将修改弧的权重后的第二打分模型g2.fst另存为预设重打分模型gf.fst。
104.在一些实施例中,在重打分模型生成模块270遍历第二打分模型g2.fst之前,先获
取第二打分模型g2.fst的初始状态和回退模型gback.fst的初始状态,然后以两个状态作为入参进行递归的深度遍历。在递归函数中,首先判断当前第二打分模型g2.fst的状态是否已经处理过。如果处理过则直接返回。如果未处理过,遍历当前状态的所有弧并更新权重。这里分为三种情况。第一种,如果弧上的输入不是0,表示有语音识别结果输出。这时,假设弧的权重为w2,同时需要从回退模型gback.fst中查询该输入对应的权重值,得到w1。将w2和w1的差值,保存到原先弧上。同时,以当前弧的下一状态和回退模型gback.fst中查询到的下一状态,作为入参,进行递归的调用。第二种,弧上的输入是0,但是两个状态的属性是一致的(通过sn1和sn2进行判断),那么两者都是要进行语言模型回退操作,可以套用第一种情况中的操作方式,即修改权重并用两者的下一状态进行递归调用。第三种情况,弧上的输入是0且状态的属性不一致。这时只需对第二打分模型g2.fst进行回退操作,然后递归调用即可。
105.创建后的模型可以用来解码。在一些实施例中,在解码过程中,对每条解码路径的当前状态,可以额外开辟一个空间保存一个状态值,保存一个对应的gf.fst状态。当解码路径上有词输出,即弧上输出值不为0时,可以从gf.fst中获取对应的权重值,加到当前解码路径上,同时可以更新预设重打分模型gf.fst状态值。
106.上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
107.同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
108.此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
109.同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
110.一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点
可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
111.针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
112.最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。