语音合成方法、装置、存储介质和电子设备与流程

文档序号:22166873发布日期:2020-09-11 20:38阅读:181来源:国知局
语音合成方法、装置、存储介质和电子设备与流程

本申请涉及语音处理技术领域,具体而言,涉及一种语音合成方法、装置、存储介质和电子设备。



背景技术:

在动画制作、视频配音、网上答题等多种场合下,都需要提供匹配的声音进行讲解。通常情况下需要在专业的录音棚中,由人工录制对应的语音,以便在播放对应画面时,可播放对应的声音。但这种人工配音的方式耗费的人工成本较高,配音的效率也较低。



技术实现要素:

为了解决上述问题,本申请实施例提供了一种语音合成方法、装置和电子设备。

第一方面,本申请实施例提供了一种语音合成方法,包括以下步骤:

确定输入文本的音素序列,所述音素序列包括多个子音素序列;

确定所述多个子音素序列中每一个子音素序列的时长信息;

根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息;

根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。

可选地,所述确定输入文本的音素序列,包括:

对所述输入文本进行分词处理,以获取多个分词;

确定所述多个分词对应的多个子音素序列;

组合所述多个子音素序列,生成所述音素序列。

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

确定目标子音素序列在多个样本语音中的多个时长信息;

根据所述多个时长信息,确定所述目标子音素序列的预测时长信息;

根据多个所述目标子音素序列的预测时长信息,生成子音素序列的时长统计结果;

所述确定所述多个子音素序列中每一个子音素序列的时长信息,包括:

根据子音素序列时长的统计结果,确定所述多个子音素序列中每一个子音素序列的时长信息。

可选地,所述根据所述多个时长信息,确定所述目标子音素序列的预测时长信息,包括:

计算所述每个时长信息的概率;

选取具有最大概率的时长信息作为所述目标子音素序列的所述预测时长信息。

可选地,所述根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息,包括:

确定所述子音素序列中每一个音素的时长占比;

将所述子音素序列的时长信息和所述每一个音素的时长占比的乘积,作为所述每一个音素的时长信息。

可选地,所述确定所述子音素序列中每一个音素的时长占比,包括:

确定所述子音素序列中的音素个数;

将所述音素个数的倒数作为所述每一个音素的时长占比。

可选地,所述确定所述子音素序列中每一个音素的时长占比,包括:

确定所述子音素序列中的韵母音素个数和声母音素个数;

基于所述韵母音素个数、所述声母音素个数和预设的分配比例,确定所述每一个音素的时长占比。

第二方面,本申请实施例提供了一种语音合成装置,包括:

序列确定单元,用于确定输入文本的音素序列,所述音素序列包括多个子音素序列;

第一时长确定单元,用于确定所述多个子音素序列中每一个子音素序列的时长信息;

第二时长确定单元,用于根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息;

语音合成单元,用于根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。

第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项方法的步骤。

第四方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项方法的步骤。

本申请提供的语音合成方法、装置、存储介质和电子设备,确定输入文本的音素序列,所述音素序列包括多个子音素序列;确定所述多个子音素序列中每一个子音素序列的时长信息;根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息;根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。在上述语音合成方案中,可以根据输入文本合成输入文本对应的语音,而无需人工配音,降低了配音过程中所消耗的人工成本,并提升了配音的效率。

附图说明

图1是本申请实施例提供的一种语音合成方法的流程示意图;

图2是本申请实施例提供的一种生成子音素序列的时长统计结果的方法的流程示意图;

图3是本申请实施例提供的另一种语音合成方法的流程示意图;

图4a为fastspeech模型中前馈transformer的架构示意图;

图4b为fastspeech模型中fft模块的架构示意图;

图4c为fastspeech模型中长度调节器的架构示意图;

图4d为fastspeech模型中时长预测器的架构示意图;

图5是本申请实施例提供的一种语音合成装置的结构示意图;

图6为本申请实施例所涉及的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请进行进一步的介绍。

在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本申请的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征a、b、c,另一个实施例包含特征b、d,那么本申请也应视为包括含有a、b、c、d的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。

下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。

参见图1,图1是本申请实施例提供的一种语音合成方法的流程示意图,在本申请实施例中,所述方法包括:

s101、确定输入文本的音素序列,所述音素序列包括多个子音素序列。

