首页> 中国专利> 外呼语音输出方法、装置及设备

外呼语音输出方法、装置及设备

摘要

本申请提供了一种外呼语音输出方法、装置及设备,该方案能够通过可变话术子句中可变话术槽位的内容灵活适应不同外呼任务中的变量,如不同的呼叫对象、地址等,预先生成的语音文件能够覆盖实际外呼场景中外呼出话语句的大部分内容。因此可以预生成外呼出话语句中大部分内容的语音文件,并在在需要时直接调取输出即可,有效提高了出话速度,并且适用场景灵活,可以避免出现语音播报卡顿的情况。

著录项

  • 公开/公告号CN112735372A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 竹间智能科技(上海)有限公司;

    申请/专利号CN202011608326.4

  • 发明设计人 简仁贤;邓茜;王海;

    申请日2020-12-29

  • 分类号G10L13/02(20130101);H04M3/42(20060101);

  • 代理机构31243 上海百一领御专利代理事务所(普通合伙);

  • 代理人王奎宇;邵栋

  • 地址 200233 上海市徐汇区宜山路700号B2幢楼18层整层

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本申请涉及信息技术领域,尤其涉及一种外呼语音输出方法、装置及设备。

背景技术

随着人工智能算法的发展,智能外呼系统也被越来越多的呼叫中心所采用。但是,目前智能外呼系统还面临一系列难题,如:语音识别不准确,人机对话时出话速度慢等。其中,对话时出话速度慢这个问题给用户带来了非常不好的使用体验,各大智能外呼系统的厂家运用了不同的方法去解决这个问题:如,在TTS(Text To Speech,文本转语音)服务中加入语音缓存,对于完全一样的文本内容,直接用缓存而非实时生成;在实时生成语音文件时采用分段生成的方案,按标点符号对外呼出话语句切分后,调用TTS服务先生成第一段子句的语音文件进行播放,然后在播放的同时调用TTS服务生成第后续子句的语音文件,依次播放。

上述的方法能够解决一部分问题,但仍然会有各自的缺陷。如使用TTS语音缓存的方案虽然能解决部分语句的出话速度问题,但是由于实际的智能外呼系统在进行呼叫时,一般需要对不同的呼叫人设置不同的外呼出话语句。而在进行缓存时难以穷举所有情况下可能输出的外呼出话语句,因此在实际场景中,TTS语音缓存技术适用场景不够灵活,无法难以解决上述问题。

如果使用语音分段合成技术,确实能加快一些出话速度。但是,由于是以标点符号对外呼出话语句进行拆分,会导致出话速度完全依赖标点的断句位置,容易出现某一些子句的过长的情况。如果碰到第一段子句的文本内容很长时,仍然会导致出话速度较慢,而碰到中间子句的文本内容很长时,则会出现前一个子句的语音已经播放完毕,而后一个子句仍然未生成语音的情况,从而给接听用户的感觉是语音播报卡顿。

由此可知,目前智能外呼系统中所采用的方案无法很好的解决出话速度较慢的问题。

发明内容

本申请的一个目的是提供一种外呼语音输出方案,用以解决外呼系统出话速度慢的问题。

为实现上述目的,本申请提供了一种外呼语音输出方法,该方法包括:

获取外呼出话语句中的固定话术子句和可变话术子句,并调用文本转语音服务生成所述固定话术子句的第一语音文件,其中,所述可变话术子句包括可变话术槽位;

根据外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用文本转语音服务生成所述可变话术子句的第二语音文件;

根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件;

根据所述外呼任务对应的目标外呼出话语句调取并输出所述预生成语音文件。

本申请还提供了一种外呼语音输出装置,该装置包括:

话术获取模块,用于获取外呼出话语句中的固定话术子句和可变话术子句,其中,所述可变话术子句包括可变话术槽位;

语音预生成模块,用于调用文本转语音服务生成所述固定话术子句的第一语音文件,以及根据外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用文本转语音服务生成所述可变话术子句的第二语音文件;

语音拼接模块,用于根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件;

语音输出模块,用于根据所述外呼任务对应的目标外呼出话语句调取并输出所述预生成语音文件。

本申请还提供了一种外呼语音输出设备,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,使该设备执行所述外呼语音输出方法。

此外,本申请实施例还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现所述外呼语音输出方法。

相较于现有技术,本申请提供的外呼语音输出方案中,可以获取所述外呼出话语句中的固定话术子句和可变话术子句,并调用文本转语音服务生成所述固定话术子句的第一语音文件,然后在执行所述外呼场景下的外呼任务前,根据所述外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用文本转语音服务生成所述可变话术子句的第二语音文件,根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件。由于能够通过可变话术子句中可变话术槽位的内容灵活适应不同外呼任务中的变量,如不同的呼叫对象、地址等,预先生成的语音文件能够覆盖实际外呼场景中外呼出话语句的大部分内容,一般可以达到95%以上,甚至在某些外呼场景中达到100%。因此可以预生成外呼出话语句中大部分内容的语音文件,并在需要时直接调取输出即可,有效提高了出话速度,并且适用场景灵活,可以避免出现语音播报卡顿的情况。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本申请实施例中一种外呼语音输出方法的处理流程图;

