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

语音识别方法、装置、电子设备和计算机可读存储介质

文献发布时间:2023-06-19 12:24:27


语音识别方法、装置、电子设备和计算机可读存储介质

技术领域

本发明涉及语音识别领域,具体而言,涉及一种语音识别方法、装置、电子设备和计算机可读存储介质。

背景技术

语音识别是指通过计算机把语音信号转换为对应的文本的过程,是实现人与机器交互的主要途径之一。

传统的语音识别主要是基于隐马尔可夫模型-深度神经网络(HMM-DNN)建模的。由于隐马尔可夫模型的建模限制,加之解码器所用到的发音字典、语言模型等诸多手工规则;这些手工规则虽然在数据量较小时可以取得较好的结果,但是在数据量较大时无法充分发挥建模潜力。端到端语音识别相比于传统的语音识别,其可以直接建模从音频序列到文字序列的映射,建模过程相比传统方法更加简单,且由于移除了手工规则,在数据量较大时能充分发挥建模潜力。

然而,目前基于注意力机制的端到端语音识别模型(例如,Transformer模型)中,因注意力机制在计算时依赖所有时刻的特征输入,即在识别一段语音的内容时,需要输入整段语音,无法实时识别,这种计算方式制约了端到端语音识别模型的应用场景,使其在流式语音识别场景下难以取得较好的识别效果。

发明内容

有鉴于此,本发明的目的在于提供一种语音识别方法、装置、电子设备和计算机可读存储介质,解决了现有技术中端到端语音识别模型要求完整的语音输入,无法实时识别,在流式语音识别场景下难以取得较好的识别效果的问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明提供一种语音识别方法,所述方法包括:

获取待识别语音信号对应的语音特征序列;

对所述语音特征序列进行分块,得到多个语音特征块;

将所述多个语音特征块输入预先训练的语音识别模型,利用所述语音识别模型的编码器对所述多个语音特征块进行自注意力编码,得到所述编码器的输出特征;

利用所述语音识别模型的连接时序分类模块对所述编码器的输出特征进行截断处理,得到多个特征片段;

利用所述语音识别模型的解码器对每个所述特征片段进行解码,得到所述待识别语音信号对应的识别结果。

在可选的实施方式中,所述编码器包括多个注意力层,所述利用所述语音识别模型的编码器对所述多个语音特征块进行自注意力编码,得到所述编码器的输出特征,包括:

在每个注意力层获取到输入信息后,根据所述注意力层对应的上下文配置信息,确定所述输入信息中的每个信息块对应的上下文信息,并依据每个信息块以及每个信息块对应的上下文信息进行自注意力计算,以得到所述注意力层的输出结果;其中,所述多个注意力层中的第一个注意力层的输入信息为所述多个语音特征块,除所述第一个注意力层之外的其他注意力层的输入信息为前一个注意力层的输出结果;

将所述多个注意力层中的最后一个注意力层的输出结果作为所述编码器的输出特征。

在可选的实施方式中,所述每个信息块对应的上下文信息包括与所述信息块相邻的前一个信息块和/或后一个信息块。

在可选的实施方式中,所述利用所述语音识别模型的连接时序分类模块对所述编码器的输出特征进行截断处理,得到多个特征片段,包括:

获取所述连接时序分类模块根据所述编码器的输出特征生成的概率向量;

根据所述概率向量确定每个文字对应的截断点;

根据所述截断点将所述编码器的输出特征截断为多个特征片段。

在可选的实施方式中,所述根据所述概率向量确定每个文字对应的截断点,包括:

根据所述概率向量获取当前时刻对应的文字输出概率和所述当前时刻的前一时刻对应的文字输出概率;

若所述当前时刻对应的文字输出概率表征当前时刻有文字出现,并且所述前一时刻对应的文字输出概率表征所述前一时刻没有文字出现或者所述前一时刻出现的文字与所述当前时刻出现的文字不同,则将所述当前时刻确定为截断点。