可先对输入文本进行预处理,以去除文本信息中的无效字符、消除歧义等,从而使最终合成的语音具有较好的播放效果。子音素序列是与部分输入文本对应的音素序列,多个子音素序列组成输入文本的音素序列。

在一种可实施方式中,每个字都对应不同的音素序列,将输入文本中每个字对应的音素序列作为子音素序列,输入文本中所有字对应的子音素序列组成该输入文本的音素序列。

在一种可实施方式中,将输入文本进行分组,每个分组中至少包括一个字或词,一个分组对应于一个子音素序列,每个分组中包含的字或词所对应的音素序列为该分组对应的子音素序列。

可选地,步骤s101可包括:

对所述输入文本进行分词处理,以获取多个分词;

确定所述多个分词对应的多个子音素序列;

组合所述多个子音素序列,生成所述音素序列。

若输入文本为中文文本,可以基于文本信息与分词词典的匹配结果进行分词,确定每个分词对应的子音素序列,生成输入文本的音素序列。例如,输入文本为“我爱英语”,进行分词处理后得到分词“我”、“爱”、“英语”。可将上述三个分词与音素字典进行匹配,确定上述三个分词对应的子音素序列,最后组合上述三个子音素序列获得输入文本的音素序列。

若输入文本为英文文本,可以基于文本中的空格和标点进行分词,将分词与音素字典进行匹配,确定所有分词对应的子音素序列,最后组合所有子音素序列获得输入文本的音素序列。

s102、确定所述多个子音素序列中每一个子音素序列的时长信息。

上述时长信息为合成语音中朗读子音素序列所用的时长信息。可在系统中预存各个分词与时长的对应关系,进而获得各个分词对应的子音素序列与时长的对应关系。

可选地,步骤s102可包括:

根据子音素序列时长的统计结果,确定所述多个子音素序列中每一个子音素序列的时长信息。

上述子音素序列时长的统计结果包含有基于多个样本数据确定的子音素序列与时长的对应关系。

参见图2,图2是本申请实施例提供的一种生成子音素序列的时长统计结果的方法的流程示意图,所述方法包括:

s201、确定目标子音素序列在多个样本语音中的多个时长信息。

s202、根据所述多个时长信息,确定所述目标子音素序列的预测时长信息。

s203、根据多个所述目标子音素序列的预测时长信息,生成子音素序列的时长统计结果。

可先确定目标分词在多个样本语音中的播放时长信息。上述目标分词在多个样本语音中的播放时长信息,即为该目标分词对应的目标子音素序列在多个样本语音中的多个时长信息。

上述多个样本语音既可以使来自同一对象的多个样本语音,也可以是来自不同对象的多个样本语音。根据多个样本语音确定的子音素序列的时长统计结果,确定子音素序列的时长信息,会较贴近真实人声朗读时的发音时长,以提升配音的质量。

可选地,步骤s202包括:

计算所述每个时长信息的概率;

选取具有最大概率的时长信息作为所述目标子音素序列的所述预测时长信息。

选取最大概率的时长信息作为所述目标子音素序列的所述预测时长信息,可使合成的语音较接近真实的人声,使配音产生的效果更自然。

此外,本申请实施例通过对每个分词进行发音时长的统计,进而对每个发音序列的时长进行概率评估。相比现有技术中使用预训练好的模型,提取音素序列中每个因素的时长信息,可以更精确的确定子音素序列对应的播放时长。

s103、根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息。

可基于子音素序列中音素的个数,将时长平均分配给子音素序列中的每一个音素。也可以根据音素的性质为不同音素分配不同的比例,基于该比例,为不同的音素分配不同的时长。

s104、根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。

将音素序列和每一个音素的时长信息输入语音合成模型,确定输入文本对应的声音波形,生成对应语音。其中,该语音合成模型可以为wavenet(波网)模型、deepvoice2(深度语音)模型、tacotron(端到端的语音合成)模型等,本申请实施例对具体应用哪种语音合成模型不做限定。

本申请实施例的方法可以根据输入文本合成输入文本对应的语音,而无需人工配音。因此,可以解决人工配音过程中人工成本高,配音效率较低的问题。

参见图3,图3是本申请实施例提供的又一种语音合成方法的流程示意图,在本申请实施例中,所述方法包括:

s301、确定输入文本的音素序列,所述音素序列包括多个子音素序列。

s302、确定所述多个子音素序列中每一个子音素序列的时长信息。

s303、确定所述子音素序列中每一个音素的时长占比。