图2为采用本申请实施例提供的方案实现外呼语音输出的外呼系统结构示意图;

图3为本申请实施例中一种外呼系统在实现快速出话时交互流程图;

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

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

在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本申请提供了一种外呼语音输出方法,该方法能够通过可变话术子句中可变话术槽位的内容灵活适应不同外呼任务中的变量,如不同的呼叫对象、地址等,预先生成的语音文件能够覆盖实际外呼场景中外呼出话语句的大部分内容。因此可以预生成外呼出话语句中大部分内容的语音文件,并在需要时直接调取输出即可,有效提高了出话速度,并且适用场景灵活,可以避免出现语音播报卡顿的情况。

在实际场景中,该方法的执行主体可以是用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备,或者也可以是运行于上述设备的应用程序。所述用户设备包括但不限于计算机、手机、平板电脑等各类终端设备;所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

图1示出了本申请实施例中一种外呼语音输出方法的处理流程,该方法至少包括以下的处理步骤:

步骤S101,外呼出话语句获取外呼出话语句中的固定话术子句和可变话术子句,并调用文本转语音服务生成所述固定话术子句的第一语音文件。

所述外呼出话语句可以与外呼场景对应,所述外呼场景是指外呼的具体应用场景,可以根据外呼的目的不同来设定不同的外呼场景,如回访、通知、催收等,对于某一个特定的外呼场景,该外呼场景下的大部分出话内容是可以预先设定的,因此可以根据外呼场景预先确定该外呼场景下的外呼出话语句。以回访的外呼场景为例,可以预先设定在与用户的多轮对话中可能会使用到的10个语句,来作为该外呼场景对应的外呼出话语句。在实际与用户的语音对话过程中,可以根据需要从这10个外呼出话语句中选取需要的语句完成与用户的语音对话。

对于每一个外呼出话语句,可以划分为至少一个子句,划分时可以根据划分标识来实现,其中所述划分标识可以采用外呼出话语句本身的特定内容,可以是在配置所述外呼出话语句时在语句中添加的额外标识。例如,可以采用外呼出话语句中的“,”、“。”、“;”等部分标点符号来作为划分子句的标点符号,还如,可以在配置所述外呼出话语句时,根据划分的需要在外呼出话语句中的特定位置添加额外标识来作为划分标识。此外,也可以结合两种方式,将外呼出话语句本身的特定内容和添加的额外标识分别作为第一划分标识和第二划分标识,同时用作划分子句。

外呼出话语句中的子句,至少可以包括两个类型,分别是固定话术子句和可变话术子句。其中,固定话术子句是不包含任何可变部分的固定语句内容,不会因呼叫任务中的变量信息而发生变化。以一个外呼出话语句“您好,XX先生,欢迎致电”为例,可以使用标点符号作为划分标识,可以将其划分为三个子句,分别为“您好”,“XX先生”,“欢迎致电”,其中子句“您好”和“欢迎致电”中为固定话术子句,即使两次呼叫任务是分别向A客户和B客户进行回访,这两个子句的内容也不会发生变化。对于固定话术子句,可以直接在获取后直接调用TTS服务生成所述固定话术子句的第一语音文件。

而可变话术子句是指包括了可变话术槽位的语句内容,其中,可变话术槽位中的具体内容,与该呼叫场景下具体的呼叫任务相关,由实际呼叫任务中的变量信息确定。例如,前述的子句“XX先生”中的“XX”即对应一个可变话术槽位,其具体内容由呼叫任务中的呼叫对象这一变量信息确定,若本次呼叫任务是对A客户的回访,则该子句是“A先生”,若本次呼叫任务是对B客户的回访,则该子句是“B先生”。

S102,根据所述外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用文本转语音服务生成所述可变话术子句的第二语音文件。

由于可变话术子句中可变话术槽位的内容与各个呼叫任务的具体变量信息相关,无法在获取可变话术子句后直接调用TTS服务生成对应的第二语音文件。而实际场景中,从呼叫任务的启动至呼叫任务的执行会有一定的时间差,而此时呼叫任务中的变量信息已经确定,因此可以在执行所述外呼场景下的外呼任务前,根据所述外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用TTS服务生成所述可变话术子句的第二语音文件。

以前述场景为例,当客服人员需要回访A客户时,会通过外呼系统的交互界面输入搜索或输入该客户的信息之后启动本次呼叫任务,外呼系统的呼叫调度中心接收启动呼叫任务的命令后,此时已经可以确定呼叫对象是A客户,因此,会在电话呼出之前触发其它外呼系统中的其它功能模块来调用TTS服务生成可变话术子句“A先生”的第二语音文件,由此实现可变话术子句的语音文件在实际出话前的预生成。

