用于语音对话平台的语音识别模型的训练调度方法及系统与流程

文档序号:16236636发布日期:2018-12-11 22:40阅读:233来源:国知局
用于语音对话平台的语音识别模型的训练调度方法及系统与流程

本发明涉及语音对话平台领域,尤其涉及一种用于语音对话平台的语音识别模型的训练调度方法及系统。

背景技术

随着智能语音技术的发展,语音对话平台为用户提供的越来越便捷的语音技术服务,例如,用户可以根据自身的需求,自行创建符合自己需求的语音产品,开发特定的语音技能、设置特别的用户说法、编写相应的语句词库。用户经过上述步骤的开发后,从而获得相应的语音产品。在所述语音产品的使用中,用户向所述语音产品输入语音语句,所述语音产品根据语音对话平台内配置的自动语音识别模型进行识别,从而确定出相应的文字信息,进而匹配相应的说法,调用特定的语音技能。

在实现本发明过程中,发明人发现相关技术中至少存在如下问题:

在用户向语音产品输入语句时,所述语音产品都会使用语音对话平台所提供的内置自动语音识别模型。用户无法自行训练特定的自动语音识别模型。

同时,由于训练自动语音识别模型时,训练耗时较长,如果此时服务器重启或者发生意外情况,会导致训练的自动语音识别模型数据丢失。由于开通了为用户训练语音识别模型的功能,在某一时段可能会接收大量的自动语音识别模型的训练请求,此时,语音对话平台需要依次对其训练,使得在有大量自动语音识别模型训练请求时,训练速度较为缓慢。



技术实现要素:

为了至少解决现有技术中语音对话平台不能提供用户自行训练语音识别模型,同时训练语音识别模型中,如果发生意外情况,数据会丢失,同时,在请求高峰时段时,由于依次训练处理,使得语音识别模型训练较为缓慢的问题。

第一方面,本发明实施例提供一种用于语音对话平台的语音识别模型的训练调度方法,包括:

接收对外服务器存入的训练数据,其中,语音对话平台包括所述对外服务器和训练服务器;

将所述训练数据导入消息队列;

将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练;

接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型;

将所述语音识别模型反馈给所述对外服务器。

第二方面,本发明实施例提供一种用于语音对话平台的语音识别模型的训练调度系统,包括:

训练数据存储程序模块,用于接收对外服务器存入的训练数据,其中,语音对话平台包括所述对外服务器和训练服务器;

训练数据导入程序模块,用于将所述训练数据导入消息队列;

训练数据分配程序模块,用于将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练;

语音识别模型存储程序模块,用于接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型;

模型反馈程序模块,用于将所述语音识别模型反馈给所述对外服务器。

第三方面,本发明实施例提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的用于语音对话平台的语音识别模型的训练调度方法的步骤。

第四方面,本发明实施例提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本发明任一实施例的用于语音对话平台的语音识别模型的训练调度方法的步骤。

本发明实施例的有益效果在于,通过消息队列将对外服务与训练服务中经过的信息存储,使得数据持久化,在语音识别模型训练中,当训练中断或者训练异常时,可以向消息队列中重新获取训练数据,防止训练数据丢失。

通过将对外服务与训练服务拆分开,两个服务通过消息队列来传递数据,当消息队列达到一定长度时,动态增加训练服务的数量,实现动态扩容,从而提高了大量训练请求时的训练效率。

将语音识别模型作为独立的服务开放,可以方便有能力的用户自行开发,或是使用自动语音识别技术作为一个独立技术来开发自己的产品。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种用于语音对话平台的语音识别模型的训练调度方法的流程图;

图2是本发明一实施例提供的一种用于语音对话平台的语音识别模型的训练调度系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示为本发明一实施例提供的一种用于语音对话平台的语音识别模型的训练调度方法的流程图,包括如下步骤:

s11:接收对外服务器存入的训练数据,其中,语音对话平台包括所述对外服务器和训练服务器;

s12:将所述训练数据导入消息队列;

s13:将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练;

s14:接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型;

s15:将所述语音识别模型反馈给所述对外服务器。