在一种可实施方式中,步骤s303可包括:

确定所述子音素序列中的音素个数;

将所述音素个数的倒数作为所述每一个音素的时长占比。

上述实施方式中基于子音素序列中音素的个数,将时长平均分配给子音素序列中的每一个音素。本申请实施例提供了一种简单易行的音素时长分配方法,且分配效果也较好。

在一种可实施方式中,步骤s303可包括:

确定所述子音素序列中的韵母音素个数和声母音素个数;

基于所述韵母音素个数、所述声母音素个数和预设的分配比例,确定所述每一个音素的时长占比。

上述分配比例可根据需要和经验值进行确定,也可根据人类发音时长的特点,为韵母音素和声母音素分配不同的时长比例,从而使同一子音素序列中韵母音素和声母音素具有不同的分配时长。本申请实施例的方法可使合成的语音更符合人类真实发音的特点。

s304、将所述子音素序列的时长信息和所述每一个音素的时长占比的乘积,作为所述每一个音素的时长信息。

s305、根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。

本申请实施例的方法,通过不同的分配方式,确定子音素序列中每一个音素的时长占比,从而可根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息,并根据音素序列中每一个音素的时长信息合成输入文本对应的语音。本申请实施例的方法简单易行,且可使最终合成的语音具有贴近真实人声的特点。

此外,本申请实施例通过对每个分词进行发音时长的统计,进而对每个发音序列的时长进行概率评估。相比现有技术中使用预训练好的模型,提取音素序列中每个因素的时长信息,可以更精确的确定子音素序列对应的播放时长。

为使本发明的技术方案便于理解。下面介绍一种单人语音合成的方法的实现过程。本申请实施例提供的方法收集同一个人的语料,模拟该人的声音,即用真人a的语音训练模拟a的声音,使用真人b的语音模拟b的声音,等等,模拟、合成的是同一个人的声音。

本申请实施例提供的方法的训练原理为:收集样本语音和样本文本数据,对模型进行迭代训练,即通过不断给模型喂文本,合成语音,并与样本语音进行比对,以监督学习的方式实现对模型的训练,模型采用的是fast-speech模型。

图4a-图4d为fastspeech模型的整体架构示意图。其中,图4a为fastspeech模型中前馈transformer的架构示意图;图4b为fastspeech模型中fft模块的架构示意图;图4c为fastspeech模型中长度调节器的架构示意图;图4d为fastspeech模型中时长预测器的架构示意图。

如图4a-图4d所示,fastspeech模型分为编码器和解码器,其中,从底往上前面的phonemeembedding、positionalencoding、fftblock为编码器,后面的为positionalencoding、fftblock、linearlayer为解码器,

本申请实施例提供的方法中具体训练过程为:

步骤1.输入样本文本a和样本语音b。

步骤2.对输入样本文本a进行编码处理。步骤2具体包括下列步骤2.1至步骤2.3。

2.1音素嵌入(phonemeembedding):基于文本a(例如:“今天你吃饭了吗?”)提取发音序列,其中,每一个词对应一个音素序列(即1-n个音素,例如:“你”、“吃”等各自对应其音素序列)。具体过程是:经过查询音素表,将文本a转换成一个音素序列(用特征向量x表示),并对特征向量x进行转化(经过矩阵关系运算降维),转换成特征向量y。

2.2位置编码(positionalencoding),基于向量计算,把文本a的文本序列信息加入到特征向量y中,以体现时间序列,得到特征向量z。

2.3fftblock,该模块是一个transformer前馈网络,包含关注重要信息(attention)机制、卷积层,其中卷积层为需要训练参数的网络层,经过该模块的处理计算,由特征向量z得到特征向量u。

步骤3.时长提取(lengthregular),现有模型使用预训练好的模型,提取音素序列中每个因素的时长信息,但效果并不好(是句子的对齐,并未实现音素到音素的对齐)。本方案做了另一改进:使用统计模型(经典解码器),实现了强制对齐,具体是:通过对每个单词进行发音时长的统计,对每个发音序列的时长进行概率评估,选择概率最大的序列作为输出结果,由此实现了音素到音素的对齐,进一步,基于得到的时长信息,对特征向量u进行运算,得到特征向量v。

步骤4.解码,具体包括下列步骤4.1至4.3。

4.1位置编码(positionalencoding),基于向量计算,把文本a的文本序列信息加入到特征向量v中,以体现时间序列,得到特征向量s。