步骤S103,根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件。由于在实际场景中,一个具体的外呼出话语句中可能仅包括了一个类型的子句,也可能包括了多个类型的子句。例如,对于“感谢您的接听,再见”这一外呼出话语句,包括了两个固定话术语句,而如前述“您好,XX先生,欢迎致电”这一外呼出话语句,则同时包括了固定话术子句和可变话术子句。因此,在拼接预生成语音文件时,根据实际场景的需要,选取第一语音文件和/或第二语音文件来拼接获得需要对应的外呼出话语句。

步骤S104,根据所述外呼任务对应的目标外呼出话语句调取并输出所述预生成语音文件。执行外呼任务的过程即为在实际通话时与呼叫对象进行语音对话的过程,此时需要向呼叫对象输出外呼出话语句对应的预生成语音文件。由于预先获取的外呼出话语句可以是可能使用到的所有外呼出话语句,而执行某一次外呼任务时可能仅使用到其中的一部分,例如会从获取的10句候选外呼出话语句中选取其中的4句,完成与用户之间的4轮对话。其中,目标外呼出话语句即为本次外呼任务需要使用到的外呼出话语句,在需要输出时,直接调取预生成语音文件输出的即可。

由此,能够通过可变话术子句中可变话术槽位的内容灵活适应不同外呼任务中的变量,如不同的呼叫对象、地址等,预先生成的语音文件能够覆盖实际外呼场景中外呼出话语句的大部分内容。因此可以预生成外呼出话语句中大部分内容的语音文件,并在需要时(如执行外呼任务时)直接调取输出即可,有效提高了出话速度,并且适用场景灵活,可以避免出现语音播报卡顿的情况。

在实际场景中,除了子句中的可变内容除了可变话术槽位之外,还可以是实时话术槽位。所述实时话术槽位中的内容无法在外呼任务执行之前被预知,而是需要在于呼叫对象的语音对话过程中实时获取。例如,呼叫对象说出的内容是:“对不起,现在不方便,请在一个小时后给我重拨电话”,此时需要回复的外呼出话语句是:“好的,那我这边一个小时候会再次给您致电”。其中,“一个小时”即对应一个实时话术槽位,“一个小时”这一关于重拨时间的实时信息无法在外呼任务执行之前被预知,因此无法提前预生成包含该内容的语句所对应的语音文件,而是根据需要实时生成并输出即可。

由此,本申请的一些实施例在获取所述外呼出话语句中的固定话术子句和可变话术子句时,可以先根据划分标识,将所述外呼出话语句划分为多个子句,然后检测子句中的可变话术槽位和实时话术槽位,若所述子句中不包含可变话术槽位和实时话术槽位,将所述子句确定为固定话术子句,若所述子句中包含可变话术槽位,且不包含实时话术槽位,将所述子句确定为可变话术子句,由此获取到所述外呼出话语句中的固定话术子句和可变话术子句。

此外,若所述子句中包含实时话术槽位,将所述子句确定为实时话术子句。对于实时话术子句,可以根据所述外呼任务执行过程中获取的实时信息,确定所述实时话术子句中实时话术槽位的内容,实时调用文本转语音服务生成所述可变话术子句的第三语音文件,并输出所述第三语音文件。

例如,对于“您好,$global{meta_姓名}先生,我这边会在${meta_重拨时间}再次给您致电”这一外呼出话语句,其中的$global{meta_姓名}即为可变话术槽位,${meta_重拨时间}即为实时话术槽位。使用标点符号作为划分标识将其划分为三个子句后,可以确定其中“您好”为固定话术子句,“$global{meta_姓名}先生”为可变话术子句,“我这边会在${meta_重拨时间}再次给您致电”为实时话术子句。

对于其中的固定话术语句“您好”,可以直接调用TTS服务生成对应的第一语音文件vc-1。而对于其中的可变话术子句“$global{meta_姓名}先生”,可以在确定变量信息后,且在执行呼叫任务之前,调用TTS服务生成对应的第二语音文件vc-2,并根据需要将两者进行拼接来作为该外呼出话语句的预生成语音文件vc-12。而对于其中的实时话术子句“我这边会在${meta_重拨时间}后再次给您致电”,则需要在执行呼叫任务的过程中,根据呼叫对象的对话内容获取实时信息来确定实时话术槽位${meta_重拨时间}的具体内容,例如在本次通话过程中,确定重拨时间是一个小时,则可以在确定实时话术槽位的内容后,实时调用TTS服务生成所述可变话术子句的第三语音文件vc-3,并在需要是输出调取并输出即可。

在实际场景中,可以预先约定包含可变话术槽位的外呼出话语句在输出时可以分多次调取并输出相关的语音文件。例如,在本实施例中可以先调取并播放拼前半部分内容的预生成语音文件vc-12,然后再次调取并播放在确定实时信息后生成的第三语音文件vc-3,从而实现“您好,XX先生,我这边会在一个小时后再次给您致电”这一语句的快速语音输出。

