一种语音识别系统和方法与流程

文档序号:16309015发布日期:2018-12-19 05:12阅读:270来源:国知局
一种语音识别系统和方法与流程

本发明涉及互联网技术领域,尤其涉及一种语音识别系统和方法。

背景技术

语音识别技术,也被称为自动语音识别(asr,automaticspeechrecognition),是要将人类的语音中的词汇内容转换为计算机可读的输入。目前,语音识别技术成为人工智能领域一项比较通用的技术。

现有技术中的语音识别系统作为一个整体,整合了所有的应用逻辑,不仅要处理语音数据的识别,还要处理多路数据的并发访问,以及各种引擎参数,模型的动态配置等等,这样的好处是可以方便部署,结构相对简单。但是由于系统过于庞大,维护升级不方便。同时,语音识别引擎只能单路识别语音数据,通过多线程支持识别引擎同一时刻处理多路音频数据是非常复杂,多线程处理多路音频数据容易出现bug,而且实现起来非常困难,因此,语音处理的可靠性和效率都低。



技术实现要素:

本发明提供一种语音识别系统和方法,可以在高并发情况下提升语音识别引擎的识别率和使用效率。

第一方面,本发明实施例提供了一种语音识别系统,所述系统包括:引擎资源调度模块和至少两个引擎处理模块;

其中,所述引擎资源调度模块用于根据所述至少两个引擎处理模块的状态选择目标引擎处理模块;

所述至少两个引擎处理模块中的所述目标引擎处理模块用于对接收到的语音数据进行语音识别。

可选的,所述系统还包括:前置语音处理模块,用于接收用户发送的语音数据并对所述语音数据进行预处理,将预处理后的语音数据发送至所述目标引擎处理模块。

可选的,所述引擎资源调度模块还用于:

在选择目标引擎处理模块之后,将所述目标引擎处理模块的地址发送至所述前置语音模块;

相应的,所述前置语音处理模块具体用于:根据所述目标引擎处理模块的地址将预处理后的语音数据发送至所述目标引擎处理模块。

可选的,所述系统还包括:帐号校验模块,用于存储用户信息以及与用户帐号相关的引擎模型参数信息。

可选的,所述引擎资源调度模块还用于:从所述帐号校验模块中获取与当前用户账号相关的目标引擎模型参数信息,并发送至前置语音处理模块;

相应的,所述前置语音处理模块还用于根据所述目标引擎处理模块的地址将所述目标引擎模型参数信息发送至所述目标引擎处理模块;

相应的,所述目标引擎处理模块还用于依据所述目标引擎模型参数信息对接收到的语音数据进行语音识别。

可选的,所述帐号校验模块,还用于对发送所述语音数据的用户账号进行账号验证。

可选的,所述系统还包括:系统监控模块,用于对所述引擎资源调度模块和至少两个引擎处理模块的运行状态进行监控。

可选的,所述系统还包括:代理服务器模块,用于将用户发送的语音数据发送至所述前置语音处理模块。第二方面,本发明实施例还提供了一种语音识别方法,所述方法包括:

引擎资源调度模块根据至少两个引擎处理模块的状态选择目标引擎处理模块;

所述目标引擎处理模块接收待识别的语音数据,并进行语音识别。

可选的,在目标引擎处理模块接收待识别的语音数据之前,所述方法还包括:

所述引擎资源调度模块将所述目标引擎处理模块的地址发送至前置语音处理模块;

所述前置语音处理模块根据所述目标引擎处理模块的地址将所述待识别的语音数据发送至所述目标引擎处理模块。

可选的,所述引擎资源调度模块根据至少两个引擎处理模块的状态选择目标引擎处理模块之前,所述方法还包括:

前置语音处理模块向所述引擎资源调度模块发送引擎获取请求,以便所述引擎资源调度模块响应于所述引擎获取请求,根据至少两个引擎处理模块的状态选择目标引擎处理模块。

可选的,在目标引擎处理模块进行语音识别之前,所述方法还包括:

所述引擎资源调度模块从帐号校验模块中获取与当前用户账号相关的目标引擎模型参数信息,并发送至前置语音处理模块,以便所述前置语音处理模块根据所述目标引擎处理模块的地址将所述目标引擎模型参数信息发送至所述目标引擎处理模块;

相应的,所述目标引擎处理模块接收待识别的语音数据,并进行语音识别,包括:

所述目标引擎处理模块接收待识别的语音数据,并依据所述目标引擎模型参数信息进行语音识别;

其中,所述帐号校验模块用于存储用户信息以及与用户帐号相关的引擎模型参数信息。

可选的,所述前置语音处理模块根据所述目标引擎处理模块的地址将所述待识别的语音数据发送至所述目标引擎处理模块,包括:

所述前置语音处理模块接收用户发送的待识别语音数据并进行预处理;

所述前置语音处理模块根据所述目标引擎处理模块的地址,将所述预处理后的语音数据发送至所述目标引擎处理模块。

可选的,前置语音接收模块向所述引擎资源调度模块发送引擎获取请求之前,所述方法还包括:

账号校验模块对发送待处理语音数据的用户账号进行验证。

可选的,所述方法还包括:

系统监控模块对所述引擎资源调度模块和至少两个引擎处理模块的运行状态进行监控。

可选的,所述前置语音处理模块接收用户发送的待识别语音数据并进行预处理,包括:

所述前置语音处理模块通过代理服务器接收用户发送的待识别语音数据并进行预处理。本发明实施例公开的一种语音识别系统包括:引擎资源调度模块和至少两个引擎处理模块;其中,所述引擎资源调度模块用于根据所述至少两个引擎处理模块的状态选择目标引擎处理模块;所述至少两个引擎处理模块中的目标引擎处理模块用于对接收到的语音数据进行语音识别。由于引擎资源调度模块可以对引擎处理模块调度,让处于空闲状态的引擎处理模块进行当前语音识别,避免了多个语音数据同时由一个引擎处理模块处理时造成的资源竞争,降低识别效率的问题,实现了在高并发情况下提升语音识别引擎的识别率和使用效率,同时去除引擎处理模块识别多路语音的复杂设计。

附图说明

图1是本发明实施例一中的一种语音识别系统的结构示意图。

图2是本发明实施例二中的一种语音识别系统的结构示意图。

图3是本发明实施例三中的一种语音识别系统的结构示意图。

图4是本发明实施例三中的另一种语音识别系统的结构示意图。

图5是本发明实施例四中的一种语音识别方法的流程图。

图6是本发明实施例四中的另一种语音识别方法的流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种语音识别系统的结构示意图,本实施例可适用于语音识别的情况,如图1所示,该语音识别系统包括:引擎资源调度模块(schedulingserver)110和至少两个引擎处理模块(engineserver)120;其中,所述引擎资源调度模块110用于根据所述至少两个引擎处理模块120的状态选择目标引擎处理模块,其中,引擎处理模块的状态可以包括:运行状态,优选的,可以是可用状态,比如引擎处理模块处于空闲状态或非运行状态时,则可以视为是处于可用状态,可以选择其作为目标引擎处理模块;所述至少两个引擎处理模块120中的目标引擎处理模块用于对接收到的语音数据进行语音识别。

其中,引擎处理模块120可以具有自动语音识别技术功能,以便对语音数据进行语音识别,比如可以将语音信息识别转化为文本信息。自动语音识别技术(asr,automaticspeechrecognition)是一种将人的语音转换为文本的技术。由于语音信号的多样性和复杂性,因此,要保证语音数据的准确识别对语音识别系统要求也会很高。引擎处理模块120在本发明实施例中的语音识别系统中可以有多个,具体可以根据业务需要进行设计。通常,如果业务量很大,则相应的可以设计引擎处理模块120的个数多一些。引擎处理模块120之间可以独立部署,各自运行在整个系统集群之下,也可以方便管理和维护。具体的,引擎处理模块120可以是语音系统中分布的多个网络节点,可以对接收到的语音数据进行语音识别。示例性的,可以设置200个网络节点作为200个独立的引擎处理模块。