在本实施方式中,所述语音对话平台的服务分为3部分:对外服务,训练服务以及存储调度服务。对外服务:与用户、存储调度服务、用于发布语音识别模型的资源服务器进行交互。训练服务:根据训练数据中的训练说法以及训练词库来训练语音识别模型。存储调度服务:帮助对外服务以及训练服务间接交互,同时存储交互过程中的数据。

对于步骤s11,用户向语音对话平台提交用于语音识别模型训练的训练说法以及训练词库数据,对外服务将所述训练说法以及训练词库数据存发送至存储调度服务,存储调度服务将所述训练说法以及训练词库进行存储。

对于步骤s12,将所述训练数据导入消息队列。所述存储调度服务可以包括rabbitmq,其中,所述rabbitmq是一种应用程序对应用程序的通信方法,一端的应用程序通过读写出入存储调度服务中消息队列的消息来通信。消息传递指的是各程序之间通过在消息队列中发送数据进行通信,而不是程序之间直接调用来彼此通信。

对于步骤s13,所述存储调度服务将所述消息队列中的训练数据(训练说法以及训练词库)分配至训练服务器进行语音识别模型训练,由于语音对话平台需要给很多用户提供服务,因此,语音对话平台预先配置好了一定数量的训练服务,在训练数据的分配中,可以查询哪些训练服务处于空闲状态,或者当没有空闲状态的训练服务时,查询哪些训练服务排队要处理的训练任务较少进行合理的分配。

在语音识别模型的训练中,可以划分为四个步骤:

1、对训练说法做正则展开,然后进行分词处理;训练词库数据直接分词处理;

2、将所述训练说法和训练词库合并;

3、根据合并后的数据生成相应的训练资源;

4、在生成训练资源后,同时生成训练信息,包括训练脚本的版本,训练目录,训练时间等,用于后续的更新。

在训练的过程中,可以使用子任务并发训练,其不同于线程池和进程池,在此使用协程池的方式来执行子任务的并发训练。

一般线程池和进程池最好处理相同或者相似的任务,如果任务的输入输出有比较大的差别,那么进程池和线程池在对任务返回结果的处理上要使用回调函数来继续执行后面的任务,加大了开发难度,也容易引发bug。

由于有多种类型任务,如果每种任务都增加一个线程池,那么并行的效果就会差很多。如果多类型的任务放到一个线程池中,那么会增加开发的难度。而采用引用计数来实现一个协程池,这样,使用的时候只需要添加一个修饰符就可以实现将训练任务添加到协程池中。简化了代码量,同时也保证了并行的效果。

在语音识别模型的训练中,往往同一用户需要对其语音识别模型进行多次修改,经常会有微小的说法或者词库改动,如果每次都训练全部数据,那么会占用大量的语音对话平台的训练服务资源,而且由于训练全部数据,时间较长,对于用户的体验也很差。

通过缓存所述语音识别模型上一次的训练结果,根据资源的变动来做增量训练,这样大大提高了训练速度。

步骤1、跟踪训练脚本的变动

根据上一次语音识别模型资源的训练信息和当前脚本的版本信息,来判断当前训练脚本的版本和上一次训练语义资源的训练脚本是否一致,如果不一致,那上次训练的语音识别模型资源失效,训练全部资源;如果两者一致,那么上次语义资源有效,执行步骤2。

步骤2、跟踪资源变动

在分词阶段,判断说法和词库的原始数据相较于上个版本是否一致,如果一致,直接使用上个版本的结果,如果有不一致,重新分词。

在说法和词库合并阶段,不需要缓存结束。

在生成训练资源阶段,判断合并后的说法和词库是否和上个版本一致,如果一致,直接使用上个版本的结果,如果不一致,重新生成语言模型资源。

在训练过程中,为了提高用户的使用体验,可以在语音对话平台添加训练状态查询的接口,接口中增加训练时间预估的字段。在训练服务接收到训练数据之后,根据训练资源的大小来预估训练时间,并将预估训练时间作为训练状态的一个字段发送到存储调度服务中的消息队列。

对外服务从所述消息队列中获取到预估训练时间后,在语音对话平台中随时更新训练剩余时间。