本申请的另一些实施例中,在获取所述外呼出话语句中的固定话术子句和可变话术子句时,还可以先根据第一划分标识,对所述外呼出话语句进行划分,获取包含实时话术槽位的第一分句和不包含实时话术槽位的第二分句,然后根据第二划分标识,将所述第二分句划分为多个子句,若所述子句中不包含可变话术槽位,将所述子句确定为固定话术子句,若所述子句中包含可变话术槽位,将所述子句确定为可变话术子句。

其中,所述第一划分标识可以是在配置外呼场景对应的外呼出话语句为包含实时话术槽位的外呼出话语句额外添加的划分标识,例如实际场景中可以采用“[[]]”来作为第一划分标识,而第二划分标识可以采用语句中的标点符号。由此,以前述的外呼出话语句“您好,$global{meta_姓名}先生,我这边会在${meta_重拨时间}再次给您致电”为例,在配置时可以存储为“您好,$global{meta_姓名}先生,[[]]我这边会在${meta_重拨时间}再次给您致电”,在处理过程中,可以将其先划分为“您好,$global{meta_姓名}先生”和“我这边会在${meta_重拨时间}再次给您致电”这两个分句。

在处理过程中,对于其中的第二分句“您好,$global{meta_姓名}先生”,根据其中的“,”将其划分为两个子句“您好”和“$global{meta_姓名}先生”,分别为固定话术子句和可变话术子句。然后,可以采用前述的处理方式,提前调用TTS服务生成相应的语音文件vc-1、vc-2,并拼接获得预生成语音文件vc-12。而对于其中的第一分句,由于无法直接提前生成对应的语音文件,可以在执行所述外呼任务时,根据所述外呼任务执行过程中获取的实时信息,确定所述第一分句中实时话术槽位的内容,实时调用文本转语音服务生成所述第一分句的第四语音文件vc-4,并输出所述第四语音文件。在实际场景中,同样可以采用前述的方式分多次调取并输出相关的语音文件,来实现“您好,XX先生,我这边会在一个小时后再次给您致电”这一语句的快速语音输出。

此外,在本申请的一些实施例中,在根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件之后,还可以根据外呼出话语句确定对应的预生成语音文件的标记信息,为所述预生成语音文件添加所述标记信息后,保存至数据库中。其中,所述标记信息是任意能够用于识别、搜索所述预生成语音文件的信息,例如可以采用MD5(message-digest algorithm 5,信息摘要算法第五版)值等对外呼出话语句进行哈希计算后获得的摘要信息,在需要将预生成语音文件保存至数据库中时,可以采用MD5算法对外呼出话语句的文本进行哈希计算获得MD5值,然后采用MD5值为对应的预生成语音文件命名后,将其保存至数据库中。

此外,本申请的另一些实施例中,标记信息还可以结合预生成语音文件的生成参数信息。其中,所述生成参数信息可以是调用TTS服务生成语音文件时的TTS参数,如声音类型、语速、音量等。所述TTS参数可以由用户根据外呼场景的需要在调用TTS服务之前提供,在实际场景中,用户可以在交互界面中对TTS参数进行选择,使得TTS服务能够使用这些TTS参数来合成声音,从而生成需要的语音文件。由此,当在需要将预生成语音文件保存至数据库中时,可以采用MD5算法对外呼出话语句的文本进行哈希计算获得MD5值,然后获取TTS服务在生成该预生成语音文件对应的第一语音文件和/或第二语音文件所使用的TTS参数,采用MD5值+TTS参数为对应的预生成语音文件命名后,将其保存至数据库中。

相应地,在需要输出预生成语音文件(如执行外呼任务)时,可以使用目标标记信息作为搜索条件,在所述数据库中搜索对应的预生成语音文件,其中所述目标标记信息为根据本次外呼任务对应的目标外呼出话语句所确定的标记信息,若搜索到符合所述搜索条件的预生成语音文件,输出所述预生成语音文件。若未搜索到符合所述搜索条件的预生成语音文件,则表示所述搜索条件对应的目标外呼出话语句包含了实时话术槽位,无法提前生成,因此可以实时调用TTS服务生成所述目标外呼出话语句的第五语音文件,并输出所述第五语音文件。

图2示出了采用本申请实施例提供的方案实现外呼语音输出的外呼系统结构,该外呼系统包括了呼叫调度中心210、多轮任务引擎220、TTS预录音服务230、TTS服务240、minIO数据库250、mrcp服务260、软交换服务270。该外呼系统用于实现机器人280与呼叫对象290之间的语音通话,其中,呼叫调度中心210用于触发呼叫前的语音文件预生成,多轮任务引擎用于存储某个特定应用场景中需要的外呼出话语句,TTS预生成服务230用于调用TTS服务来预生成语音文件,TTS服务240用于根据外呼出话语句的文本合成语音文件,minIO数据库250用于存储生成的语音文件,mrcp服务260用于在通话中调用已生成语音文件,供软交换服务使用,软交换服务270用于管理机器人280与呼叫对象290之间的通话连接。

