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

一种语音合成方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本文件属于语音合成技术领域,尤其涉及一种语音合成方法、装置、电子设备及存储介质。

背景技术

语音合成是将文本信息转换音频数据的技术,常用于机器人代替人工进行语音播报的业务。随着人工智能技术发展,目前主要是利用从文本到语音(Text To Speech,TTS)技术的深度学习模型来实现文本到语音的转换,大致流程是先将目标文本拆分成文本片段,之后再将各文本片段编码为发音序列后输入至文本转语音模型,得到相对应的音频数据。

为了使机器人的语音播报能够接近真人朗读,发音序列还会引入音素、韵律等辅助发音的信息,这就导致一个文本片段的发音序列长度可能会超出文本转语音模型所支持的单次输入长度,导致最终输出的音频数据在播报效果上不够稳定。

为此,如何解决发音序列过长,导致文本转语音模型不兼容的问题,是当前业内亟需要解决的技术难题。

发明内容

本申请目的是提供一种语音合成方法、装置、电子设备及存储介质,能够解决语音合成过程中,发音序列与文本转语音模型不兼容的问题。

为了实现上述目的,本申请实施例是这样实现的:

第一方面,提供一种语音合成方法,包括:

对语音待合成的目标文本进行文本预处理,得到所述目标文本的发音序列,所述发音序列包括所述目标文本对应的韵律标记;

基于所述目标文本对应的文本类停顿信息和所述发音序列中韵律标记对应的韵律类停顿信息,对所述发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合;

基于预先设置的序列长度要求,从所述句级子发音序列集合和所述句内子发音序列集合中,确定所述目标文本用于语音合成的多个子发音序列,所述序列长度要求是基于文本转语音模型的输入数据要求所确定得到的;

将所述多个子发音序列输入至所述文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

第二方面,提供一种语音合成装置,包括:

文本处理模块,用于对语音待合成的目标文本进行文本预处理,得到所述目标文本的发音序列,所述发音序列包括所述目标文本对应的韵律标记;

发音序列切分模块,用于基于所述目标文本对应的文本类停顿信息和所述发音序列中韵律标记对应的韵律类停顿信息,对所述发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合;

发音序列处理模块,用于基于预先设置的序列长度要求,从所述句级子发音序列集合和所述句内子发音序列集合中,确定所述目标文本用于语音合成的多个子发音序列,所述序列长度要求是基于文本转语音模型的输入数据要求所确定得到的;

语音合成模块,用于将所述多个子发音序列输入至所述文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

第三方面,提供一种电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器以执行上述第一方面的方法。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面的方法。

本申请当确定目标文本的发音序列后,基于目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息,对发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合;之后,基于预先为文本转语音模型设置的输入数据要求比如序列长度要求,从句级子发音序列集合和所述句内子发音序列集合中,选取目标文本用于语音合成的多个子发音序列,输入至文本转语音模型进行语音合成。可以看出,本申请按照目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息对目标文本的发音序列进行切分,切分位置为正常朗读的停顿位置,因此得到的各子发音序列在进行语音播报时不会破坏朗读的连贯性,同时也防止了将文本中同一发音字符切分至不同的两只子发音序列而导致针对该字符的语音播报出现异常的发生;此外,采用句级切分和句内切分两种不同的切分方式对发音序列进行切分,可以根据序列长度要求,从这两种切分方式的结果集中挑选出与文本转语音模型的输入数据要求相匹配的句级子发音序列或句内子发音序列来作为用于语音合成的子发音序列,保证输入至文本转语音模型后能够得到更为稳定的语义合成处理;并且,本申请将文本的发音序列按照句级和句内切分后即可以进行句级和句内粒度的语音合成,机器人一旦得到文本在先位置的句级语音数据或句内语音数据可直接进行语音播报,无需等待在后位置的语音数据是否生成,因此能够更及时地对用户进行回复,对应线上业务而言,可以改善语音合成所造成的交互延时。

附图说明

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

图1为本申请实施例提供的一种人机交互场景的流程示意图。

图2为本申请实施例提供的语音合成方法的第一种流程示意图。

图3为本申请实施例提供的语音合成方法在进行文本预处理前的准备工作流程示意图。

图4为本申请实施例中的语音合成方法进行句级切分和句内切分的示意图。

图5为本申请实施例提供的语音合成方法的第二种流程示意图。

图6为本申请实施例提供的语音合成方法的第三种流程示意图。

图7为基于为本申请实施例提供的语音合成方法进行语音合成时,与语音播报之间的时隙对比示意图。

图8为本申请实施例提供的语音合成方法的第四种流程示意图。

图9为本申请实施例提供的语音合成装置的结构示意图。

图10为本申请实施例提供的电子设备的结构示意图。

具体实施方式

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

语音合成是将文本数据转换为音频数据,再进行口语化语音播报的技术,常用于人机交互、自助类服务等需要机器人语音回复用户的场景。

目前语音合成是通过文本转语音模型完成文本数据到音频数据之间的转换。这里以在线的人机交互场景为例,机器人基于语音合成技术与用户进行交互的大致流程如图1所示,包括:

1)用户向机器人输入交互的语音数据。

2)机器人确定用户语音数据的回答文本,并对回答文本进行文本预处理,得到回答文本的发音序列。

3)机器人将回答文本的发音序列输入至文本转语音模型。

4)文本转语音模型基于回答文本的发音序列进行语音合成,得到回答文本的语音数据。

5)机器人获取文本转语音模型输出的回答文本的语音数据。

6)机器人基于回答文本的语音数据进行语音播报,完成针对用户的回复。

目前为了使机器人的语音播报能够接近真人朗读,发音序列会引入音素、韵律等辅助发音的信息,文本转语音模型按照发音序列中针对音素、韵律信息的标记,可以合成出朗读起来音调清楚且顿挫自然的语音数据。

而随着音素、韵律等辅助发音的信息引入,发音序列的长度得到了大幅增加,可能会超出文本转语音模型所支持的数据输入长度,这导致文本转语音模型的语音合成不够稳定,最终在语音播报时无法达到预期的朗读效果。

为此,需要将长度不适合文本转语音模型的发音序列切分成多个的子发音序列后,再分别输入至文本转语音模型进行语音合成。