对于步骤s14,所述存储调度服务接收并缓存所述训练服务返回的与所述训练数据相对应的语音识别模型。所述存储调度服务会将对外服务发送的训练数据以及训练服务返回的训练后的语音识别模型采用持久化存储,确保用户请求的原始数据不会丢失flag_custom。

训练服务在训练语音识别模型的过程中采用ack(acknowledgement,确认字符)机制,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误,在tcp/ip协议中,如果接收方成功的接收到数据,那么会回复一个ack数据。通常ack信号有自己固定的格式,长度大小,由接收方回复给发送方。由此训练可以分为两种情况:

训练成功/训练失败,返回训练结果并确认ack;

训练过程异常退出,和存储调度服务的消息队列连接终端,无ack。在训练服务重启后,仍然能够获取训练数据重新训练。

对于步骤s15,所述存储调度服务通过消息队列将存储的语音识别模型反馈给对外服务。

对外服务获得训练后的语音识别模型后,对所述语音识别模型生成相对于的模型id,并将所述语音识别模型以及模型id发送给资源服务器进行发布。

为了保证训练的语音识别模型的准确性、可用性,在语音识别模型发布成功后,用几条标准测试音频打包成语音识别请求,进行解析。确保识别的结果正确后,将所述模型id反馈给用户。

当用户需要使用训练的语音识别模型时,只需要将音频数据和模型id发送至资源服务器进行调用,资源服务器调用相应的语音识别模型进行解析,将所述音频数据转换成相应的文字。

通过该实施方法可以看出,通过消息队列将对外服务与训练服务中经过的信息存储,使得数据持久化,避免了在语音识别模型训练中当训练中断或者训练异常时,可以向消息队列中重新获取,防止训练数据丢失。

作为一种实施方式,在本实施例中,所述将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练包括:

查询所述消息队列的队列长度;

当所述队列长度没有超过预设阈值时,为所述训练数据分配训练服务器;

当所述队列长度超过预设阈值时,增加临时训练服务器,为所述训练数据分配临时训练服务器。

在本实施方式中,由于对外服务和训练服务之间没有直接通信,而是通过存储调度服务中消息队列传递数据。消息队列与多个训练服务连接。训练数据能够根据当前的连接数量动态分发,但是当消息队列中的数据达到一定长度时,就表明了当前是用户训练语音识别模型的高峰时段,现有的多个训练服务连接可能不够使用。需要动态增加一定数量的临时训练服务,从而来实现动态扩容。

通过该实施方式可以看出,本实施方式将对外服务与训练服务拆分开,两个服务通过消息队列来传递数据,当消息队列达到一定长度时,从而动态增加训练服务的数量,从而实现动态扩容。

作为一种实施方式,在本实施例中,在所述将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练之后,所述方法还包括:

接收所述训练服务器反馈的训练异常的消息;

重新将所述消息队列中的训练数据分配至其他训练服务器进行语音识别模型训练。

在本实施方式中,响应于训练服务反馈的训练异常的消息,重新将所述消息队列中的训练数据分配至其他训练服务进行语音识别模型训练,由于训练数据已经在消息队列中持久化存储,所以无论训练异常是停电,重启或是机器宕机,训练数据都不会丢失。

作为一种实施方式,在本实施例中,所述方法还包括:

接收所述训练服务器返回的所述训练数据训练完成的确认字符,删除所述消息队列中训练完成的训练数据。

当接收到了训练服务返回的训练数据训练完成的确认字符,由于训练已经完成,不在需要训练数据,所以在所述消息队列中删除所述训练完成的训练数据。

通过该实施方式可以看出,通过响应于训练服务器的不同反馈,进行不同的操作,当训练异常时,保证数据不丢失,再次重新训练。当训练成功时,将不再需要的训练数据删除,保障存储空间的合理使用。

作为一种实施方式,在本实施例中,在所述将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练之后,所述方法还包括:

将初始训练状态切换至第一训练状态;当接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型时,将第一训练状态切换至第二训练状态;

当接收所述训练服务器反馈的训练异常的消息时,将第一训练状态切换至第三训练状态;

响应于训练状态的切换,将切换后的训练状态反馈至用户,其中所述训练状态包括:初始训练状态、第一训练状态、第二训练状态、第三训练状态。