该外呼系统在实现快速出话时可以采用如图3所示的交互流程,包括几步处理:

1、多轮场景配置

在进行外呼任务前,需要提前编写外呼场景的多轮对话信息,多轮对话信息用于控制机器人的外呼出话语句。在多轮对话信息中,客户可以依据外呼场景来配置机器人外呼出话语句,这些外呼出话语句中可以包括固定话术语句,可变话术语句和实时话术语句。场景多轮编写完成后,需要进行预生成的固定话术语句即可确定下来,而可变话术语句则需要在呼叫任务启动阶段配合呼叫任务中的变量信息才能确定。

在实现任务场景多轮编写的过程中可以包括如下的处理步骤:

步骤S301,用户通过外呼系统提供的用户界面输入外呼场景需要的外呼出话语句,进行多轮场景的配置。

步骤S302,多轮对话信息存入多轮任务引擎中,作为该外呼场景对应的外呼出话语句。

2、固定话术预生成

多轮场景配置完毕后,用户需要配置相关参数,其中包括了TTS参数。该TTS参数可以具体包括生成语音时的声音类型、语速、音量等。确定了TTS参数后,TTS预生成服务能够获取固定话术预生成请求,然后从多轮任务引擎拉取外呼场景中的所有外呼出话语句,TTS预生成服务根据规则获取其中出固定话术语句,调用TTS服务将固定话术语句的语音文件合成出来后,存储于minIO数据库。

在实现固定话术预生成的过程中可以包括如下的处理步骤:

步骤S303,TTS预生成服务获取固定话术预生成请求;

步骤S304,TTS预生成服务从多轮任务引擎获取固定话术语句;

步骤S305,TTS预生成服务调用TTS服务将固定话术语句的文本合成为语音文件。

步骤S306,将固定话术语句对应的语音文件存储于minIO数据库中。

3、可变话术预生成与拼接

用户从外呼系统的用户界面启动外呼任务,呼叫调度中心服务接受任务启动命令后,会发送可变话术预生成请求至TTS预生成服务。TTS预生成服务按规则获取包含可变话术槽位的可变话术语句,并用外呼任务对应的变量信息填写这些可变话术槽位,形成本次通话需要的实际语句内容。然后调用TTS服务生成可变话术语句的语音文件。若可变话术语句为按标点符号切分后的子句,TTS预生成服务会将其语音文件与其他子句,如固定话术语句或其它可变话术语句的语音文件组合,拼接成一个更长语句的语音文件存入minio数据库供实际通话时调取使用。

在实现可变话术预生成与拼接的过程中可以包括如下的处理步骤:

步骤S307,用户通过外呼系统提供的用户界面启动外呼任务。

步骤S308,呼叫调度中心接受任务启动命令。

步骤S309,TTS预生成服务获取来自呼叫调度中心的可变话术预生成请求。

步骤S310,TTS预生成服务从多轮任务引擎获取可变话术语句。

步骤S311,TTS预生成服务根据外呼任务的变量信息调用TTS服务将可变话术语句的文本合成为语音文件。

步骤S312,对语音文件进行拼接。

步骤S313,将拼接后的语音文件存储于minIO数据库中。

4、语音文件检索与调用

电话呼出后,mrcp服务负责给软交换服务送入需要的音频流,mrcp服务在接收到机器人的外呼出话语句的文本后,会计算出本次外呼出话语句的文本的md5值,然后用md5值作为搜索条件在minIO数据库中搜索,判断是否存在该文本对应的语音文件。若存在,则直接调取本次外呼出话语句的语音文件,送入软交换输出。若md5值对应的语音文件不存在,表示本次出话的实时话术语句,则需要由mrcp服务实时调用TTS服务生成对应的语音文件后,送入软交换输出。

在实现可变话术预生成与拼接的过程中可以包括如下的处理步骤:

步骤S314,mrcp服务计算本次外呼出话语句的md5值,在minIO数据库中进行搜索。

步骤S315,若搜索到对应的语音文件,调取后送入软交换输出。

步骤S316,若未搜索到对应的语音文件,则实时调用TTS服务生成对应的语音文件后,送入软交换输出。

由此可知,在使用本申请实施例提供的语音输出方案后,可以大大缩短外呼系统中等待机器人出话的时间,由于外呼场景中的大部分外呼出话语句都已经提前生成,可将语音文件准备的时间压缩到1ms内。而直接调用TTS实时生成语音文件一般会需要2s左右的语音文件准备时间,且等待时间与外呼出话语句的长度成正比,当语句长度较长时,等待时间甚至超过5s以上,导致客户体验很差。