4.2fftblock,经过该模块的处理计算,由特征向量s得到特征向量t。

4.3经过linearlayer,得到特征向量t对应的梅尔频谱α,与最初输入的语音b的梅尔频谱β进行比较,即将贝塔作为比较的标签,计算损失,根据损失不断迭代训练上述的编码器和解码器。

后续的语音合成过程,即是通过上述训练好的模型,输入文本,经过层层计算,得到最终的特征向量t,并得到对应的梅尔频谱,输出文本对应的语音。

上述图1~图4详细阐述了本申请实施例的语音合成方法。请参见图5,图5是本申请实施例提供的一种语音合成装置的结构示意图,如图5所示,所述语音合成装置包括:

序列确定单元501,用于确定输入文本的音素序列,所述音素序列包括多个子音素序列;

第一时长确定单元502,用于确定所述多个子音素序列中每一个子音素序列的时长信息;

第二时长确定单元503,用于根据所述子音素序列的时长信息,确定所述子音素序列中每一个音素的时长信息;

语音合成单元504,用于根据所述音素序列和所述每一个音素的时长信息,合成所述输入文本对应的语音。

可选地,所述序列确定单元501具体用于:

对所述输入文本进行分词处理,以获取多个分词;

确定所述多个分词对应的多个子音素序列;

组合所述多个子音素序列,生成所述音素序列。

可选地,所述装置还包括:

结果生成单元505,用于确定目标子音素序列在多个样本语音中的多个时长信息;

根据所述多个时长信息,确定所述目标子音素序列的预测时长信息;

根据多个所述目标子音素序列的预测时长信息,生成子音素序列的时长统计结果;

所述第一时长确定单元502具体用于:

根据子音素序列时长的统计结果,确定所述多个子音素序列中每一个子音素序列的时长信息。

可选地,所述结果生成单元505具体用于:

计算所述每个时长信息的概率;

选取具有最大概率的时长信息作为所述目标子音素序列的所述预测时长信息。

可选地,所述第二时长确定单元503具体用于:

确定所述子音素序列中每一个音素的时长占比;

将所述子音素序列的时长信息和所述每一个音素的时长占比的乘积,作为所述每一个音素的时长信息。

可选地,所述第二时长确定单元503具体用于:

确定所述子音素序列中的音素个数;

将所述音素个数的倒数作为所述每一个音素的时长占比。

可选地,所述第二时长确定单元503具体用于:

确定所述子音素序列中的韵母音素个数和声母音素个数;

基于所述韵母音素个数、所述声母音素个数和预设的分配比例,确定所述每一个音素的时长占比。

本领域的技术人员可以清楚地了解到本申请实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是fpga(field-programmablegatearray,现场可编程门阵列)、ic(integratedcircuit,集成电路)等。

本申请实施例的各处理单元和/或模块,可通过实现本申请实施例所述的功能的模拟电路而实现,也可以通过执行本申请实施例所述的功能的软件而实现。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述语音合成方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/或数据的任何类型的媒介或设备。

参见图6,其示出了本申请实施例所涉及的一种电子设备的结构示意图,该电子设备可以用于实施上述实施例中语音合成方法。具体来讲:

存储器620可用于存储软件程序以及模块,处理器690通过运行存储在存储器620的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器620还可以包括存储器控制器,以提供处理器690和输入单元630对存储器620的访问。

输入单元630可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元630可包括触敏表面631(例如:触摸屏、触摸板或触摸框)。触敏表面631,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面631上或在触敏表面631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器690,并能接收处理器690发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面631。

显示单元640可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元640可包括显示面板641,可选的,可以采用lcd(liquidcrystaldisplay,液晶显示器)、oled(organiclight-emittingdiode,有机发光二极管)等形式来配置显示面板641。进一步的,触敏表面631可覆盖显示面板641,当触敏表面631检测到在其上或附近的触摸操作后,传送给处理器690以确定触摸事件的类型,随后处理器690根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然触敏表面631与显示面板641是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面631与显示面板641集成而实现输入和输出功能。

处理器690是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行终端设备的各种功能和处理数据,从而对终端设备进行整体监控。可选的,处理器690可包括一个或多个处理核心;其中,处理器690可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器690中。

具体在本实施例中,终端设备的显示单元是触摸屏显示器,终端设备还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含实现上述语音合成方法的步骤。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

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

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