在本实施方式中,记录训练状态的变化,在将所述消息队列中的训练数据分配至训练服务进行语音识别模型训练后,将训练状态切换至“排队中”。

当接收并缓存所述训练服务器返回的与所述训练数据对应的模型时,将排队中的训练状态切换为“训练完成”。

当接收训练服务器反馈的训练异常信息时,将排队中的训练状态切换为“训练异常”。

当训练完成后,将语音识别模型发送给对外模型,对外模型生成相应的模型id,将语音识别模型以及相应的模型id发送至资源服务器中时,将训练完成的训练状态切换为“发布中”。

当对外服务接收到资源服务器反馈的成功信息后,将发布中的训练状态切换为“发布成功”。

通过该实施方式可以看出,通过记录语音识别模型的训练调度过程,可以实时向用户反馈训练的状态,用户可以通过根据所述训练状态来查询语音识别模型的发布状态和发布结果。

如图2所示为本发明一实施例提供的一种用于语音对话平台的语音识别模型的训练调度系统的结构示意图,本实施例的技术方案可适用于对设备的用于语音对话平台的语音识别模型的训练调度方法,该系统可执行上述任意实施例所述的用于语音对话平台的语音识别模型的训练调度方法,并配置在终端中。

本实施例提供的一种用于语音对话平台的语音识别模型的训练调度系统包括:训练数据存储程序模块11,训练数据导入程序模块12,训练数据分配程序模块13,语音识别模型存储程序模块14和模型反馈程序模块15。

其中,训练数据存储程序模块11用于接收对外服务器存入的训练数据,其中,语音对话平台包括所述对外服务器和训练服务器;训练数据导入程序模块12用于将所述训练数据导入消息队列;训练数据分配程序模块13用于将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练;语音识别模型存储程序模块14用于接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型;模型反馈程序模块15用于将所述语音识别模型反馈给所述对外服务器。

进一步地,所述训练数据分配程序模块用于:

查询所述消息队列的队列长度;

当所述队列长度没有超过预设阈值时,为所述训练数据分配训练服务器;

当所述队列长度超过预设阈值时,增加临时训练服务器,为所述训练数据分配临时训练服务器。

进一步地,所述系统还包括:异常处理模块,用于:

接收所述训练服务器反馈的训练异常的消息;

重新将所述消息队列中的训练数据分配至其他训练服务器进行语音识别模型训练。

进一步地,其中,所述系统还用于:

接收所述训练服务器返回的所述训练数据训练完成的确认字符,删除所述消息队列中训练完成的训练数据。

进一步地,所述系统还包括:训练状态反馈程序模块,用于:

将初始训练状态切换至第一训练状态;当接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型时,将第一训练状态切换至第二训练状态;

当接收所述训练服务器反馈的训练异常的消息时,将第一训练状态切换至第三训练状态;

响应于训练状态的切换,将切换后的训练状态反馈至用户,其中所述训练状态包括:初始训练状态、第一训练状态、第二训练状态、第三训练状态。

本发明实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的用于语音对话平台的语音识别模型的训练调度方法;

作为一种实施方式,本发明的非易失性计算机存储介质存储有计算机可执行指令,计算机可执行指令设置为:

接收对外服务器存入的训练数据,其中,语音对话平台包括所述对外服务器和训练服务器;

将所述训练数据导入消息队列;

将所述消息队列中的训练数据分配至训练服务器进行语音识别模型训练;

接收并缓存所述训练服务器返回的与所述训练数据对应的语音识别模型;

将所述语音识别模型反馈给所述对外服务器。

作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的测试软件的方法对应的程序指令/模块。一个或者多个程序指令存储在非易失性计算机可读存储介质中,当被处理器执行时,执行上述任意方法实施例中的用于语音对话平台的语音识别模型的训练调度方法。

非易失性计算机可读存储介质可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据测试软件的装置的使用所创建的数据等。此外,非易失性计算机可读存储介质可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,非易失性计算机可读存储介质可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至测试软件的装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本发明实施例还提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例的用于语音对话平台的语音识别模型的训练调度方法的步骤。

本申请实施例的客户端以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)车载语音设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod)和便携式车载导航设备。

(4)其他具有数据处理功能的电子装置。

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

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1