以图1所示的线上的人机交互场景为例,发音序列的切分有以下考量:

1)发音序列切分后得到的子发音序列需要满足文本转语音模型的数据输入要求,既不能太长也不能太短。

2)发音序列的切分不能破坏朗读的自然度,也就是不能将文本句中本该连贯朗读的地方切分成不同的子发音序列,同时,也不能将文本中同一发音字符下的发音序列拆分成不同的子发音序列片段而导致该发音字符无法正常播报。

3)切分后的子发音序列在文本转语音模型进行语音合成的耗时不应超过线上业务的延时要求。

为此,本申请旨在不破坏朗读自然度的前提下,提出一种针对发音序列的切分方案,可以改善发音序列与文本转语音模型不兼容的问题;同时,在应用于线上业务时,也可以降低语音合成对于延时的影响。在本申请中,当确定目标文本的发音序列后,基于目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息,对发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合;之后,基于预先设置的文本转语音模型的序列长度要求,从句级子发音序列集合和所述句内子发音序列集合中,选取目标文本用于语音合成的多个子发音序列,输入至文本转语音模型进行语音合成。

可以看出,本申请按照目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息对目标文本的发音序列进行切分,切分位置为正常朗读的停顿位置,因此得到的各子发音序列在进行语音播报时不会破坏朗读的连贯性,同时也防止了将文本中同一发音字符切分至不同的两只子发音序列而导致针对该字符的语音播报出现异常的发生;此外,采用句级切分和句内切分两种不同的切分方式对发音序列进行切分,可以根据序列长度要求,从这两种切分方式的结果集中挑选出与文本转语音模型的输入数据要求相匹配的句级子发音序列或句内子发音序列来作为用于语音合成的子发音序列,保证输入至文本转语音模型后能够得到更为稳定的语义合成处理;并且,本申请将文本的发音序列按照句级和句内切分后即可以进行句级和句内粒度的语音合成,机器人一旦得到文本在先位置的句级语音数据或句内语音数据可直接进行语音播报,无需等待在后位置的语音数据是否生成,因此能够更及时地对用户进行回复,对应线上业务而言,可以改善语音合成所造成的交互延时。

本申请的语音合成方法可由电子设备执行,具体可以由电子设备的处理器执行。所谓的电子设备可以包括终端设备,比如智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备、智能家电、智能手表、车载终端、飞行器等;或者,电子设备还可以包括服务器,比如独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。

基于前述,本申请实施例提供一种语音合成方法,参见图2是本申请实施例提供的一种语音合成方法的流程图示意图。图2所示的语音合成方法可包括包括如下步骤:

S202,对语音待合成的目标文本进行文本预处理,得到目标文本的发音序列,发音序列包括目标文本对应的韵律标记。

应理解,发音序列是机器语言的朗读信息,文本转语音模型通过目标文本的发音序列,可以语音合成出用于播报目标文本的语音数据。

本申请中,朗读信息可以但不限于包括有音素和韵律的信息。

音素(phone)是根据语音的自然属性划分出来的最小语音单位,依据音节里的发音动作来分析,一个动作构成一个音素。本申请中,目标文本的发音序列可以通过音素标记体现出目标文本的音素信息。作为示例性地,汉语的音素标记为汉语的拼音音标,比如“啊”为汉语拼音的一声,音素标记为“a1”,“爱”为汉语拼音的四声,音素标记“ai4”,“代”为汉语拼音的四声,音素标记为“dai4”等;英语的音素可是英语音标,如“[i:]”、“[ei]”等。

韵律是为了让朗读顿挫清楚,需要一些韵律标记输入到文本转语音模型中,指导其模型学习发音。本申请中,目标文本的发音序列可以通过韵律标记体现出目标文本的韵律信息。作为示例性地,汉语韵律标记分为#1,#2,#3,#4四个级别。其中:#1表示前后不停顿;#2表示重度停顿,对重度词语必须发音发全,所以有极短暂的停顿;#3表示句内停顿,例如连词前后,介词前后,这种停顿是句子内部的短时停顿,但是是停顿明显;#4停表示是句级别停顿,正常朗读时,句子间会停顿换气,所以句级别停顿更加显著。

针对包含音素信息和韵律信息的发音序列,本步骤可以先将目标文本转换为拼音序列,拼音序列包括目标文本中的每个发音字符对应的拼音标记以及目标文本中的标点字符。

比如,“我不要你以为,我要我以为。”的拼音序列为“Wo3 bu2 yao4ni6yi3 wei2,wo3yao4 wo6yi3wei2。”

之后,将目标文本输入至现有的韵律预测模型进行韵律预测,得到每个发音字符的韵律标记。

比如,“我不要你以为,我要我以为。”的韵律预测结果可以为“我#1不#1要#1你#1以#1为#2,我#1要#1我#1以#1为#3。”

需要说明的是,韵律预测属于现有技术,由于本申请不涉及该方面的改进,这里不再对韵律预测进行赘述。

接下来,在拼音序列中每个发音字符相应的位置处添加对应的韵律标记,即可得到目标文本对应的发音序列。

比如,“我不要你以为,我要我以为。”的发音序列可以表示为:

“Wo3#1bu2#1yao4#1ni6#1yi3#1wei2#2,wo3#1yao4#1wo6#1yi3#1wei2#3。”。

此外,如图3所示,实际应用中,还可以在文本预处理前进行以下操作,以辅助得到目标文本的发音序列。

一、目标文本的正则化

这里,将原始的目标文本定为第一表示,文本正则化是将第一表示的目标文本进行转换和清洗,从而得到统一字符空间上的第二表示的目标文本。

其中,正则化步骤执行如下操作:

1)将数字、符号、数值单位、专业领域相关的字符缩写等,转化为可读的中文汉字表示。

2)将繁体汉字字符统一到简体汉字字符,将半角标点符号统一到全角标点符号。

3)将文本中除汉字,标点,英文字符以外的字符都过滤掉。

简单举例介绍,假设目标文本的第一表示为“这款iphone新款手机,机身长度15cm,宽度是65mm。整体设计是采用流线型机身,双摄像头,非常方便使用。”,经正则化得到的第二表示则为:“这款iphone新款手机,机身长度十五厘米,宽度是六十五毫米。整体设计采用流线型机身,双摄像头,非常方便使用。”