在可选的实施方式中,所述根据所述截断点将所述编码器的输出特征截断为多个特征片段,包括:

根据每个所述截断点确定预设时间长度的截断窗口;

将每个所述截断窗口对应的所述编码器的输出特征作为一个特征片段,从而将所述编码器的输出特征截断为多个特征片段。

在可选的实施方式中,所述利用所述语音识别模型的解码器对每个所述特征片段进行解码,得到所述待识别语音信号对应的识别结果,包括:

根据当前时刻对应的所述特征片段和所述解码器在所述当前时刻之前的所有文字输出结果,计算所述解码器在所述当前时刻的初始文字输出概率;

根据所述解码器在所述当前时刻的初始文字输出概率和所述连接时序分类模块在所述当前时刻的文字输出概率,计算所述解码器在所述当前时刻的文字输出结果;

根据所述解码器在每个时刻的文字输出结果得到所述待识别语音信号对应的识别结果。

第二方面,本发明提供一种语音识别装置,所述装置包括:

特征提取模块,用于获取待识别语音信号对应的语音特征序列;

特征处理模块,用于对所述语音特征序列进行分块,得到多个语音特征块;

识别结果确定模块,用于将所述多个语音特征块输入预先训练的语音识别模型,利用所述语音识别模型的编码器对所述多个语音特征块进行自注意力编码,得到所述编码器的输出特征;利用所述语音识别模型的连接时序分类模块对所述编码器的输出特征进行截断处理,得到多个特征片段;利用所述语音识别模型的解码器对每个所述特征片段进行解码,得到所述待识别语音信号对应的识别结果。

第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现前述实施方式任一项所述的方法。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式任一项所述的方法。

本发明实施例提供的语音识别方法、装置、电子设备和计算机可读存储介质,该方法包括:获取待识别语音信号对应的语音特征序列,对该语音特征序列进行分块,得到多个语音特征块,将该多个语音特征块输入预先训练的语音识别模型,利用语音识别模型的编码器对多个语音特征块进行自注意力编码,得到编码器的输出特征,利用语音识别模型的连接时序分类模块对编码器的输出特征进行截断处理,得到多个特征片段,利用语音识别模型的解码器对每个特征片段进行解码,得到待识别语音信号对应的识别结果。本发明实施例通过对送入注意力机制的语音特征序列进行分块,使得编码器基于划分的多个语音特征块进行自注意力计算,有效破除了自注意力机制的全局依赖性,同时还结合了连接时序分类模块的截断处理,使得解码器能够针对截断得到的每个特征片段进行解码,不仅实现了实时语音识别,还能保证较高的识别准确率,提升语音交互的流畅性,从而在流式语音识别场景下取得较好的识别效果。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的电子设备的一种方框示意图;

图2示出了本发明实施例提供的语音识别方法的一种流程示意图;

图3示出了语音识别模型的一种结构示意图;

图4示出了本发明实施例提供的语音识别方法的另一种流程示意图;

图5示出了编码器的一种结构示意图;

图6示出了注意力层中上下文信息的示意图;

图7示出了本发明实施例提供的语音识别方法的又一种流程示意图;

图8示出了连接时序分类模块对编码器的输出特征进行截断的示意图;

图9示出了本发明实施例提供的语音识别方法的又一种流程示意图;

图10示出了注意力层考虑上下文信息时的数据流示意图;

图11示出了部分注意力层不考虑上下文信息的数据流示意图;

图12示出了本发明实施例提供的语音识别装置的一种功能模块图。

图标:100-电子设备;110-存储器;120-处理器;130-通信模块;400-语音识别装置;410-特征提取模块;420-特征处理模块;430-别结果确定模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本发明实施例提供的语音识别方法及装置可以应用在端到端的语音识别场景中,尤其在实时字幕、虚拟人实时聊天、智能客服、直播内容实时分析、商业化推荐等流式语音识别场景下,能够有效减少用户的等待时长,提升语音交互的流畅性,进而取得较好的语音识别效果。