此外,可以大大节省TTS服务的使用率,由于对于一个外呼场景而言,其大部分的固定话术语句已经提前生成,且只需生成一次,所以在大规模并发呼叫时,这些固定话术语句无需再调用TTS服务,较少的TTS服务调用可以节约外呼系统的计算成本。

并且,由于在执行呼叫任务之前,大部分语音文件都已经存于系统内数据库中,因此外呼系统的出话速度稳定,不易出现出话时慢时快的现象。

基于同一发明构思,本申请实施例中还提供了一种外呼语音输出装置,所述装置对应的方法是前述实施例中的外呼语音输出方法,并且其解决问题的原理与该方法相似。

本申请实施例提供的外呼语音输出装置可以包括话术获取模块、语音预生成模块、语音拼接模块和语音输出模块。其中,话术获取模块用于获取外呼出话语句中的固定话术子句和可变话术子句,所述可变话术子句包括可变话术槽位。语音预生成模块用于调用文本转语音服务生成所述固定话术子句的第一语音文件,以及根据外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用文本转语音服务生成所述可变话术子句的第二语音文件。语音拼接模块用于根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件。语音输出模块用于根据所述外呼任务对应的目标出话语句调取并输出所述预生成语音文件。

所述外呼出话语句可以与外呼场景对应,所述外呼场景是指外呼的具体应用场景,可以根据外呼的目的不同来设定不同的外呼场景,如回访、通知、催收等,对于某一个特定的外呼场景,该外呼场景下的大部分出话内容是可以预先设定的,因此可以根据外呼场景预先确定该外呼场景下的外呼出话语句。以回访的外呼场景为例,可以预先设定在与用户的多轮对话中可能会使用到的10个语句,来作为该外呼场景对应的外呼出话语句。在实际与用户的语音对话过程中,可以根据需要从这10个外呼出话语句中选取需要的语句完成与用户的语音对话。

对于每一个外呼出话语句,可以划分为至少一个子句,话术获取模块在划分时可以根据划分标识来实现,其中所述划分标识可以采用外呼出话语句本身的特定内容,可以是在配置所述外呼出话语句时在语句中添加的额外标识。例如,可以采用外呼出话语句中的“,”、“。”、“;”等部分标点符号来作为划分子句的标点符号,还如,可以在配置所述外呼出话语句时,根据划分的需要在外呼出话语句中的特定位置添加额外标识来作为划分标识。此外,话术获取模块也可以结合两种方式,将外呼出话语句本身的特定内容和添加的额外标识分别作为第一划分标识和第二划分标识,同时用作划分子句。

外呼出话语句中的子句,至少可以包括两个类型,分别是固定话术子句和可变话术子句。其中,固定话术子句是不包含任何可变部分的固定语句内容,不会因呼叫任务中的变量信息而发生变化。以一个外呼出话语句“您好,XX先生,欢迎致电”为例,可以使用标点符号作为划分标识,可以将其划分为三个子句,分别为“您好”,“XX先生”,“欢迎致电”,其中子句“您好”和“欢迎致电”中为固定话术子句,即使两次呼叫任务是分别向A客户和B客户进行回访,这两个子句的内容也不会发生变化。对于固定话术子句,可以直接在获取后直接调用TTS服务生成所述固定话术子句的第一语音文件。

而可变话术子句是指包括了可变话术槽位的语句内容,其中,可变话术槽位中的具体内容,与该呼叫场景下具体的呼叫任务相关,由实际呼叫任务中的变量信息确定。例如,前述的子句“XX先生”中的“XX”即对应一个可变话术槽位,其具体内容由呼叫任务中的呼叫对象这一变量信息确定,若本次呼叫任务是对A客户的回访,则该子句是“A先生”,若本次呼叫任务是对B客户的回访,则该子句是“B先生”。

由于可变话术子句中可变话术槽位的内容与各个呼叫任务的具体变量信息相关,无法在获取可变话术子句后直接调用TTS服务生成对应的第二语音文件。而实际场景中,从呼叫任务的启动至呼叫任务的执行会有一定的时间差,而此时呼叫任务中的变量信息已经确定,因此可以在执行所述外呼场景下的外呼任务前,根据所述外呼任务的变量信息确定所述可变话术子句中可变话术槽位的内容,调用TTS服务生成所述可变话术子句的第二语音文件。

以前述场景为例,当客服人员需要回访A客户时,会通过外呼系统的交互界面输入搜索或输入该客户的信息之后启动本次呼叫任务,外呼系统的呼叫调度中心接收启动呼叫任务的命令后,此时已经可以确定呼叫对象是A客户,因此,会在电话呼出之前触发其它外呼系统中的其它功能模块来调用TTS服务生成可变话术子句“A先生”的第二语音文件,由此实现可变话术子句的语音文件在实际出话前的预生成。