二、目标文本分词

这里,可以用预设的汉语分词工具对第二表示的目标文本进行分词,按照位置对应关系,以及Token在对应分词中的位置,给Token的分词标记填写正确的位置标记。本申请中Token是指单位文本,单位文本包括发音字符(汉字、英文单词)和标点。

这里,Token的分词标记包括:B-表示分词开始位置,I-表示分词中间位置,E-表示分词结束位置,S-表示单个汉字或单个英语的词。

以语料“这款iphone新款手机,机身长度15cm,宽度是65mm。整体设计是采用流线型机身,双摄像头,非常方便使用。”为例,该语料其中一段的分词标记如下表所示:

三、目标文本种汉字、英文转音素

这里,使用汉字到拼音映射工具以及英文g2p工具,将第二表示的目标文档中的汉字转换为拼音,并将英文应为转换为音标。

以语料“这款iphone新款手机,机身长度15cm,宽度是65mm。整体设计是采用流线型机身,双摄像头,非常方便使用。”为例,该语料其中一段的音标记如下表所示:

四、目标文本韵律预测

这里使用预设的文本韵律预测模型,对第二表示的目标文本进行韵律预测,得到韵律点位置和韵律标记。

以四级韵律为例,韵律标记#1表示前后不停顿;韵律标记#2表示重度停顿;韵律标记#3表示句内停顿;韵律标记#4停表示是句级别停顿。

语料“这款iphone新款手机,机身长度15cm,宽度是65mm。整体设计是采用流线型机身,双摄像头,非常方便使用。”其中一段的韵律标记可以如下表所示:

五、目标文本Token化

目标文本Token化是将第二表示的目标文本,变成由Token序列组成的第三表示。

基于之前几个阶段可知,每个Token具有如下属性:

Token字符;即所述汉字、单词或者标点。

Token类型;汉字类型的Token类型标记为c,单词类型的Token,类型标记为e,标点类型的Token,类型标记为p。

Token的音素;汉字音素是声韵母加音调表示的音素序列,英文由英文音素表示,标点符号无音素

Token的分词标记;汉语分词,每个字在词中的位置标记可以采用BIES表示。其中,BIES是一种标注方式,B表示分词开始位置,I表示分词中间位置,E表示分词结束位置,S表示单个汉字的词。

Token的韵律标记;韵律标记如前文所述,如果使用四级韵律,则#1表示前后不停顿;#2表示重度停顿;#3表示句内停顿;#4停表示是句级别停顿。

文本Token化的过程是将第二表示的目标文本逐个字符和标点转化为Token。具体的,如果字符为中文汉字,则转化为类型标记c的Token;如果字符为英文字符,则向后匹配直到下一个字符不是英文字符为止,整个英文字符子串作为一个类型标记为e的Token;如果字符为标点符号,则转化为类型标记为p的Token。

对应地,第三表示的目标文本的Token序列片段如下所示:

可以看出,上表的内容呈现有目标文本的发音序列,为此本申请可以基于上述几个阶段的流程构建目标文本的第三表示进行文本预处理,从而从目标文本的第三表示中获取目标文本的发音序列。

S204,基于目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息,对发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合。

其中,句文本类停顿信息是指文本维度的停顿信息,比如逗号、顿号、句号等表示停顿的标点;韵律类停顿信息可以是上文所述的表示停顿的韵律标记,如四级韵律的#3和#4。

本申请通过文本类停顿信息和韵律类停顿信息进行切分,可以保证切分得到的子发音序列不会破坏朗读的连贯性。

具体地,针对发音序列的切分可以分为句级切分和句内切分两种切分粒度。

其中,句级切分是指将目标文本的发音序列切分成每句话所对应的子发音序列,本步骤可以根据句号、感叹号和问号等句级停顿标点,以及上文所述的表示句级别停顿的句级停顿韵律标#4,对目标文本的发音序列进行切分,得到以句为粒度的句级子发音序列集合。

句内切分是指在句级切分基础之上,对每句话所对应的句级子发音序列作进一步切分,得到句内片段的子发音序列(也可以直接对目标文本的发音序列进行句内切分)。本步骤可以根据顿号、逗号等句内停顿标点,以及上文所述的表示句内停顿的韵律标记#3,对目标文本的发音序列进行切分,即可得到以句内片段为粒度的句内子发音序列集合。

下面以语料“门前里大桥下游过一群鸭。快来快来数一数二四六七八。”为示例,对句级切分和句内切分进行介绍。

为方便理解,这里只在上述语料中添加韵律标记以表示发音序列,该语料的发音序列为:

“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4。快#1来#1快#1来#1数一数#2二#1四#1六#1七八#4。”。