请参照图1,是本发明实施例提供的电子设备100的一种方框示意图。该电子设备100包括存储器110、处理器120及通信模块130。存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。

处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。例如,处理器120执行存储器110中存储的计算机程序时,可以实现本发明实施例揭示的语音识别方法。

通信模块130用于通过网络建立电子设备100与其它通信终端之间的通信连接,并用于通过网络收发数据。

在本实施例中,该电子设备100可以是,但不限于服务器、PC(Personal Computer,个人电脑)、智能手机、平板电脑、智能可穿戴设备(诸如智能手表、智能眼镜)、导航设备、多媒体播放器设备、教育设备、游戏设备、智能音箱等设备。

应当理解的是,图1所示的结构仅为电子设备100的结构示意图,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时可以实现本发明实施例揭示的语音识别方法。

请参照图2,为本发明实施例提供的语音识别方法的一种流程示意图。需要说明的是,本发明实施例提供的语音识别方法并不以图2以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例提供的语音识别方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该语音识别方法可以应用在图1所示的电子设备100,下面将对图2所示的具体流程进行详细阐述。

步骤S201,获取待识别语音信号对应的语音特征序列。

在本实施例中,该待识别语音信号可以是用户输入的语音数据。例如,当用户想要通过语音的方式与电子设备100进行交互时,可以直接对着电子设备100上的语音采集装置说话,电子设备100通过该语音采集装置获取用户所说的话,作为待识别语音信号,通过对该待识别语音信号进行特征提取,可以得到对应的语音特征序列。

步骤S202,对语音特征序列进行分块,得到多个语音特征块。

在本实施例中,语音特征序列通常是一个比较长的序列,在对语音特征序列进行分块时,可以按照设定的时间长度将该语音特征序列划分为一个个比较小的块,从而得到多个语音特征块。

例如,将语音特征序列[0,T]切成一个个小块后,得到的多个语音特征块可以分别表示为[0,t1]、[t1,t2]、...、[tn,T]。

步骤S203,将多个语音特征块输入预先训练的语音识别模型,利用语音识别模型的编码器对多个语音特征块进行自注意力编码,得到编码器的输出特征。

在本实施例中,自注意力编码指的是编码器针对输入的多个语音特征块进行自注意力计算,最后得到输出特征的过程。电子设备100中存储有预先训练的语音识别模型,其中,该语音识别模型是指已经训练成熟的模型,该语音识别模型可以是任意能够进行语音识别的模型,本实施例中将采用一种可以实现实时语音识别的流式端到端语音识别模型,图3示例性地示出了该语音识别模型的结构示意图。

如图3所示,该语音识别模型主要包括编码器、CTC(Connectionist TemporalClassification,连接时序分类)模块和解码器,其中,编码器中的流式注意力机制的实现主要是将输入特征进行分片计算,相当于将源音频裁剪成了许多的小段分别处理;编码器-解码器的流式注意力机制的实现,主要是通过CTC模块对编码器的输出特征进行截断处理,从而保证增量计算。其中,编码器中的注意力机制和编码器-解码器的注意力机制不同,编码器中的注意力机制的输入和输出长度是一一对应的。

具体而言,语音特征序列经过分块可得到多个语音特征块,将该多个语音特征块输入该语音识别模型后,该语音识别模型的编码器会基于自身的注意力机制对该多个语音特征块进行自注意力编码,逐块增量计算自注意力,得到的注意力结果决定了在对某个语音特征块进行编码时,要在其他相关的语音特征块上投入多少注意力,最终得到编码器的输出特征,该编码器的输出特征将会作为CTC模块的输入。如此,通过对送入注意力机制的信息进行分块,便可逐块增量计算注意力的信息,从而达到流式的效果。

步骤S204,利用语音识别模型的连接时序分类模块对编码器的输出特征进行截断处理,得到多个特征片段。