引擎资源调度模块110可以对引擎处理模块120的资源进行合理有效的调节和测量及分析和使用。示例性的,如果200个引擎处理模块中的前100个引擎处理模块处于工作状态(例如正在进行语音识别处理),则引擎资源调度模块可以调度后100个处于非工作状态的空闲引擎处理模块中的某一个或多个进行当前语音数据的识别处理。其中,目标引擎处理模块可以是被引擎资源调度模块110在引擎处理模块120中选出的用于执行当前待语音数据的识别处理的引擎处理模块。具体的,引擎资源调度模块110可以根据引擎处理模块120是否处于空闲状态,选择是否将其作为目标引擎处理模块。因此,选出的目标引擎处理模块是处于空闲状态,可以及时对当前待识别的语音数据进行识别处理。这样的技术方案,避免在在同一时间中处理多路语音数据的复杂性,以及造成的资源竞争会影响语音识别准确率和效率下降的问题,提高了语音识别效率以及引擎处理模块资源的利用率。

具体的,引擎处理模块120可以根据引擎处理模块的计算能力,分为高级引擎处理模块,中级引擎处理模块和低级数据量的引擎处理模块。示例性的,大于1g的语音数据可以通过高级引擎处理模块处理,大于500m小于1g的语音数据可以通过中级引擎处理模块处理,小于500m的语音数据可以通过低级引擎处理模块处理。当然,可以根据业务需要设置不同等级的引擎处理模块。

另外,引擎处理模块120也可以根据引擎处理模块对不同格式数据处理的优势进行分类。示例性的,按照wma,mp3,wav,ra和midi等音频处理能力进行分类。以便于引擎资源调度模块结合根据待识别语音的数据选择合适的引擎处理模块,以处理对应的音频数据,这样可以提高处理能力,有效合理利用引擎资源,提高语音识别的准确率和引擎资源的利用率。

可选的,所述系统还包括:系统监控模块(monitorserver),用于对所述引擎资源调度模块和至少两个引擎处理模块的运行状态进行监控,以负责监控整个语音识别系统的运行状态的健康检查,比如某个引擎处理模块发生了掉线或停止工作等异常行为,可以及时了解到并进行维护和修正等操作,保证语音识别系统的正常工作。

本实施例的技术方案,由于引擎资源调度模块对引擎处理模块的调度,可以让处于空闲状态的引擎处理模块进行语音识别,避免了多个语音数据同时由一个引擎处理模块处理时造成的资源竞争,降低识别效率的问题,实现了在高并发情况下提升语音识别引擎的识别率和使用效率,,同时去除引擎处理模块识别多路语音的复杂设计。

实施例二

图2是本发明实施例二中提供的一种语音识别系统,在上述实施例的基础上,可选的,该语音识别系统还包括:前置语音处理模块(businessserver)130,如图2所示,所述前置语音处理模块130,用于接收用户发送的语音数据并对所述语音数据进行预处理,将预处理后的语音数据发送至所述目标引擎处理模块。由于引擎处理模块120承担语音识别和计算的作用,因此,如果出现需要短时间内接受大量数据,可能会出现接口承受不住的情况,造成服务器死机或者网络堵塞的问题。因此,本发明实施例中提供的前置语音处理模块130可以具有数据采集服务器的作用,可以对接收到的语音数据在语音识别之前先进行预处理,分担引擎处理模块120的计算压力。其中,预处理可以是在目标引擎处理模块对接收到语音数据进行语音识别之前的前置处理,比如包括音频的格式、大小的识别,音频的过滤以及编解码等操作。这样也可以减小引擎处理模块的计算量,进一步提高识别效率。

可选的,所述引擎资源调度模块110还用于:在选择目标引擎处理模块之后,将所述目标引擎处理模块的地址发送至所述前置语音模块130;