由于在实际场景中,一个具体的外呼出话语句中可能仅包括了一个类型的子句,也可能包括了多个类型的子句。例如,对于“感谢您的接听,再见”这一外呼出话语句,包括了两个固定话术语句,而如前述“您好,XX先生,欢迎致电”这一外呼出话语句,则同时包括了固定话术子句和可变话术子句。因此,语音拼接模块在拼接预生成语音文件时,根据实际场景的需要,选取第一语音文件和/或第二语音文件来拼接获得需要对应的外呼出话语句。

执行外呼任务的过程即为在实际通话时与呼叫对象进行语音对话的过程,此时需要向呼叫对象输出外呼出话语句对应的预生成语音文件。由于预先获取的外呼出话语句可以是可能使用到的所有外呼出话语句,而执行某一次外呼任务时可能仅使用到其中的一部分,例如会从获取的10句候选外呼出话语句中选取其中的4句,完成与用户之间的4轮对话。其中,目标外呼出话语句即为本次外呼任务需要使用到的外呼出话语句,在需要输出时,直接调取预生成语音文件输出的即可。

由此,能够通过可变话术子句中可变话术槽位的内容灵活适应不同外呼任务中的变量,如不同的呼叫对象、地址等,预先生成的语音文件能够覆盖实际外呼场景中外呼出话语句的大部分内容。因此可以预生成外呼出话语句中大部分内容的语音文件,并在需要时直接调取输出即可,有效提高了出话速度,并且适用场景灵活,可以避免出现语音播报卡顿的情况。

在实际场景中,除了子句中的可变内容除了可变话术槽位之外,还可以是实时话术槽位。所述实时话术槽位中的内容无法在外呼任务执行之前被预知,而是需要在于呼叫对象的语音对话过程中实时获取。例如,呼叫对象说出的内容是:“对不起,现在不方便,请在一个小时后给我重拨电话”,此时需要回复的外呼出话语句是:“好的,那我这边一个小时候会再次给您致电”。其中,“一个小时”即对应一个实时话术槽位,“一个小时”这一关于重拨时间的实时信息无法在外呼任务执行之前被预知,因此无法提前预生成包含该内容的语句所对应的语音文件,而是根据需要实时生成并输出即可。

由此,本申请的一些实施例在获取所述外呼出话语句中的固定话术子句和可变话术子句时,所述话术获取模块可以先根据划分标识,将所述外呼出话语句划分为多个子句,然后检测子句中的可变话术槽位和实时话术槽位,若所述子句中不包含可变话术槽位和实时话术槽位,将所述子句确定为固定话术子句,若所述子句中包含可变话术槽位,且不包含实时话术槽位,将所述子句确定为可变话术子句,由此获取到所述外呼出话语句中的固定话术子句和可变话术子句。

此外,若所述子句中包含实时话术槽位,所述话术获取模块将所述子句确定为实时话术子句。对于实时话术子句,所述语音输出模块可以根据所述外呼任务执行过程中获取的实时信息,确定所述实时话术子句中实时话术槽位的内容,实时调用文本转语音服务生成所述可变话术子句的第三语音文件,并输出所述第三语音文件。

例如,对于“您好,$global{meta_姓名}先生,我这边会在${meta_重拨时间}再次给您致电”这一外呼出话语句,其中的$global{meta_姓名}即为可变话术槽位,${meta_重拨时间}即为实时话术槽位。使用标点符号作为划分标识将其划分为三个子句后,可以确定其中“您好”为固定话术子句,“$global{meta_姓名}先生”为可变话术子句,“我这边会在${meta_重拨时间}再次给您致电”为实时话术子句。

对于其中的固定话术语句“您好”,可以直接调用TTS服务生成对应的第一语音文件vc-1。而对于其中的可变话术子句“$global{meta_姓名}先生”,可以在确定变量信息后,且在执行呼叫任务之前,调用TTS服务生成对应的第二语音文件vc-2,并根据需要将两者进行拼接来作为该外呼出话语句的预生成语音文件vc-12。而对于其中的实时话术子句“我这边会在${meta_重拨时间}后再次给您致电”,则需要在执行呼叫任务的过程中,根据呼叫对象的对话内容获取实时信息来确定实时话术槽位${meta_重拨时间}的具体内容,例如在本次通话过程中,确定重拨时间是一个小时,则可以在确定实时话术槽位的内容后,实时调用TTS服务生成所述可变话术子句的第三语音文件vc-3,并在需要是输出调取并输出即可。

在实际场景中,可以预先约定包含可变话术槽位的外呼出话语句在输出时可以分多次调取并输出相关的语音文件。例如,在本实施例中可以先调取并播放拼前半部分内容的预生成语音文件vc-12,然后再次调取并播放在确定实时信息后生成的第三语音文件vc-3,从而实现“您好,XX先生,我这边会在一个小时后再次给您致电”这一语句的快速语音输出。

本申请的另一些实施例中,在获取所述外呼出话语句中的固定话术子句和可变话术子句时,话术获取模块还可以先根据第一划分标识,对所述外呼出话语句进行划分,获取包含实时话术槽位的第一分句和不包含实时话术槽位的第二分句,然后根据第二划分标识,将所述第二分句划分为多个子句,若所述子句中不包含可变话术槽位,将所述子句确定为固定话术子句,若所述子句中包含可变话术槽位,将所述子句确定为可变话术子句。