在本实施例中,可以采用CTC与Transformer模型联合训练的方式来获得基于CTC的截断器(即本实施例中的连接时序分类模块)。该连接时序分类模块通过对的编码器的输出特征进行CTC处理,可以得到用于截断编码器的输出特征的截断信息,进而基于该截断信息,将编码器的输出特征截断为多个特征片段。

步骤S205,利用语音识别模型的解码器对每个特征片段进行解码,得到待识别语音信号对应的识别结果。

在本实施例中,连接时序分类模块输出的每个特征片段将会被送入解码器进行解码,最终根据解码器对每个特征片段的解码结果,得到待识别语音信号对应的识别结果。

可见,本发明实施例提供的语音识别方法,通过获取待识别语音信号对应的语音特征序列,对该语音特征序列进行分块,得到多个语音特征块,将该多个语音特征块输入预先训练的语音识别模型,利用语音识别模型的编码器对多个语音特征块进行自注意力编码,得到编码器的输出特征,利用语音识别模型的连接时序分类模块对编码器的输出特征进行截断处理,得到多个特征片段,利用语音识别模型的解码器对每个特征片段进行解码,得到待识别语音信号对应的识别结果。本发明实施例通过对送入注意力机制的语音特征序列进行分块,使得编码器基于划分的多个语音特征块进行自注意力计算,有效破除了自注意力机制的全局依赖性,同时还结合了连接时序分类模块的截断处理,使得解码器能够针对截断得到的每个特征片段进行解码,不仅实现了实时语音识别,还能保证较高的识别准确率,提升语音交互的流畅性,从而在流式语音识别场景下取得较好的识别效果。

在本实施例中,上述的编码器和解码器的内部结构可以采用Transformer模型自带的结构实现,当然,在其他实现方式中,编码器和解码器也可以采用其他结构。

在一种实施方式中,上述的编码器可以包括多个注意力层,该多个注意力层的具体层数可以根据实际需要进行配置,本发明实施例对此不进行限制;通过该多个注意力层可以从编码器的输入信息中提取出更有用的信息,从而得到编码器的输出特征。如图4所示,以编码器的结构采用Transformer模型实现为例,编码器可以由N(例如,N=6)层基于自注意力机制的注意力层构成,则编码器中的每个注意力层可以理解为带自注意力模块的Transformer编码器子层,每个注意力层包括自注意力模块和前馈神经网络,当然还可以包括其他的模块。在实际应用中,还可以根据需要对每个注意力层中包含的模块进行增减。请参照图5,上述的步骤S203可以包括如下子步骤:

子步骤S2031,在每个注意力层获取到输入信息后,根据注意力层对应的上下文配置信息,确定输入信息中的每个信息块对应的上下文信息,并依据每个信息块以及每个信息块对应的上下文信息进行自注意力计算,以得到注意力层的输出结果;其中,多个注意力层中的第一个注意力层的输入信息为多个语音特征块,除第一个注意力层之外的其他注意力层的输入信息为前一个注意力层的输出结果。

子步骤S2032,将多个注意力层中的最后一个注意力层的输出结果作为编码器的输出特征。

在本实施例中,每个信息块对应的上下文信息可以包括与信息块相邻的前一个信息块和/或后一个信息块,即在每个注意力层进行信息块的自注意力计算时,可以考虑信息块的上下文信息。

针对每个注意力层,都预先配置有对应的上下文配置信息,该上下文配置信息可用于注意力层进行自注意力计算时,判断是否考虑上下文信息,以及信息块对应的上下文信息包括哪些内容。其中,本实施例中主要以上下文信息包括当前信息块的前一个信息块和后一个信息块为例进行说明。