相应的,所述前置语音处理模块130具体用于:根据所述目标引擎处理模块的地址将预处理后的语音数据发送至所述目标引擎处理模块。

示例性的,前置语音处理模块130在接收到用户发送的语音数据时,可以向引擎资源调度模块110发送相应的引擎获取请求,其中,引擎获取请求可以携带待进行识别音频数据的大小和格式等信息,以便引擎资源调度模块110可以根据不同引擎处理模块120的能力以及可用状态选择出目标引擎处理模块,具体的,引擎调度模块110可以将目标引擎处理模块的地址发送至前置语音处理模块130,前置语音处理模块130便可以根据所述地址预处理后的音频数据发送至目标引擎处理模块。这样可以更合理的分配和使用引擎资源,提高音频识别效率和引擎处理模块的使用率。

可选的,所述系统还包括:代理服务器模块,用于将用户发送的语音数据发送至所述前置语音处理模块。其中,代理服务器(proxyserver)可以用于连接国际互联网(internet)和局域网(localareanetwork),是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个代理服务器模块与另一个网络终端(一般为服务器,例如本发明实施例中的语音识别系统)进行非直接的连接。示例性的,用户的客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接或者获得目标服务器的指定资源。利用代理服务器可以设置用户验证和记账功能,对不同用户的权限进行设置和管理,也可以增加缓冲器,提高访问速度等。

可选的,所述语音系统还可以包括:许可证服务器模块(licenseserver),其中,一些应用或服务器的应用厂商为定义应用程序和许可证服务器如何共同工作以跟踪软件的使用和许可而建议的许可证标准。这样许可证服务器可以赋予引擎处理模块为用户运行的能力。

本发明实施例的技术方案,通过部署语音识别系统的前置语音处理模块,可以对接收到用户发送的语音数据进行预处理,可以减轻目标引擎处理模块的计算量,进一步增加语音识别的效率和引擎模块的利用率,可以最大限度的利用集群资源并节省硬件成本。通过代理服务器模块可以方便用户与语音识别系统的连接,也利于开发者对用户账号的管理。同时,去除引擎处理模块识别多路语音的复杂设计,分布式部署可以在后期维护和调整优化语音系统或进行线上测试的过程中降低难度和复杂度。

实施例三

图3是本发明实施例三提供的一种语音识别系统的结构示意图,在上述实施例的基础上,可选的,所述系统还包括:帐号校验模块(profileserver)140,用于对发送所述语音数据的用户账号进行账号验证。账号可以是用户在使用在本发明实施例中的语音识别系统进行语音识别时的身份标识。账号验证(auth,authenticate)可以指通过一定的手段完成对用户身份的确认,以确认其是否可以进行语音识别,比如通过确认用户是否是已经在相关网站注册的用户或会员等。示例性的,可以通过验证码或密码进行账号的验证,验证通过后,则可以进行后续语音识别的过程。当然,在本实施例中,对账号验证的步骤与前置语音处理模块对用户发送语音数据的预处理步骤的先后顺序不作限定。

可选的,所述账号校验模块140还用于存储用户信息以及与用户帐号相关的引擎模型参数信息。其中,用户信息可以包括用户的账号、登录的时间、语音识别的数量或其他历史数据等与用户在语音识别系统中相关的个人信息。与用户账号相关的引擎模型参数信息可以是与用户账号相关的记载用户语音识别相关的个性化参数信息。示例性的,该用户的声音比较特殊,比如发声的频率可能与普通人声音频率有差别,因此普通的引擎处理模块可能识别不出来,此时可以为该用户的语音数据设置独有的语音信息的配置文件,其中,配置文件中可以记载相关的引擎模型参数信息,以帮助引擎处理模块进行准确识别。当然,相关的引擎模型参数信息也可以具体指与用户相关联的引擎处理模块的参数信息,示例性的,可以设置某些用户的账号与某些特定引擎处理模块相关联,即他可以使用特定的引擎处理模块进行语音识别,比如用户a特定使用第100个引擎处理模块。