其中,所述第一划分标识可以是在配置外呼场景对应的外呼出话语句为包含实时话术槽位的外呼出话语句额外添加的划分标识,例如实际场景中可以采用“[[]]”来作为第一划分标识,而第二划分标识可以采用语句中的标点符号。由此,以前述的外呼出话语句“您好,$global{meta_姓名}先生,我这边会在${meta_重拨时间}再次给您致电”为例,在配置时可以存储为“您好,$global{meta_姓名}先生,[[]]我这边会在${meta_重拨时间}再次给您致电”,在处理过程中,可以将其先划分为“您好,$global{meta_姓名}先生”和“我这边会在${meta_重拨时间}再次给您致电”这两个分句。

在处理过程中,对于其中的第二分句“您好,$global{meta_姓名}先生”,根据其中的“,”将其划分为两个子句“您好”和“$global{meta_姓名}先生”,分别为固定话术子句和可变话术子句。然后,可以采用前述的处理方式,提前调用TTS服务生成相应的语音文件vc-1、vc-2,并拼接获得预生成语音文件vc-12。而对于其中的第一分句,由于无法直接提前生成对应的语音文件,所述语音输出模块可以在执行所述外呼任务时,根据所述外呼任务执行过程中获取的实时信息,确定所述第一分句中实时话术槽位的内容,实时调用文本转语音服务生成所述第一分句的第四语音文件vc-4,并输出所述第四语音文件。在实际场景中,同样可以采用前述的方式分多次调取并输出相关的语音文件,来实现“您好,XX先生,我这边会在一个小时后再次给您致电”这一语句的快速语音输出。

此外,在本申请的一些实施例中,在根据所述第一语音文件和/或第二语音文件拼接获得外呼出话语句对应的预生成语音文件之后,语音拼接模块还可以根据外呼出话语句确定对应的预生成语音文件的标记信息,为所述预生成语音文件添加所述标记信息后,保存至数据库中。其中,所述标记信息是任意能够用于识别、搜索所述预生成语音文件的信息,例如可以采用MD5(message-digest algorithm 5,信息摘要算法第五版)值等对外呼出话语句进行哈希计算后获得的摘要信息,在需要将预生成语音文件保存至数据库中时,可以采用MD5算法对外呼出话语句的文本进行哈希计算获得MD5值,然后采用MD5值为对应的预生成语音文件命名后,将其保存至数据库中。

此外,本申请的另一些实施例中,标记信息还可以结合预生成语音文件的生成参数信息。其中,所述生成参数信息可以是调用TTS服务生成语音文件时的TTS参数,如声音类型、语速、音量等。所述TTS参数可以由用户根据外呼场景的需要在调用TTS服务之前提供,在实际场景中,用户可以在交互界面中对TTS参数进行选择,使得TTS服务能够使用这些TTS参数来合成声音,从而生成需要的语音文件。由此,当在需要将预生成语音文件保存至数据库中时,可以采用MD5算法对外呼出话语句的文本进行哈希计算获得MD5值,然后获取TTS服务在生成该预生成语音文件对应的第一语音文件和/或第二语音文件所使用的TTS参数,采用MD5值+TTS参数为对应的预生成语音文件命名后,将其保存至数据库中。

相应地,在需要输出预生成语音文件(如执行外呼任务)时,语音输出模块可以使用目标标记信息作为搜索条件,在所述数据库中搜索对应的预生成语音文件,其中所述目标标记信息为根据本次外呼任务对应的目标外呼出话语句所确定的标记信息,若搜索到符合所述搜索条件的预生成语音文件,输出所述预生成语音文件。若未搜索到符合所述搜索条件的预生成语音文件,则表示所述搜索条件对应的目标外呼出话语句包含了实时话术槽位,无法提前生成,因此可以实时调用TTS服务生成所述目标外呼出话语句的第五语音文件,并输出所述第五语音文件。

本申请实施例还提供了另一种外呼语音输出设备,该设备包括用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述设备执行前述的外呼语音输出方法。

在实际场景中,所述外呼语音输出设备可以是用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备,或者也可以是运行于上述设备的应用程序。所述用户设备包括但不限于计算机、手机、平板电脑等各类终端设备;所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

特别地,本申请实施例中的方法和/或实施例可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在该计算机程序被处理单元执行时,执行本申请的方法中限定的上述功能。

需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图或框图示出了按照本申请各种实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的针对硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

作为另一方面,本申请实施例还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备或装置中所包含的;也可以是单独存在,而未装配入该设备或装置中。上述计算机可读介质承载有一个或者多个计算机可读指令,所述计算机可读指令可被处理器执行以实现前述本申请的多个实施例的方法和/或技术方案。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,也并不表示任何特定的顺序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号