在本实施例中,将多个语音特征块作为输入信息输入语音识别模型的编码器后,由编码器中的第一个注意力层根据每个信息块(即语音特征块)以及每个信息块对应的上下文信息进行自注意力计算,可以得到第一个注意力层的输出结果。该第一个注意力层的输出结果将作为第二个注意力层(即第一个注意力层的后一个注意力层)的输入信息,第二个注意力层的输入信息同样包括多个信息块,第二个注意力层针对信息块,每个采用相同的方式进行自注意力计算,最终得到的输出结果又将作为后一个注意力层的输入信息,依次类推,直到最后一个注意力层完成对输入信息的处理,得到相应的输出结果。最后,将该最后一个注意力层的输出结果作为编码器的输出特征。

其中,本实施例中的注意力层为多头注意力层,多头的意思是注意力层会计算多组注意力,每组注意力关注输入信息的不同部分,实现从不同角度提取信息。例如,假设输入信息的特征维度为256,注意力层包括4个注意力头,那么每个注意力层实际上会计算4组注意力结果,每组输出的维度为64,最后将该4组64维度的注意力结果拼接(concat)在一起,变成256维度,得到最终的输出结果。

此外,每个注意力层任一时刻的输出结果,可以看做是一个信息块,则不同时刻的输出结果,在输入到后一个注意力层后,后一个注意力层先对上一时刻的信息块(假设为[t6,t7])、当前时刻的信息块(假设为[t7,t8])和下一时刻的信息块(假设为[t8,t9])进行拼接处理,得到一个包括当前信息块以及该当前信息块对应的上下文信息的数据段(即[t6,t9]),然后基于该拼接得到的数据段进行自注意力计算。需要说明的是,在拼接数据段时,对于初始时刻和结尾时刻的信息块,由于初始时刻的上一时刻没有对应的信息块,而结尾时刻的下一时刻也没有对应的信息块,则可以补充一个数据全为0的信息块分别作为上一时刻的信息块和下一时刻的信息块。其中,补充的信息块与常规的信息块相比,格式和体积相同,但补充的信息块中的数据全为0,而常规的数据块中的数据有大有小,但不会为0。

如图6所示,current chunk为当前信息块,left context和right context为当前信息块对应的上下文信息,对于每个信息块,可以分别创建查询向量query(Q)、键向量key(K)和值向量value(V),对于某个查询向量query(当前信息块),通过计算query和各个key的相似性或者相关性,得到每个key对应的value的权重系数,再通过softmax函数归一化后,对权重系数和相应value进行加权求和,得到注意力结果,自注意力计算公式可以参照

可见,本发明实施例提供的语音识别方法,通过对送入注意力机制的信息进行分块,且每个注意力层进行注意力计算考虑的是信息块的上下文信息,并不依赖于所有时刻的特征输入,故可以达到流式的效果。并且,利用每个注意力层对应的上下文配置信息判断是否考虑上下文信息,以及信息块对应的上下文信息包括哪些内容,可以有效控制语音识别模型的延迟,从而提高用户的语音交互体验。

在一种实施方式中,请参照图7,上述的步骤S204可以包括如下子步骤:

子步骤S2041,获取连接时序分类模块根据编码器的输出特征生成的概率向量。

子步骤S2042,根据概率向量确定每个文字对应的截断点。

子步骤S2043,根据截断点将编码器的输出特征截断为多个特征片段。

在本实施例中,该连接时序分类模块在接收到编码器的输出特征后,可以采用CTC算法对编码器的输出特征进行计算,进而生成相应的概率向量。其中,CTC算法是用来解决时序类数据的分类问题,它的输入通常是语音的特征帧,输出是对应帧的文字分类。

可以理解,该概率向量中可以包括不同类别概率,并且在有文字出现的时刻产生概率尖峰(即上述的截断信息),即在出现文字的时刻,对应文字的概率会很大;而在没有文字的时刻,空白字符的概率会很大。因此,利用概率向量中的概率尖峰信息便可以确定每个文字对应的截断点,进而根据截断点将编码器的输出特征截断为多个特征片段。