可选的,所述引擎资源调度模块110还用于从所述账号校验模块140中获取与当前用户账号相关的目标引擎模型参数信息,并发送至前置语音处理模块130,相应的,所述前置语音处理模块130还用于根据所述目标引擎处理模块的地址将所述目标引擎模型参数信息发送至所述目标引擎处理模块;相应的,所述目标引擎处理模块还用于依据所述目标引擎模型参数信息对接收到的语音数据进行语音识别。

其中,引擎资源调度模块110在账号校验模块140中获取到当前用户账号相关的目标引擎模型参数信息,可以发送至前置语音处理模块130。相应的,前置语音处理模块130可以将与当前用户账号相关的目标引擎模型参数信息发送至目标引擎处理模块,以使目标引擎处理模块可以进一步根据目标引擎模型参数信息更加准确识别用户的语音数据。

示例性的,图4是本发明实施例提供的另一种语音系统的结构示意图,如图4所示,该系统包括:代理服务器模块、前置语音处理模块、引擎处理模块、引擎资源调度模块、账号验证模块和系统监控模块。具体的,代理服务器模块可以将用户发送的语音数据发送至前置语音处理模块;前置语音处理模块可以在语音数据预处理以后,通过账号验证模块进行账号验证;验证通过以后,向引擎资源调度模块发送引擎获取请求;引擎资源调度模块可以根据引擎处理模块的可用状态选择目标引擎处理模块,这样前置语音处理模块可以将语音数据发送至目标引擎处理模块进行语音识别。可选的,引擎资源调度模块可以同时从账号验证模块中获取与用户账号相关的引擎模型参数信息,返回至前置语音处理模块;前置语音处理模块可以将其与语音数据共同发送至目标引擎处理模块,以实现更准确的语音识别。在此过程中,系统监控模块可以随时监控各个模块运行的状态,保证及时修护,实现语音识别系统的正常工作。

本发明实施例的技术方案,通过部署语音识别系统的账号校验模块,可以对发送语音数据的用户进行账号验证,另外,账号校验模块中存储与用户账号相关的引擎模型参数信息,可以帮助引擎处理模块对个性用户的语音数据进行准确识别,提高语音识别效率和引擎模块的利用率,可以最大限度的利用集群资源并节省硬件成本。同时,去除引擎处理模块识别多路语音的复杂设计,在后期维护和调整优化语音系统或进行线上测试的过程中降低难度和复杂度。

实施例四

图5是本发明实施例四提供的一种语音识别方法的流程图,该方法可以适用于语音识别的情况,可以语音识别系统来执行。如图5所示,该方法包括:

s510、引擎资源调度模块根据至少两个引擎处理模块的状态选择目标引擎处理模块。

其中,引擎处理模块的状态可以包括:运行状态,具体可以是可用状态,比如引擎处理模块处于空闲状态或非运行状态时,则可以视为是处于可用状态,可以选择其作为目标引擎处理模块。示例性的,可以根据引擎处理模块是否处于正在进行语音数据的识别处理的过程中来判断是否是处于运行状态,如果没有处于运行状态,则可认为其是可用的,可以被选择作为目标引擎处理模块执行当前待识别语音数据的处理,反之,则认为其不可用。

s520、所述目标引擎处理模块接收待识别的语音数据,并进行语音识别。

可选的,在目标引擎处理模块接收待识别的语音数据之前,所述方法还包括:

所述引擎资源调度模块将所述目标引擎处理模块的地址发送至前置语音处理模块;

所述前置语音处理模块根据所述目标引擎处理模块的地址将所述待识别的语音数据发送至所述目标引擎处理模块。

可选的,引擎资源调度模块根据至少两个引擎处理模块的状态选择目标引擎处理模块之前,所述方法还包括:

前置语音处理模块向所述引擎资源调度模块发送引擎获取请求,以便所述引擎资源调度模块响应于所述引擎获取请求,根据至少两个引擎处理模块的状态选择目标引擎处理模块。

可选的,所述在目标引擎处理模块进行语音识别之前,所述方法还包括:

引擎资源调度模块从配置文件设置模块中获取与当前用户账号相关的目标引擎模型参数信息,并发送至前置语音处理模块,以便所述前置语音处理模块根据所述目标引擎处理模块的地址将所述目标引擎模型参数信息发送至所述目标引擎处理模块;相应的,所述目标引擎处理模块接收待识别的语音数据,并进行语音识别,包括:

所述目标引擎处理模块接收待识别的语音数据,并依据所述目标引擎模型参数信息进行语音识别;

其中,账号校验模块,用于存储用户信息以及与用户帐号相关的引擎模型参数信息。

可选的,所述前置语音处理模块根据所述目标引擎处理模块的地址将所述待识别的语音数据发送至所述目标引擎处理模块,包括:

所述前置语音处理模块接收用户发送的待识别语音数据并进行预处理;

所述前置语音处理模块根据所述目标引擎处理模块的地址,将所述预处理

后的语音数据发送至所述目标引擎处理模块。

可选的,前置语音接收模块向所述引擎资源调度模块发送引擎获取请求之前,所述方法还包括:账号校验模块对发送待处理语音数据的用户账号进行验证。其中,账号验证与前置语音处理模块对语音数据的预处理过程可以不分先后,也就是可以先对语音数据预处理,也可以先进行对用户的账号进行验证,验证通过以后再进行语音数据的预处理。

可选的,所述方法还包括:系统监控模块对所述引擎资源调度模块和至少两个引擎处理模块的运行状态进行监控。

可选的,所述前置语音处理模块接收用户发送的待识别语音数据并进行预处理,包括:

所述前置语音处理模块通过代理服务器接收用户发送的待识别语音数据并进行预处理。在本实施例中,各个模块的功能或工作流程以及相关解释可以参见本发明任意实施例中的一种语音识别系统中的描述,在此不再赘述。

示例性的,图6是本发明实施例四提供的另一种语音识别方法的流程图,以图6中步骤(1)至步骤(10)的流程为例,来说明本发明中的语音识别方法。首先执行步骤(1)、用户发送语音数据(sendaudio)到前置语音处理模块(businessserver);进一步执行步骤(2)、前置语音处理模块发送账号验证请求(auth)至账号验证模块(profileserver);步骤(3)、如果账号验证模块发送账号验证通过信息(ok)至语音前置处理模块;则执行步骤(4)、前置语音处理模块发送引擎获取请求(getengineaddress)至引擎资源调度模块(schedulingserver)。引擎资源调度模块可以根据引擎处理模块的可用状态选择目标引擎处理模块。可选的,可以同时执行步骤(5)、引擎资源调度模块向账号校验模块发送与用户账号相关的引擎模型参数信息(getprofile);以及步骤(6)、账号校验模块将相关的引擎模型参数信息返回至引擎资源调度模块(returnprofile);然后可以执行步骤(7)、引擎资源调度模块可以将目标引擎处理模块的地址和与账号相关的引擎模型参数信息发送至前置语音处理模块(returnengineaddressandprofileinfo)。进一步执行步骤(8)、前置引擎处理模块根据所述目标引擎处理模块的地址将待识别的语音数据发送至目标引擎处理模块(asr-engine)。可选的,此语音数据可以是经过前置引擎处理模块预处理后的语音数据,当目标引擎处理模块将待识别语音数据识别完成以后;可以执行步骤(9)、将语音识别结果返回至前置语音处理模块(returnasrresult)。进一步的,执行步骤(10)、前置语音处理模块可以将语音识别的文本信息(asrtext)发送至用户。

本发明实施例的技术方案,通过部署语音识别系统的各个模块,可以使引擎处理模块最大限度集中精力处理语音识别率问题,将工程化问题从引擎处理模块中剥离,充分利用系统中的其他模块的功能,可以提高语音识别效率和引擎模块的利用率,可以最大限度的利用集群资源并节省硬件成本。同时,在后期维护和调整优化语音系统或进行线上测试的过程中降低难度和复杂度。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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