参考图4所示,按照句级停顿标点(句号、问号、感叹号等)和句级停顿韵律标记(#4),对发音序列进行句级切分,可以得到如下两个句级子发音序列如下:

“门#1前#1里#2大桥#1下#2游#1过#1一群#1鸭#3”;

“快#1来#1快#1来#1数一数#2二#1四#1六#1七八#3”。

之后,再按照句内停顿标点(逗号、顿号等)和句级停顿韵律标记(#3)分别对“门#1前#1里#2大桥#1下#2游#1过#1一群#1鸭#3”和“快#1来#1快#1来#1数一数#2二#1四#1六#1七八#3”进行句内切分。

得到“门#1前#1里#2大桥#1下#2游#1过#1一群#1鸭#3”对应的句内子发音序列:

“门#1前#1里#3”

“大桥下#3”

“游#1过#1一群#1鸭#4”

以及,“快#1来#1快#1来#1数一数#2二#1四#1六#1七八#3”对应的句内子发音序列:

“快#1来#1快#1来#1数一数#3”

“二#1四#1六#1七八#4。”

S106,基于预先设置的序列长度要求,从句级子发音序列集合和句内子发音序列集合中,确定目标文本用于语音合成的多个子发音序列,序列长度要求是基于文本转语音模型的输入数据要求所确定得到的。

应理解,按照序列长度要求确定用于语音合成的子发音序列是指确定出的子发音序列的长度不超出文本转语音模型单次输入的子发音序列的最大序列长度要求,同时也不小于文本转语音模型单次输入的子发音序列的最小序列长度要求。

这里,本步骤可以先尝试从句级子发音序列集合中挑选句级子发音序列来作为用于语音合成的子发音序列,如果句级子发音序列不适合作为用于语音合成的子发音序列,则再基于对应的句内子发音序列来确定用于语音合成的子发音序列。

比如,目标文本中某一句对应的句级子发音序列的长度超出最大序列长度要求,不适合作为用于语音合成的子发音序列,则可以基于该句对应的更为细化的多个句内子发音序列对该句级子发音序列进行重组,拆分得到至少两个能够满足最大序列长度要求的用于语音合成的子发音序列。

再比如,目标文本中某一句对应的句级子发音序列的长度未达到最小序列长度要求,不适合作为用于语音合成的子发音序列,则可以将该句的句级子发音序列与下一句的句级子发音序列进行融合,如果融合得到的句级子发音序列满足最小序列长度要求,则可以将该融合得到的句级子发音序列作为用于语音合成的子发音序列。此外,如果融合得到的句级子发音序列的长度超出最大序列长度要求,还可以基于前文上述方法再找到融合得到的句级子发音序列对应的句内子发音序列进行重组,即可得到同时满足最大序列长度要求以及最小序列长度要求的用于语音合成的子发音序列。

下面对确定目标文本用于语音合成的多个子发音序列的方法进行详细介绍。

本申请中,句级子发音序列集合的各个句级子发音序列按照各自对应的句子在目标文本中出现的先后顺序进行排列,同理,句内子发音序列集合中的各个句内子发音序列按照各自对应的字词在一个句子中出现的先后顺序进行排列。

应理解的是,句级子发音序列合中的一个句级子发音序列在句内子发音序列集合中可以对应有至少一个或多个句内子发音序列。这里,本步骤可以先从句级子发音序列集合中挑选句级子发音序列来作为用于语音合成的子发音序列,如果句级子发音序列不适合作为用于语音合成的子发音序列,则可以在从句内子发音序列集合中找到对应的句内子发音序列来确定用于语音合成的子发音序列。

对应地,图5是从句级子发音序列集合中挑选句级子发音序列来作为用于语音合成的子发音序列的流程示意图,包括:

S51,按照句级子发音序列集合中各个句级子发音序列的排列顺序,从句级子发音序列集合中选取一个句级子发音序列作为目标句级子发音序列。

S52,判断目标句级子发音序列的长度是否满足最小序列长度要求;是,则执行S53;否,则执行S54。

S53,判断目标句级子发音序列的长度是否满足最大序列长度要求;是,则执行S55;否,则执行S56。

S54,将目标句级子发音序列与目标句级子发音序列的后一个句级子发音序列进行融合,并将融合后的句级子发音序列作为选取的目标句级子发音序列后,反回执行S52。

S55,将目标句级子发音序列作为一个目标文本用于语音合成的子发音序列,并执行S57。

S56,基于目标句级子发音序列在句内子发音序列集合中对应的句内子发音序列对目标句级子发音序列进行重组处理,得到至少两个所述目标文本用于语音合成的子发音序列,并执行S57。

S57,判断句级子发音序列集合中句级子发音序列的是否全部选取一遍;是,则结束流程,否则返回执行S51。

其中,上述S56为从句内子发音序列确定用于语音合成的子发音序列的步骤,该S56的具体流程如图6所示,包括:

S561,按照句内子发音序列中各个句内子发音序列的排列顺序依次从所述句内子发音序列集合中选取一个目标句级子发音序列(由S41确定得到的)对应的句内子发音序列作为目标句内子发音序列。

S562,判断目标句内子发音序列的长度是否满足最大序列长度要求;是,则执行S563;否,则执行S564。

S563,将目标句内子发音序列与目标句内子发音序列的后一个句级子发音序列进行融合,并将融合后的句内子发音序列作为选取的目标句内子发音序列,并执行S565。

S564,基于分词粒度,对目标句内子发音序列进行进行重组,得到满足最大序列长度要求和最小序列长度要求的至少两个目标文本用于语音合成的子发音序列。

具体地,本步骤可以基于目标文本对应第三表示的数据表,确定目标句内子发音序列中各个token所对应的分词标记,并将表示分词结束位置的分词标记E和表示单个汉字的词的分词结束S可以作为重组需要分割的位置,从而实现以分词粒度的重组。

S565,判断目标句级子发音序列对应的句内子发音序列是否全部选取完毕。是,则结束流程,否,则重新执行步骤S561。

基于上述S561至S565,当目标句级子发音序列长度超出最大序列长度要求时,按序选取对应的句内子发音序列进行融合,直至融合得到句内子发音序列的长度超出最大序列长度要求时,在以分词与分词之间的位置进行切分,得到满足最大序列长度要求和最小序列长度要求的至少两个目标文本用于语音合成的子发音序列。

比如,句级子发音序列“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”对应的句内子发音序列有3个,分别为“门#1前#1里#3”、“大桥#1下#3”和“游#1过#1一群#1鸭#4”。

如果“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”的长度超出最大序列长度要求,则先按序选取“门#1前#1里#3”的句内子发音序列,并判断“门#1前#1里#3”是否出最大最大序列长度要求。

这里,假设“门#1前#1里#3”未超出最大序列长度要求,则与下一个句内子发音序列“大桥#1下#3”进行融合,得到新的句内子发音序列“门#1前#1里#3大桥#1下#3”。

之后,判断“门#1前#1里#3大桥#1下#3”是否超出最大最大序列长度要求。这里,假设“门#1前#1里#3”未超出最大序列长度要求,则接下来再与下一个句内子发音序列“游#1过#1一群#1鸭#4”进行融合,得到“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”。

此时,融合得到的“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”与对应的句级子发音序列长度一致,超出了最大序列长度要求,为此需要按照分词粒度,将“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”进行重组。

如前文所述,重组需要分割的位置为表示分词结束位置的分词标记E和表示单个汉字的词的分词结束S,对于“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”而言,“大桥下”属于一个分词,“下”作为“大桥下”分词结束位置,其分词标记为E。

假设刚好以“下”作为重组分割的位置可以得到既满足最大序列长度要求,又能满足最小序列长度要求的句内子发音序列,则可以将“门#1前#1里#3大桥#1下#3游#1过#1一群#1鸭#4”重组为:

“门#1前#1里#3大桥#1下”和“游#1过#1一群#1鸭#4”这两个用于语音合成的子发音序列。

可以看出,以分词为粒度对句内子发音序列进行重组,避免了将文本中一个分词拆分成不同子发音序列以分别进行播。比如:“你好”是一个分词,通过以分词为粒度的重组,能过避免将“你好”拆分成不同的子发音序列,导致语音播报在朗读“你”后停顿一定时间再朗读“好”,出现严重的违和感。

综上所述,基于本步骤的语音切分方法,最终可以将目标文本的发音序列按序切分成序列长度要求满足文本转语音模型的输入数据要求的子发音序列。

S208,将多个子发音序列输入至文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

本步骤,可以将对应目标文本中位置在前的子发音序列先输入至文本转语音模型进行语音合成,一旦得到对应的语音数据后即可进行语音播报,并在语音播报时间内,将位置在后的子发音序列输入至文本转语音模型进行语音合成,当位置在先的子发音序列语音播报结束后,位置在后的子发音序列也能完成语音合成并进行播报,从而使机器人具有无间断的语音播报能力,对于人机交互场景,可以使用户不用长时间等待机器人处理语音合成。

这里,为方便了解参考图7所示。图7为以子发音序列为粒度进行语音合成和语音播报的时隙示意图。

图7中,当确定目标文本的所有用于语音合成的子发音序列后,先将目标文本对应的第一个子发音序列(以子发音序列1表示)输入文本转语音模型进行语音合成,当语音合成完成后,即可基于子发音序列1的语音数据进行语音播报。

在对子发音序列1的语音数据进行语音播报的同时,将目标文本对应的第二个子发音序列(以子发音序列2表示)输入至文本转语音模型进行语音合成。

当对子发音序列1的语音数据完成语音播报后,即可对子发音序列2的语音数据进行语音播报,同时,将目标文本对应的第三个子发音序列(以子发音序列3表示)输入至文本转语音模型进行语音合成。

可以看出,只要语音合成的耗时小于语音播报的耗时(即图7中△T所示耗时差),从第二个子发音序列开始,就可以在当前语音播报尚未结束时,下一次语音播报的语音数据就能够生成出来,从而使机器人针对用户的每次回复不会出现播报中断问题,极大改善了延时现象。

因此,如果要改善用户侧的人机交互体验,一是保证单位时间内语音合成的文本量要大于语音播报的文本量;二是保证用于语音合成的第一个子发音序列的长度在满足最小序列长度的前提之上,进一步进行适当的缩减,从而提高第一个子发音序列的语音合成速度,使得用户向机器人发送交互数据后,机器人能够以最快时间通过语音播报进行回应。

介于此,可以针对用于语音合成的多个子发音序列中的第一个子发音序列和除第一个子发音序列外其他子发音序列设置不同的序列长度要求。之所以为第一个子发音序列单独设置发音序列长度,是因为第一个子发音序列是需要第一个需要合成为语音,播放给用户的子发音序列,为了快速响应用户的合成请求,第一个子发音序列的长度不宜过长,因尽可能更快地完成语音合成,从而第一时间被机器人进行语音播报。第二个子发音序列相比于第一个子发音序列,长度可以适当增加一些,但要保证语音合成的速度要快于语音播报的速度,也就是满足上文所述的单位时间内语音合成的文本量要大于语音播报的文本量。

这里,本申请将应用第一个子发音序列的最大序列长度定义为第一最大序列长度要求,应用第一个子发音序列的最小序列长度定义为第一最小序列长度要求;将应用除第一个子发音序列外其他子发音序列设置的最大序列长度定义为第二最大序列长度要求,将应用除第一个子发音序列外其他子发音序列的最小序列长度定义为第二最小序列长度要求。

考虑到文本转语音模型的输入数据要求取决于训练时所使用的样本发音序列,因此,可以基于训练文本转语音模型的样本发音序列,来确定上述第一最大序列长度要求、第二最大序列长度要求、第一最小序列长度要求和第二最小序列长度要求的取值。

在本申请中,样本发音序列也同样分为样本句级子发音序列集合和样本句内子发音序列集合。其中,样本句级子发音序列集合对样本文本的发音序列进行句级切分所得到的,样本句内子发音序列集合是对样本文本的发音序列进行句内切分所得到的。

针对应用于非首位的子发音序列的第二最大序列长度要求,可以基于样本句级子发音序列集合和样本句内子发序列集合对应的第一目标分位数序列长度进行确定。其中,第一目标分位数可以是95中位数至98中位数中一者。这里,以95分位为例,第二最大序列长度要求是将样本句级子发音序列集合中的所有句级子发音序列和样本句内子发序列集合中的所有句内子发序列按照长度由低到高进行排列,处于第95%排列位置的序列长度,该95中位数序列长度代表着文本转语音模型单次输入的子发音序列的最大长度。这里选择95分位数序列长度是为了留有5%的余量空间为实际切分提供一定的容错。文本中各Token对应的韵律标记和音素标的数量有少有多,切分得到的子发音序列中最后一个Token难免可能会包含有大量韵律标记和音素标记,而导致整个子发音序列的长度超出文本转语音模型训练时所使用的样本子发音序列的最大长度,通过余量空间设置则可以解决这一问题。

此外,第二最大序列长度要求可以基于文本转语音模型对应单位时间的语音合成的文本量(即token量)与最小语音播报耗时之间的乘积所确定得到的。也就是基于第二最大序列长度要求,限制最终切分到的子发音序列对应语音合成的报耗时要小于文本转语音模型语音播报的最小耗时,从而满足上文所述的无中断语音播报的条件。在实际应用中,文本转语音模型语音播报的最小耗时可以是通过训练时使用的样本句内子发音序列集合中最小的样本句内子发音序列所对应的语音数据播报耗时确定得到。

针对应用于首位的子发音序列的第一最大序列长度要求,则可以设置一个最大语音播报延迟时长,用于表示用户可容忍的最大等待时间,第一最大序列长度要求可以在满足第二最大序列长度要求基础上,进一步基于文本转语音模型对应单位时间的语音播报的文本量与预设最大语音播报延迟时长所确定得到的,也就是基于第一最大序列长度要求,限制最终切分到的第一子发音序列的语音合成耗时不会超出用户可容忍的最大等待时间。

针对应用于首位的子发音序列的第一最小序列长度要求,可以基于所述样本句内子发音序列集合对应的第二目标分位数序列长度所确定得到的,该第二目标分位数可以是中位数或靠近中位数的其他分位数,如55%中位数、45中位数等。因此,第一最小序列长度要求代表证样本句内子发音序列中间位水准的序列长度,相比于样本句级子发音序列,样本句内子发音序列的序列长度更短,如果首位的子发音序列的长度要求达到本句内子发音序列集合对应的第二目标分位数序列长度,则可保证首位的子发音序列长度不会小于文本转语音模型所支持的单次输入的最小长度要求。

针对应用于非首位的子发音序列的第二最小序列长度要求,可以基于样本句级子发音集合对应的第二目标分位数序列长度所确定得到的,同理,第二最小序列长度要求代表证样本句级子发音序列中间位水准的序列长度,相比于样本句内子发音序列,样均级子发音序列的序列长度会更长一些,也就是说,非首位的子发音序列的第二最小序列长度要求相比于首位的子发音序列的第一最小序列长度可以适当放宽限制。

这里,以第一阈值代表第一最大序列长度EITL-MAX(FirstInputTokenLength-Max),第二阈值代表第二最大序列长度EIL-MAX(EachInputLength-Max);第三阈值代表第一最小序列长度FITL-MIN(irstInputTokenLength-Min);第四阈值达标第二最小序列长度EIL-IDEAL(EachInputLength-Ideal)为例,图8是上述四个阈值的计算流程,包括:

S81,测算文本转语音模型在符合人机交互的在线性能要求下的实时率(RealTime Factor,RTF)参数。具体的:

假定服务性能要求X-Line个并发语音合成线路,语音合成的响应时间不超过T秒;那么,部署文本转语音模型用X-Line个并发虚拟客户端进行压力测试,测得它的RTF值。假定测得RTF=t(0

S82,计算首个子发音序列的语音合成的最大时长,T-first=T/t。

S83,根据训练文本转语音模型时使用的样本文本,计算文本转语音模型的录音员语速Speed。Speed=样本文本中总计的文本量/样本文本语音播报的总耗时。

S84,统计样本句级子发音序列集合的中位数序列长度SL1,和样本句内子发音序列集合的中位数序列长度SL2,这里SL1和SL2以token数量表示。

S85,统计所有样本句级子发音序列和样本句内子发音序列中的95分位数序列长度L95。

S86,记录第三阈值FITL-MIN,FITL-MIN=SL2。

S87,计算和记录第二阈值EITL-MAX。首先计算预设最大语音播报延迟时长对应的文本量,用文本转语音模型的录音员说话语速,乘以预设最大语音播报延迟时长:FCMT【FirstCutMaxTokens】=T-first*Speed;然后计算L95长度对应的文本量X,X=L95/L(phone),其中,第三阈值EITL-MAX=min(X,FCMT),取X值和FCMT值的最小一者。

S88,记录第四阈值EIL-IDEAL,EIL-IDEAL=SL1。

S89,计算和记录第一阈值EIL-MAX。可以通过语速Speed估算第三阈值对应文本量的播报时间T1,T1=FITL-MIN/Speed;通过合成速度RTF可以估算这T1段时间内可以合成的录音时间长度T2,T2=T1/RTF;通过Speed,可以计算T2录音时长内的文本量C,C(EIL-MAX)=T2*Speed;结合每个发音字符的平均发音序列长度为L(phone),T2录音时长内录音员语音播报的文本量可以预测参数Y=L(phone)*C(EIL-MAX);其中,第一阈值EIL-MAX=min(Y,L95),取Y值与L95值中最小的一者。

下面结合实例,对第一阈值、第二阈值、第三阈值和第四阈值的计算进行介绍。

假设,人机交互场景要求在40个线路并发语音合成请求下,语音合成的响应时间不超过T=0.2秒。

对应地,先用预置的文本转语音模型,在40路并发请求下做压力测试,测试RTF值。其中,RTF=文本转语音模型的语音合成耗时/语音合成的音频时长*100%;例如:文本转语音模型在0.1秒内,语音合成了时长为1秒的音频,则实时率为0.1,实时率越低则实时性越高。这里,假设RTF=0.1。

接着,从开源的文本数据库中,获取样本文本来作为文本转语音模型的训练数据。样本文本的信息如下:

上表中的句长表示句级粒度的长度,分段句长表示句内粒度的长度,长度以Token进行计量。

这里,可以通过训练文本转语音模型的样本文本中的总文本量除以录音总时长,得到录音员的语速。假设录音员的语速为Speed=5Tokens/S。

然后,统计样本句级子发音序列和各样本句内子发音序列中每个Token的平均音素标记数。这里,假设每个Token的平均音素标记数取整后为L(phoneme)=5Characters/Token,Characters标识音素标记。

之后,对所有样本句级子发音序列和样本句内子发音序列按照其总长度进行递增排序,得到95分位数序列长度的值L95,该L95即文本转语音模型允许单次输入的子发音序列的最大长度。

一般端到端文本转语音模型,在模型结构的参数设置上,可以直接或者推断出它最大允许输入的字符数量。例如FastSpeech模型允许2048输入长度。然而工程实践中发现,即使不超过模型的设置值,随着输入序列长度变大,文本转语音模型语音合成效果会变差。语音合成结果要么发音不准,要么韵律奇怪,甚至可能语音合成无意义的噪音数据。而训练所用的样本发音序列的语音合成基本不会出现显著问题。为此,本申请以样本发音序列(样本句级子发音序和样本句内子发音序)为参考,将L95长度来作为文本转语音模型最大允许的发音序列长度。这里,假设L95值为:L95=400Tokens。

之后,根据开源获取到的样本文本的信息,计算样本句级子发音序列的中位数序列长度SL1,和样本句内子发音序列的中位数序列长度SL2。这里假设SL1=18Tokens,SL2=6Tokens。

首先记录第三阈值FITL-MIN=SL2,本应用场景中FITL-MIN=6Tokens。之后,记录第二阈值FITL-MA:先计算用于语音合成的首个子发音序列的最大语音播报时长T-first=T/RTF=0.2/0.1=2s,并将最大语音播报时长转化为Token数,FCMT=T-first*Speed=2*5=10Tokens。然后用文本转语音模型最大允许输入长度L95,除以发音序列中平均每Token的字符数,计算文本转语音模型单次允许输入Token数量:X=L95/L(phone)=400Tokens/5Tokens=80Tokens。第二阈值FITL-MAX取两者最小值:FITL-MAX=min(FCMT,X)=min(10,80)=10Tokens。

同时记录第四阈值EIL-IDEAL,EIL-IDEAL=SL1=18Tokens。

最后记录第一阈值EIL-MAX:首先计算首个子发音序列的合成语音最小播报时间,用第三阈值,和平均录音源语速计算得到:T1=FITL-MIN/Speed=6/5=1.2s;然后计算这段时间内,文本转语音模型最大可以合成的音频时长:T2=T1/RTF=1.2/0.1=12s;根据说话人语速,计算这段时间内的Token个数。C(EIL-MIN)=T2*Speed=12*5=60Tokens;再乘以平均每个Token的音素字符数,得到对应的子发音序列长度值:Y=C(EIL-MAX)*L(phoneme)=60*5=300characters。

这里,第一阈值取Y跟L95的最小值:EIL-MAX=min(Y,L95)=min(300,400)=300characters

经上述图8所示的计算过程,即可得到这四个阈值。在确定目标文本用于语音合成的多个子发音序列过程中,使用第一阈值和第二阈值作为判断用于语音合成的首位子发音序是否符合文本转语音模型的数据输入要求的依据,后续的子发音序则使用第三阈值和第四阈值来作为判断是否符合文本转语音模型的数据输入要求的依据。

与上述图1所示方法相对应地,本申请实施例还提供一种语音合成装置。图9是本申请实施例语音合成装置900的结构示意图,包括:

文本处理模块910,用于对语音待合成的目标文本进行文本预处理,得到所述目标文本的发音序列,所述发音序列包括所述目标文本对应的韵律标记。

发音序列切分模块920,用于基于所述目标文本对应的文本类停顿信息和所述发音序列中韵律标记对应的韵律类停顿信息,对所述发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合。

发音序列处理模块930,用于基于预先设置的序列长度要求,从所述句级子发音序列集合和所述句内子发音序列集合中,确定所述目标文本用于语音合成的多个子发音序列,所述序列长度要求是基于文本转语音模型的输入数据要求所确定得到的。

语音合成模块940,用于将所述多个子发音序列输入至所述文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

可选地,文本处理模块910具体用于:将所述目标文本转换为拼音序列,所述拼音序列包括所述目标文本中的每个发音字符对应的拼音标记以及所述目标文本中的标点字符;对所述目标文本中的每个发音字符进行韵律预测,得到每个发音字符的韵律标记;在所述拼音序列中每个发音字符相应的位置处添加对应的韵律标记,得到所述目标文本对应的发音序列。

可选地,所述文本类停顿信息包括句级停顿标点和句内停顿标点,所述韵律类停顿信息包括句级停顿韵律标记和句内停顿韵律标记;发音序列切分模块920具体用于:基于所述句级停顿标点和所述句级停顿韵律标记对所述发音序列进行句级切分,得到句级子发音序列集合;基于所述句内停顿标点和所述句内韵律标记对所述发音序列进行句内切分,得到句内子发音序列集合。

可选地,所述序列长度要求包括最大序列长度要求,所述句级子发音序列中各个句级子发音序列按照各自对应的句子在所述目标文本中出现的先后顺序进行排列,所述句内子发音序列集合中各个句内子发音序列按照各自对应的字词在一个句子中出现的先后顺序进行排列,一个句级子发音序列对应一个或多个句内子发音序列;发音序列处理模块930具体用于:按照所述句级子发音序列中各个句级子发音序列的排列顺序依次从所述句级子发音序列集合中选取一个句级子发音序列作为目标句级子发音序列;判断所述目标句级子发音序列的长度是否满足所述最大序列长度要求;如果所述目标句级子发音序列的长度满足所述最大序列长度要求,则将所述目标句级子发音序列作为一个所述目标文本用于语音合成的子发音序列,并选取下一个句级子发音序列作为目标句级子发音序列,直至所述句级子发音序列集合中的所有句级子发音序列选取完毕;如果所述目标句级子发音序列的长度不满足所述最大序列长度要求,则基于所述目标句级子发音序列在所述句内子发音序列集合中对应的句内子发音序列对所述目标句级子发音序列进行重组处理,得到至少两个所述目标文本用于语音合成的子发音序列,并选取下一个句级子发音序列作为目标句级子发音序列,直至所述句级子发音序列集合中的所有句级子发音序列选取完毕。

可选地,所述序列长度要求还包括最小序列长度要求,发音序列处理模块930还用于:判断选取到的所述目标句级子发音序列的长度是否满足所述最小序列长度要求;如果所述目标句级子发音序列的长度满足所述最小序列长度要求,则执行判断所述目标句级子发音序列的长度是否满足所述最大序列长度要求的步骤;如果所述目标句级子发音序列的长度不满足所述最小序列长度要求,则将所述目标句级子发音序列与所述目标句级子发音序列的后一个句级子发音序列进行融合,并将融合后的句级子发音序列作为选取的目标句级子发音序列,以及执行判断选取到的目标句级子发音序列的长度是否满足所述最小序列长度要求的步骤。

可选地,所述文本转语音模型的输入数据要求是基于训练所述文本转语音模型时所使用的样本句级子发音序列集合和样本句内子发音序列集合所确定得到的,所述样本句级子发音序列集合是对样本文本的发音序列进行句级切分所得到的,所述样本句内子发音序列集合是对所述样本文本的发音序列进行句内切分所得到的。

可选地,所述最大序列长度要求包括:应用于生成用于语音合成的多个子发音序列中第一个子发音序列的第一最大序列长度要求和应用于生成所述多个子发音序列中除所述第一个子发音序列外其他子发音序列的第二最大序列长度要求;

其中,所述第二最大序列长度要求是基于所述样本句级子发音序列集合和所述样本句内子发序列集合对应的第一目标分位数序列长度所确定得到的,或者,所述第二最大序列长度要求是基于所述文本转语音模型对应单位时间的语音合成的文本量与最小语音播报耗时之间的乘积所确定得到的,所述第一最大序列长度要求是在所述第二最大序列长度要求基础上,基于所述文本转语音模型对应单位时间的语音播报的文本量与预设最大语音播报延迟时长所确定得到的,文本量包括文本的发音字符和标点。

其中,如果所述目标句级子发音序列是所述句级子发音序列集合中第一个句级子发音序列,则发音序列处理模块930判断目标句级子发音序列的长度是否满足所述第一最大序列长度要求;如果所述目标句级子发音序列不是所述句级子发音序列集合中第一个句级子发音序列,则发音序列处理模块930判断所述目标句级子发音序列的长度是否满足所述第二最大序列长度要求。

可选地,所述最小序列长度要求包括:应用于生成用于语音合成的多个子发音序列中第一个子发音序列的第一最小序列长度要求,和应用于所述多个子发音序列中除所述第一个子发音序列外其他子发音序列的第二最小序列长度要求;其中,所述第一最小序列长度要求是基于所述样本句内子发音序列集合对应的第二目标分位数序列长度所确定得到的,所述第二最小序列长度要求是基于所述样本句级子发音集合对应的第二目标分位数序列长度所确定得到的。

可选地,发音序列处理模块930基于所述目标句级子发音序列在所述句内子发音序列集合中对应的句内子发音序列对所述目标句级子发音序列进行重组处理,得到至少两个所述目标文本用于语音合成的子发音序列具体包括:按照所述句内子发音序列中各个句内子发音序列的排列顺序依次从所述句内子发音序列集合中选取一个所述目标句级子发音序列对应的句内子发音序列作为目标句内子发音序列:判断所述目标句内子发音序列的长度是否满足所述最大序列长度要求;如果所述目标句内子发音序列的长度是满足所述最大序列长度要求,则将所述目标句内子发音序列与所述目标句内子发音序列的后一个句级子发音序列进行融合,并将融合后的句内子发音序列作为选取的目标句内子发音序列,以及执行判断选取到的目标句内子发音序列的长度是否满足所述最大序列长度要求的步骤;如果所述目标句内子发音序列的长度不满足所述最大序列长度要求,则基于分词粒度,对所述目标句内子发音序列进行切分后进行重组,得到满足所述最大序列长度要求和所述最小序列长度要求的至少两个所述目标文本用于语音合成的子发音序列,并选取下一个内级子发音序列作为目标句级子发音序列,直至所述目标句级子发音序列对应的句内子发音序列全部选取完毕。

根据本申请的另一个实施例,图9所示的语音合成装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于语音合成装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。

根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图1所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图9中所示的语音合成装置,以及来实现本申请实施例语音合成方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于数据处理设备中,并在其中运行。

本申请的语音合成装置按照目标文本对应的文本类停顿信息和发音序列中韵律标记对应的韵律类停顿信息对目标文本的发音序列进行切分,切分位置为正常朗读的停顿位置,因此得到的各子发音序列在进行语音播报时不会破坏朗读的连贯性,同时也防止了将文本中同一字符切分至不同的两只子发音序列而导致针对该字符的语音播报出现异常的问题;此外,采用句级切分和句内切分两种不同的切分方式对发音序列进行切分,从而可以根据序列长度要求,从这两种切分方式的结果集中挑选出与文本转语音模型的输入数据要求相匹配的句级子发音序列或句内子发音序列来作为用于语音合成的子发音序列,保证输入至文本转语音模型后能够得到更为稳定的语义合成处理;并且,本申请将文本的发音序列按照句级和句内切分后即可以句级和句内为粒度进行语音合成,一旦句级和句内的语音数据生成即可进行语音播报,相比于将整个文本进行语音合成再进行语音播报的方案,能够使机器人更及时地对用户进行回复,对应线上业务而言,可以改善语音合成所造成的交互延时。

图10是本申请实施例提供的一种电子设备的结构示意图。请参考图10,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放计算机程序。具体地,计算机程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供计算机程序。

可选地,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成上述图9所示的语音合成装置。对应地,处理器,执行存储器所存放的程序,并具体用于执行以下操作:

对语音待合成的目标文本进行文本预处理,得到所述目标文本的发音序列,所述发音序列包括所述目标文本对应的韵律标记。

基于所述目标文本对应的文本类停顿信息和所述发音序列中韵律标记对应的韵律类停顿信息,对所述发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合。

基于预先设置的序列长度要求,从所述句级子发音序列集合和所述句内子发音序列集合中,确定所述目标文本用于语音合成的多个子发音序列,所述序列长度要求是基于文本转语音模型的输入数据要求所确定得到的。

将所述多个子发音序列输入至所述文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

上述如本说明书所示实施例揭示的语音合成方法或者语音播报方法可以应用于处理器中,由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

此外,本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个计算机程序,该一个或多个计算机程序包括指令。可选地,上述指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示方法的步骤,包括:

对语音待合成的目标文本进行文本预处理,得到所述目标文本的发音序列,所述发音序列包括所述目标文本对应的韵律标记。

基于所述目标文本对应的文本类停顿信息和所述发音序列中韵律标记对应的韵律类停顿信息,对所述发音序列分别进行句级切分和句内切分,得到句级子发音序列集合和句内子发音序列集合。

基于预先设置的序列长度要求,从所述句级子发音序列集合和所述句内子发音序列集合中,确定所述目标文本用于语音合成的多个子发音序列,所述序列长度要求是基于文本转语音模型的输入数据要求所确定得到的。

将所述多个子发音序列输入至所述文本转语音模型进行语音合成处理,得到每个子发音序列对应的语音数据。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。

技术分类

06120114704702