可选地,该连接时序分类模块根据概率向量确定每个文字对应的截断点可以采用如下方式,即上述的子步骤S2042包括:根据概率向量获取当前时刻对应的文字输出概率和当前时刻的前一时刻对应的文字输出概率;若当前时刻对应的文字输出概率表征当前时刻有文字出现,并且前一时刻对应的文字输出概率表征前一时刻没有文字出现或者前一时刻出现的文字与当前时刻出现的文字不同,则将当前时刻确定为截断点。

在本实施例中,当前时刻对应的文字输出概率可以理解为连接时序分类模块在当前时刻生成的不同类别概率中的最大值,该不同类别概率包括没有文字出现(空白字符)的概率以及可能出现的各种不同类别文字对应的概率;同理,前一时刻对应的文字输出概率为连接时序分类模块在前一时刻生成的不同类别概率中的最大值。因此,基于当前时刻对应的文字输出概率可以判定当前时刻对应的是空白字符还是文字,若是文字,则最可能出现的是哪个文字;基于前一时刻对应的文字输出概率,同样可以确定前一时刻对应的是空白字符还是文字,若是文字,则最可能出现的是哪个文字。

假设当前时刻为T时刻,根据T时刻对应的文字输出概率判定当前时刻对应的是文字(即有文字出现),且T-1时刻(即当前时刻的前一时刻)对应的是空白字符或者T-1时刻对应的文字与T时刻对应的文字不同,则T时刻对应的文字输出概率为一个概率尖峰,即可确定T时刻为对应文字的截断点。

可选地,该连接时序分类模块根据截断点将编码器的输出特征截断为多个特征片段可以采用如下方式,即上述的子步骤S2043包括:根据每个截断点确定预设时间长度的截断窗口;将每个截断窗口对应的编码器的输出特征作为一个特征片段,从而将编码器的输出特征截断为多个特征片段。

例如,在连接时序分类模块中预先设置截断窗口的长度为预设时间长度,当确定T时刻为对应文字的截断点后,选取包含截断点在内的预设时间长度的窗口作为截断窗口,并将该截断窗口对应的编码器的输出特征作为截取的特征片段。也即是说,在确定截断点后,将截断点前后一定窗口内的编码器的输出特征作为截断的上下文信息(特征片段),便可将编码器的输出特征截断为多个特征片段,然后将截取的特征片段送入解码器进行解码。如图8所示,多个语音特征块经过编码器处理后,编码器的输出特征将会送入连接时序分类模块中进行截断处理,连接时序分类模块确定截断点后,将截取截断点前后一定窗口内(如图8中的虚线框所示)的编码器的输出特征作为特征片段,并送入解码器进行解码。

需要说明的是,在语音识别模型的应用过程中,基于连接时序分类模块中的截断机制可以确定送入解码器的信息窗口,但是在语音识别模型的训练过程中,送入解码器的是全部的编码器信息,此时会存在训练与解码不一致的问题,从而导致语音识别模型的性能欠佳。为了解决这个问题,本发明实施例在训练语音识别模型时,会使用CTC概率生成的对齐信息,对编码器的输出特征进行截断,再送入解码器进行模型训练。这里的对齐信息指的是文字与音频的对应关系,即一个文字可能会对应一段音频范围。

可见,本发明实施例提供的语音识别方法,通过获取连接时序分类模块根据编码器的输出特征生成的概率向量,并根据概率向量中的概率尖峰信息确定每个文字对应的截断点,将截断点前后一定窗口内的编码器的输出特征作为截断的上下文信息,从而将编码器的输出特征截断为多个特征片段,相比于在注意力机制的概率最大处截断的方式,能够有效提高语音识别精度,提升系统响应速度,尤其在流式端到端语音识别场景下,显著提升了语音识别效果。

在一种实施方式中,请参照图9,上述的步骤S205可以包括如下子步骤:

子步骤S2051,根据当前时刻对应的特征片段和解码器在当前时刻之前的所有文字输出结果,计算解码器在当前时刻的初始文字输出概率。

在本实施例中,可将当前时刻对应的特征片段(即截断的上下文信息)和当前时刻之前解码器的所有文字输出结果作为解码器的输入,解码器计算得到当前时刻的初始文字输出概率。

子步骤S2052,根据解码器在当前时刻的初始文字输出概率和连接时序分类模块在当前时刻的文字输出概率,计算解码器在当前时刻的文字输出结果。

在本实施例中,可以使用解码器输出的初始文字输出概率与连接时序分类模块输出的文字输出概率进行联合解码,得到解码器在当前时刻的实际文字输出概率(即联合解码结果),进而根据联合解码结果得到解码器在当前时刻的文字输出结果。

在一个示例中,设定第i个文字对应的截断点为t,则解码器中采用的流式CTC联合解码的计算公式可以表示为:logP(Y

其中,Y

子步骤S2053,根据解码器在每个时刻的文字输出结果得到待识别语音信号对应的识别结果。

在本实施例中,通过连接时序分类模块将截断得到的每个特征片段依次送入解码器解码,便可得到对应时刻的文字输出结果,进而得到该待识别语音信号对应的识别结果。

可见,本发明实施例提供的语音识别方法,考虑到连接时序分类模块中的截断机制自身的特点,无法使用前缀树搜索算法,并且前缀树搜索算法本身的计算量较大,故使用截断点对应的CTC概率与解码器输出的初始文字输出概率进行联合解码,进而得到对应时刻的文字输出结果,整个联合解码过程不需要采用前缀树搜索算法,并且还能达到提升模型准确度,降低计算量的效果。

需要说明的是,在实际应用中,编码器中的每个注意力层在进行自注意力计算时,是否都考虑上下文信息,以及上下文信息是仅包括前一个信息块,还是仅包括后一个信息块,又或者是包括前一个信息块和后一个信息块,均可以进行相应的配置,故每个注意力层都有对应的上下文配置信息,通过该上下文配置信息可以控制部分注意力层不扩展未来信息,从而达到压缩语音识别模型延迟的效果。

例如,当配置所有注意力层进行自注意力计算时,均考虑上下文信息,且上下文信息均为前一个信息块和后一个信息块时,编码器中各个注意力层上的数据流可以参照图10,此时整个语音识别的延迟计算方式为:延迟=块宽度*(1+注意力层数)+截断的上下文信息长度。为了进一步压缩延迟,可以控制部分注意力层不扩展未来信息,此时编码器中各个注意力层上的数据流可以参照图11,图11中的实线框部分表示没有扩展未来信息,整个语音识别的延迟计算方式为:延迟=块宽度*(1+扩展上下文的层数)+截断的上下文信息长度。

综上,本发明实施例提供的语音识别方法中,通过将CTC对齐预训练、CTC截断机制、CTC联合解码机制、编码器中基于分块的注意力机制等有机地耦合在一起,形成了一套联系紧密的系统,整体一次性训练即可达到解码要求,大大简化了模型构建流程,可以显著提升流式端到端语音识别模型的建模性能,从而充分发挥流式端到端语音识别模型的建模潜力,提升流式语音识别应用场景的性能。在实际的语音识别过程中,在同样的延迟下,具备更优的计算速度以及识别精度。

为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种语音识别装置的实现方式。请参照图12,为本发明实施例提供的一种语音识别装置400的功能模块图。需要说明的是,本实施例所提供的语音识别装置400,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该语音识别装置400包括特征提取模块410、特征处理模块420和识别结果确定模块430。

可选地,上述模块可以软件或固件(Firmware)的形式存储于图1所示的存储器110中或固化于该电子设备100的操作系统(Operating System,OS)中,并可由图1中的处理器120执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器110中。

该特征提取模块410,用于获取待识别语音信号对应的语音特征序列。

可以理解,该特征提取模块410可以执行上述步骤S201。

该特征处理模块420,用于对语音特征序列进行分块,得到多个语音特征块。

可以理解,该特征处理模块420可以执行上述步骤S202。

该识别结果确定模块430,用于将多个语音特征块输入预先训练的语音识别模型,利用语音识别模型的编码器对多个语音特征块进行自注意力编码,得到编码器的输出特征;利用语音识别模型的连接时序分类模块对编码器的输出特征进行截断处理,得到多个特征片段;利用语音识别模型的解码器对每个特征片段进行解码,得到待识别语音信号对应的识别结果。

可以理解,该识别结果确定模块430可以执行上述步骤S203~步骤S205。

可选地,该编码器包括多个注意力层,该识别结果确定模块430具体可以用于在每个注意力层获取到输入信息后,根据注意力层对应的上下文配置信息,确定输入信息中的每个信息块对应的上下文信息,并依据每个信息块以及每个信息块对应的上下文信息进行自注意力计算,以得到注意力层的输出结果;其中,多个注意力层中的第一个注意力层的输入信息为多个语音特征块,除第一个注意力层之外的其他注意力层的输入信息为前一个注意力层的输出结果;将多个注意力层中的最后一个注意力层的输出结果作为编码器的输出特征。

其中,每个信息块对应的上下文信息包括与信息块相邻的前一个信息块和/或后一个信息块。

可以理解,该识别结果确定模块430可以执行上述子步骤S2031~子步骤S2032。

可选地,该识别结果确定模块430具体还可以用于获取连接时序分类模块根据编码器的输出特征生成的概率向量;根据概率向量确定每个文字对应的截断点;根据截断点将编码器的输出特征截断为多个特征片段。

其中,该识别结果确定模块430用于根据概率向量获取当前时刻对应的文字输出概率和当前时刻的前一时刻对应的文字输出概率;若当前时刻对应的文字输出概率表征当前时刻有文字出现,并且前一时刻对应的文字输出概率表征前一时刻没有文字出现或者前一时刻出现的文字与当前时刻出现的文字不同,则将当前时刻确定为截断点。根据每个截断点确定预设时间长度的截断窗口;将每个截断窗口对应的编码器的输出特征作为一个特征片段,从而将编码器的输出特征截断为多个特征片段。

可以理解,该识别结果确定模块430可以执行上述子步骤S2041~子步骤S2043。

可选地,该识别结果确定模块430具体还可以用于根据当前时刻对应的特征片段和解码器在当前时刻之前的所有文字输出结果,计算解码器在当前时刻的初始文字输出概率;根据解码器在当前时刻的初始文字输出概率和连接时序分类模块在当前时刻的文字输出概率,计算解码器在当前时刻的文字输出结果;根据解码器在每个时刻的文字输出结果得到待识别语音信号对应的识别结果。

可以理解,该识别结果确定模块430可以执行上述子步骤S2051~子步骤S2053。

可见,本发明实施例提供的语音识别装置400,由特征提取模块410获取待识别语音信号对应的语音特征序列,特征处理模块420对语音特征序列进行分块,得到多个语音特征块,识别结果确定模块430将多个语音特征块输入预先训练的语音识别模型,利用语音识别模型的编码器对多个语音特征块进行自注意力编码,得到编码器的输出特征;利用语音识别模型的连接时序分类模块对编码器的输出特征进行截断处理,得到多个特征片段;利用语音识别模型的解码器对每个特征片段进行解码,得到待识别语音信号对应的识别结果。本发明实施例通过对送入注意力机制的语音特征序列进行分块,使得编码器基于划分的多个语音特征块进行自注意力计算,有效破除了自注意力机制的全局依赖性,同时还结合了连接时序分类模块的截断处理,使得解码器能够针对截断得到的每个特征片段进行解码,不仅实现了实时语音识别,还能保证较高的识别准确率,提升语音交互的流畅性,从而在流式语音识别场景下取得较好的识别效果。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 语音识别方法、装置、电子设备和计算机可读存储介质
  • 语音识别方法、装置、电子设备和计算机可读存储介质
技术分类

06120113282787