首页 > 乐器声学 专利正文
模型训练方法及组件,音素发音时长标注方法及组件与流程

时间:2022-01-17 阅读: 作者:专利查询

模型训练方法及组件,音素发音时长标注方法及组件与流程

1.本技术涉及计算机技术领域,特别涉及一种模型训练方法及组件,一种音素发音时长标注方法及组件。


背景技术:

2.目前,现有技术以文本为对象来预测音素发音时长,而文本没有发音长短的约束,这种无时长约束的方法只适用于语音合成场景,即:每个音素的发音时长不受限制也没有严格的标准。
3.发音时长的预测准确度只会影响语音合成的自然度,对实际使用影响不大。但对于歌声合成而言,发音时长的预测准确度直接影响歌曲合成的质量。因为歌曲的节拍信息限定了每个字的发音时长,如果不约束音素发音时长,那么合成的歌曲发音将无法与歌曲旋律相契合。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种模型训练方法及组件,一种音素发音时长标注方法及组件,以得到适用于歌声合唱场景的音素发音时长识别模型。其具体方案如下:
5.为实现上述目的,一方面,本技术提供了一种模型训练方法,包括:
6.从歌曲音节集中获取目标音节和所述目标音节的标签;所述标签包括:所述目标音节中的辅音音素的辅音发音帧数n0、所述目标音节中的元音音素的元音发音帧数n1;
7.按照所述辅音发音帧数n0和所述元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列;
8.将所述目标音节重复n次得到音节组;其中,n=n0+n1;;
9.将所述音节组输入神经网络模型,以使所述神经网络模型输出预测序列;所述预测序列包括n3个辅音标记和n4个元音标记;其中,n3+n4=n;
10.计算所述预测序列与所述目标序列之间的损失值;
11.基于所述损失值对所述神经网络模型的参数进行调整,得到更新后的模型;
12.若更新后的模型收敛,则将更新后的模型作为音素发音时长识别模型。
13.优选地,还包括:
14.若更新后的模型未收敛,则从所述歌曲音节集中重新获取另一音节及该音节的标签,以对更新后的模型进行迭代训练,直至模型收敛时,将更新后的模型作为所述音素发音时长识别模型。
15.优选地,所述将所述音节组输入神经网络模型,以使所述神经网络模型输出预测序列,包括:
16.所述神经网络模型基于所述音节组中的所述目标音节的重复次数确定所述目标音节的发音总帧数n,并预测所述目标音节中的每帧发音的音素类型;
17.若任一帧发音的音素类型为辅音,则记录一个辅音标记,若任一帧发音的音素类
型为元音,则记录一个元音标记,得到所述预测序列。
18.优选地,所述预测所述目标音节中的每帧发音的音素类型,包括:
19.通过查询音素词典预测所述目标音节中的每帧发音的音素类型。
20.优选地,所述歌曲音节集由中文歌词文本依据相应歌曲音频转换得到。
21.优选地,若所述目标音节为单音素元音音节,则所述按照所述辅音发音帧数n0和所述元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列之后,还包括:
22.在所述目标序列的首位填充一个辅音标记;
23.相应地,在所述计算所述预测序列与所述目标序列之间的损失值之前,还包括:
24.在所述预测序列的首位填充一个辅音标记。
25.优选地,所述计算所述预测序列与所述目标序列之间的损失值之前,还包括:
26.检测并消除所述预测序列中的噪点。
27.优选地,所述计算所述预测序列与所述目标序列之间的损失值,包括:
28.将所述预测序列与所述目标序列对位比较,得到n个比较结果;
29.基于所述n个对比结果确定所述损失值。
30.又一方面,本技术还提供了一种音素发音时长标注方法,包括:
31.获取待标注文本;
32.将所述待标注文本转换为音节;
33.将所述音节输入以上所述的音素发音时长识别模型,以使所述音素发音时长识别模型输出标注序列;
34.基于所述标注序列确定所述音节中的元音音素的元音发音帧数和辅音音素的辅音发音帧数;
35.将所述元音发音帧数与单位帧长度的乘积记录为元音发音时长,将所述辅音发音帧数与所述单位帧长度的乘积记录为辅音发音时长;
36.将所述元音发音时长和所述辅音发音时长标注于所述音节。
37.优选地,还包括:
38.构建标注有所述元音发音时长和所述辅音发音时长的集合,以利用所述歌曲音节集训练歌声合成模型。
39.又一方面,本技术还提供了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述模型训练方法。
40.又一方面,本技术还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述模型训练方法。
41.本技术以歌曲音节集中的音节为训练样本,可获取目标音节、目标音节中的辅音音素的辅音发音帧数n0、目标音节中的元音音素的元音发音帧数n1;然后按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列;将目标音节重复n次得到音节组,将音节组输入神经网络模型,以使神经网络模型知悉目标音节需要发音n帧时间,因此输出包括包括n3个辅音标记和n4个元音标记的预测序列;计算预测序列与目标序列之间的损失值;基于损失值对神经网络模型的参数进行调整,得到更新后的模型;若更新后的模型收敛,则将更新后的模型作为音素发音时长识别模型。可见,该方案以歌曲音节
集中的音节为训练样本,可训练得到能够约束音素发音时长的音素发音时长识别模型,该模型针对任一个音节,能够确定该音节在歌曲中发音时,元音发音多长时间,辅音发音多长时间,因此利用该模型可以标注音节在歌曲中的发音音素的时长,从而基于该标注信息可用于合成歌声。
42.相应地,本技术提供的一种模型训练组件和一种音素发音时长标注方法及组件(组件包括:装置、设备及存储介质),也同样具有上述技术效果。
附图说明
43.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
44.图1为本技术提供的一种本技术适用的物理架构示意图;
45.图2为本技术提供的一种模型训练方法流程图;
46.图3为本技术提供的一种音节分解示意图;
47.图4为本技术提供的一种音素发音时长标注方法流程图;
48.图5为本技术提供的另一种音素发音时长标注方法流程图;
49.图6为本技术提供的一种音素发音时长识别模型示意图;
50.图7为本技术提供的一种模型训练装置示意图;
51.图8为本技术提供的一种音素发音时长标注装置示意图;
52.图9为本技术提供的一种服务器结构图;
53.图10为本技术提供的一种终端结构图。
具体实施方式
54.现有技术以文本为对象来预测音素发音时长,而文本没有发音长短的约束,这种无时长约束的方法只适用于语音合成场景,不适用于歌声合成场景。因为歌曲的节拍信息限定了每个字的发音时长,如果不约束音素发音时长,那么合成的歌曲发音将无法与歌曲旋律相契合。
55.鉴于目前所存在的上述问题,本技术提出了模型训练方案,该方案以歌曲音节集中的音节为训练样本,可训练得到能够约束音素发音时长的音素发音时长识别模型,该模型针对任一个音节,能够确定该音节在歌曲中发音时,元音发音多长时间,辅音发音多长时间,因此利用该模型可以标注音节在歌曲中的发音音素的时长,从而基于该标注信息可用于合成歌声。
56.本技术涉及的专业用语:
57.音素:根据语音的自然属性划分出来的最小语音单位。从声学性质来看,音素是从音质角度划分出来的最小语音单位。从生理性质来看,一个发音动作形成一个音素。如〔ma〕包含〔m〕〔a〕两个发音动作,是两个音素。相同发音动作发出的音就是同一音素,不同发音动作发出的音就是不同音素。如〔ma-mi〕中,两个〔m〕发音动作相同,是相同音素〔a〕〔i〕发音动作不同,是不同音素。对音素的分析,一般是根据发音动作来描写的。
58.音节:语音中最自然的结构单位。音节是音位组合构成的最小的语音结构单位。它的构成分头腹尾三部分,因而音节之间具有明显可感知的界限。在汉语中一般一个汉字的读音即为一个音节。普通话常用基本无调音节为400个,有调音节(不包括轻声)为1300多个。
59.为了便于理解,先对本技术所适用的物理框架进行介绍。
60.应理解,本技术提供的模型训练方法可以应用于具有模型训练功能的系统或程序中。当然,本技术提供的音素发音时长标注方法也可以应用于具有音素发音时长标注功能的系统或程序中。具体的,具有模型训练功能的系统或程序,以及具有音素发音时长标注功能的系统或程序可以运行于服务器、个人计算机等设备中。
61.如图1所示,图1为本技术适用的物理架构示意图。在图1中,具有模型训练功能的系统或程序可以运行于服务器,该服务器通过网络从其他终端设备中获取歌曲音节集,从歌曲音节集中获取目标音节和目标音节的标签;标签包括:目标音节中的辅音音素的辅音发音帧数n0、目标音节中的元音音素的元音发音帧数n1;按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列;将目标音节重复n次得到音节组;将音节组输入神经网络模型,以使神经网络模型输出包括n3个辅音标记和n4个元音标记的预测序列;计算预测序列与目标序列之间的损失值;基于损失值对神经网络模型的参数进行调整,得到更新后的模型;若更新后的模型收敛,则将更新后的模型作为音素发音时长识别模型。
62.在图1中,具有音素发音时长标注功能的系统或程序也可以运行于服务器,该服务器通过网络从其他终端设备中获取待标注文本;将待标注文本转换为音节;将音节输入以上所述的音素发音时长识别模型,以使音素发音时长识别模型输出标注序列;基于标注序列确定音节中的元音音素的元音发音帧数和辅音音素的辅音发音帧数;将元音发音帧数与单位帧长度的乘积记录为元音发音时长,将辅音发音帧数与单位帧长度的乘积记录为辅音发音时长;将元音发音时长和辅音发音时长标注于音节。
63.如图可知,该服务器可以与多个设备建立通信连接,服务器从这些设备中获取符合训练条件的音节或需要标注音素发音时长的文本。服务器通过收集这些设备上传的音节,对神经网络模型进行训练,以获得音素发音时长识别模型。
64.图1中示出了多种终端设备,在实际场景中可以有更多或更少种类的终端设备参与到模型训练或音素发音时长标注的过程中,具体数量和种类因实际场景而定,此处不做限定,另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,具体服务器数量因实际场景而定。
65.应当注意的是,本实施例提供的模型训练方法可以离线进行,即服务器本地存储有歌曲音节集,其可以直接利用本技术提供的方案训练得到想要的模型。当然,本实施例提供的音素发音时长标注方法可以离线进行,即服务器本地存储有待标注的文本,其可以直接利用本技术提供的方案对文本对应的音节进行评估。
66.可以理解的是,上述具有模型训练功能的系统、程序,或具有音素发音时长标注功能的系统、程序,也可以运行于个人移动终端,也可以作为云端服务程序的一种,具体运作模式因实际场景而定,此处不做限定。
67.具体的,在模型训练完成后,获得的模型可以针对大量文本进行音节标注,从而获
得具有标注信息的音节集,该音节集可用于训练歌声合成模型。
68.结合以上共性,请参见图2,图2为本技术实施例提供的一种模型训练方法流程图。如图2所示,该模型训练方法可以包括以下步骤:
69.s201、从歌曲音节集中获取目标音节、目标音节中的辅音音素的辅音发音帧数n0、目标音节中的元音音素的元音发音帧数n1。
70.在本实施例中,歌曲音节集由歌词文本依据相应歌曲音频转换得到。也即:歌曲音节集中的每个音节的发音总帧数、该音节中的辅音音素的辅音发音帧数、该音节中的元音音素的元音发音帧数都是基于该音节在相应歌曲中的发音帧数确定的,所以歌曲音节集中的每个音节的发音时长已知,该音节中的辅音音素的发音时长已知、该音节中的元音音素的发音时长也是已知的。
71.其中,中文文字一般都可以由一个辅音音素和一个元音音素共两个音素构成,因此目标音节的总帧数n=n0+n1。
72.例如:“我”的发音音节为〔wo〕,将其可拆分为〔_u〕和〔uo〕两个音素。假设“我”在某一歌曲中发音203毫秒,预设单位帧长度为10毫秒(即一帧音频对应的时间长度),那么203/10=20.3≈21帧(采用四舍五入法取值),此时可认为“我”在某一歌曲中的发音总帧数为21。若经过检测,确定〔_u〕占112毫秒,那么可认为〔_u〕发音11帧。若经过检测,确定〔uo〕占96毫秒,那么可认为〔uo〕发音10帧。
73.其中,可以通过语音标注工具分解任一个中文文字对应的音节,从而得到该音节中的不同音素在某一歌曲中的发音时长、该音节的发音总时长等信息,但这些工具往往分解得不够准确,必要时可人工调整分解结果。语音标注工具支持人工手动调整。
74.如图3所示,语音标注工具能够可视化歌曲音频,进而将各个音节分解,形成如图3所示的可视化图形。图3中的“丨”状黑线支持鼠标拖动,因此人工可以调整分解结果。据此,可分解一些歌曲,得到歌曲音节集。
75.需要说明的是,由于时间长度不易标注,因此本实施例利用发音帧数作为音节的标签。因为单位帧长度总是恒定的,因此只需确定音素的发音帧数,就相当于确定了音素的发音时长。
76.当然,针对其他语言(如英文等)的歌曲、歌词,也可以根据上述进行转换,以得到相应的歌曲音节集。
77.s202、按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列。
78.以上述“我”字为例,假设用“0”作为辅音标记,用“1”作为元音标记,那么目标序列为:[000000000001111111111],由11个“0”和10个“1”组成。此时,目标序列中的一个“0”或一个“1”对应1帧,因此可以认为目标序列对应21帧。
[0079]
s203、将目标音节重复n次得到音节组。
[0080]
需要说明的是,本实施例为了让模型知悉当前输入的音节需要发音多长时间(即发音帧数是多少),将音节重复其发音帧数次,从而得到包括多个同一音节的音节组。也即:一个音节在歌曲中发音几帧,这里就重复多少次。
[0081]
s204、将音节组输入神经网络模型,以使神经网络模型输出预测序列。
[0082]
其中,预测序列包括n3个辅音标记和n4个元音标记,也即:预测序列包括的辅音标
记和元音标记的总数也为n。当然,理想情况下,n3=n0,n4=n1,也即:预测序列也包括n0个辅音标记和n1个元音标记。
[0083]
以上述“我”字为例,理想情况下,预测序列和目标序列[000000000001111111111]完全相同,而模型输出的预测序列总会有所偏差,但预测序列中标记的总数一定是n。至于预测序列中有几个辅音标记、几个元音标记,这取决于神经网络模型对每帧发音的音素预测类型。
[0084]
其中,神经网络模型可以预测目标音节的每一帧是发元音还是辅音,并用相应标记进行记录,从而就能得到预测序列。
[0085]
s205、计算预测序列与目标序列之间的损失值。
[0086]
在一种具体实施方式中,计算预测序列与目标序列之间的损失值,包括:将预测序列与目标序列对位比较,得到n个比较结果;基于n个对比结果确定损失值。
[0087]
示例如下:“〔wo〕”对应的目标序列为:[000000000001111111111],假设模型输出的预测序列为[000010000001111111111],那么将这两个序列的第一个位置的两个“0”进行比较,发现二者一致,则记一个比较结果;之后将这两个序列的第二个位置、第三个位置
……
直至第21个位置上的元素分别对位比较,最终可得到21个比较结果,基于这些比较结果即可计算损失值。例如:将异常比较结果(即第五个位置的比较结果)的个数与比较结果总数的比值确定为损失值,则损失值为:1/21。当然,此方式仅为示例性计算,并不构成对本技术的限制。
[0088]
实质上,以上述所列的损失值计算思路为基础,可以采用任意损失函数计算损失值,如:交叉熵损失函数等。
[0089]
s206、基于损失值对神经网络模型的参数进行调整,得到更新后的模型。
[0090]
s207、判断更新后的模型是否收敛;若是,则执行s208;若否,则执行s209。
[0091]
其中,判断更新后的模型是否收敛,包括:判断损失值是否足够小;或判断损失值在连续几次迭代过程中不变或变化极小。
[0092]
s208、将更新后的模型作为音素发音时长识别模型。
[0093]
s209、用更新后的模型替换神经网络模型,并执行s201,以从歌曲音节集中重新获取另一音节及该音节的标签,对更新后的模型进行迭代训练,直至模型收敛。
[0094]
在本实施例中,神经网络模型可以为任何结构。
[0095]
可见,本实施例以歌曲音节集中的音节为训练样本,可获取目标音节、目标音节中的辅音音素的辅音发音帧数n0、目标音节中的元音音素的元音发音帧数n1;然后按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列;将目标音节重复n次得到音节组,将音节组输入神经网络模型,以使神经网络模型知悉目标音节需要发音n帧时间,因此输出包括n个标记的预测序列;计算预测序列与目标序列之间的损失值;基于损失值对神经网络模型的参数进行调整,得到更新后的模型;若更新后的模型收敛,则将更新后的模型作为音素发音时长识别模型。可见,该方案以歌曲音节集中的音节为训练样本,可训练得到能够约束音素发音时长的音素发音时长识别模型,该模型针对任一个音节,能够确定该音节在歌曲中发音时,元音发音多长时间,辅音发音多长时间,因此利用该模型可以标注音节在歌曲中的发音音素的时长,从而基于该标注信息可用于合成歌声。
[0096]
基于上述实施例,需要说明的是,将音节组输入神经网络模型,以使神经网络模型
输出预测序列,包括:神经网络模型基于音节组中的目标音节的重复次数确定目标音节的发音总帧数n,并预测目标音节中的每帧发音的音素类型;若任一帧发音的音素类型为辅音,则记录一个辅音标记,若任一帧发音的音素类型为元音,则记录一个元音标记,得到预测序列。
[0097]
其中,预测目标音节中的每帧发音的音素类型,包括:通过查询音素词典预测目标音节中的每帧发音的音素类型。音素词典中记录有中文的各种元音音素和辅音音素。
[0098]
其中,预测目标音节中的每帧发音的音素类型,即:预测目标音节的每一帧是发元音还是辅音。
[0099]
基于上述实施例,需要说明的是,中文文字还有单音素音节,如:吴、啊、饿等。这些单音素音节有的只发元音,有的只发辅音。
[0100]
在一种具体实施方式中,若目标音节为单音素元音音节,则按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列之后,还包括:在目标序列的首位填充一个辅音标记;相应地,在计算预测序列与目标序列之间的损失值之前,还包括:在预测序列的首位填充一个辅音标记。
[0101]
按照上述方式可以区分出单音素元音音节,有利于让模型输出更准确的预测序列。
[0102]
当然,为了使预测序列更准确,可以对预测序列进行噪点消除。例如:“〔wo〕”对应的目标序列为:[000000000001111111111],假设模型输出的预测序列为[000010000001111111111],显然,模型对第5帧发音的音素类型预测有误,此时认为预测序列中出现了噪点。若能够检测出该噪点,就可以将预测序列中第5位的“1”修改为“0”,以消除该噪点。当然,因为噪点具有随机性,不容易被检测到,因此可以不做噪点检测和消除,让模型多迭代训练几次,同样可以提升预测序列的准确性。
[0103]
其中,噪点检测方式可以为:若在预测序列中,连续排列的辅音标记中偶然出现少量个(如1个或2个或其他)元音标记,则可以认为这些少量的元音标记为噪点。反之,若在预测序列中,连续排列的元音标记中偶然出现少量个(如1个或2个或其他)辅音标记,则可以认为这些少量的辅音标记为噪点。
[0104]
请参见图4,图4为本技术实施例提供的一种音素发音时长标注方法流程图。如图4所示,该标注方法可以包括以下步骤:
[0105]
s401、获取待标注文本。
[0106]
s402、将待标注文本转换为音节。
[0107]
s403、将音节输入以上所述的音素发音时长识别模型,以使音素发音时长识别模型输出标注序列。
[0108]
s404、基于标注序列确定音节中的元音音素的元音发音帧数和辅音音素的辅音发音帧数。
[0109]
s405、将元音发音帧数与单位帧长度的乘积记录为元音发音时长,将辅音发音帧数与单位帧长度的乘积记录为辅音发音时长。
[0110]
s406、将元音发音时长和辅音发音时长标注于音节。
[0111]
在一种具体实施方式中,还包括:构建标注有元音发音时长和辅音发音时长的集合,以利用歌曲音节集训练歌声合成模型。
[0112]
本实施例中的音素发音时长识别模型可以确定一个音节中有几帧发元音,有几帧发辅音,进而基于元音发音帧数和辅音发音帧数就可以相应确定元音发音时长和辅音发音时长,据此对相应音节进行标注,即可得到具有元音发音时长和辅音发音时长的音节。这些音节组成的集合可以作为歌声合成模型的训练样本,用以训练得到歌声合成模型。
[0113]
下面通过具体的应用场景实例描述,来介绍本技术提供的方案。即:利用音素发音时长识别模型标注音节的具体方案。该方案可以将任意文本转换为带有音素发音时长的音节。
[0114]
在服务器中设置音素发音时长识别模型。请参见图5,具体流程包括:
[0115]
s501、终端请求服务器;
[0116]
s502、服务器向终端反馈响应消息;
[0117]
s503、终端收到响应消息后,向服务器传输文本;
[0118]
s504、服务器将文本中的文字转换为各个音节;
[0119]
s505、服务器将各个音节分别输入音素发音时长识别模型,得到各个标注序列;
[0120]
s506、服务器对各个标注序列进行处理,以确定各个音节中的元音音素的元音发音帧数和辅音音素的辅音发音帧数;
[0121]
s507、服务器计算各个音节中的元音发音时长和辅音发音时长。
[0122]
s508、服务器标注各个音节,并组成集合;
[0123]
s509、服务器向终端返回该集合和相应通知消息。
[0124]
其中,终端可以为智能手机、平板电脑、笔记本电脑或台式电脑等设备。
[0125]
音素发音时长识别模型的结构可参见图6。在图6中,音素发音时长识别模型可以看作是音素分类器,能够判断出一个音节中的每一帧是辅音还是元音,一般以0.5作为阈值来判断是属于辅音还是元音。
[0126]
一个音节经过重复后,输入图6所示的模型,该音节会经过:phonemeembedding(390*64)

[conv(3,3,64)

relu

pooling(2,2)]*5

gru

[conv(3,3,64)

relu

upsample(2,2)]*5

sigmoid,最终输出一个由0、1构成的序列。
[0127]
请参见图6,从左至右来看,第1部分为phoneme embedding,后续第2部分至第6部分均表示conv、relu、pooling,gur(gated recurrent unit)为门控循环单元,第8部分至第12部分均表示conv、relu、upsample,第13部分为sigmoid。其中,gur之前的部分为编码器,之后的部分为解码器。
[0128]
其中,phoneme embedding可以将音节嵌入到一个高维空间,中文共有390个音节,嵌入维度为64维。conv(3,3,64)表示卷积核的宽度为3,高度为3,通道数为128;pooling(2,2)表示池化层的大小为2,步进为2;upsample使用的是双线性插值的方法,除了最后一层使用了sigmoid激活函数,其他卷积层后都使用了relu激活函数。如图6所示,conv和pooling组合的部分重复了5次,conv和upsample组合的部分也重复了5次,在编码器和解码器之间使用conv(3,3,64)的残差连接方式,gru输出单位大小为128。
[0129]
需要说明的是,卷积核大小和卷积层数等参数在这里为实验优选值。当然,若有需要,这些参数也可以设置为其他值。
[0130]
图6中使用的多尺度跳连卷积能够获取更多、更大的感受野,即:能够提取到更多特征。gru能够整合时序信息(即:多尺度特征),此二者的使用能够让模型更好地考虑上下
文信息,提高音素时长估计的准确性,进而提高歌声合成和翻唱合成的表现力和自然度。
[0131]
其中,上述模型的训练集可按照如下内容构建。
[0132]
以中文歌词为例,先从歌词文件中提取出每个汉字以及汉字发音时长信息。例如“我”为208毫秒,“听”为416毫秒。然后将文本转换为音节(汉字常用的音节表示形式为拼音),因此“我”为〔wo〕,“听”为〔ting〕。根据时长信息对按照10毫秒为一帧四舍五入计数,将音节进行帧级别的拓展,因此208毫秒的〔wo〕四舍五入为21帧,416毫秒的〔ting〕四舍五入为42帧。
[0133]
使用语音标注工具,例如图3所示的praat,将音节进一步分解为多个音素的形式,并标注出每个音素的时长。例如:〔wo〕可拆分为〔_u〕和〔uo〕,〔ting〕可拆分为〔t〕和〔ing〕。〔_u〕为112毫秒对应11帧,〔uo〕为96毫秒对应10帧。经过以上两个步骤,最终可以得到带时长信息的音节和音素。
[0134]
按照上述步骤拆解每个汉字,即可得到歌曲音节集,即:训练集。需要说明的是,汉字一般可以被拆分为两个音素,第一个音素一般是辅音,第二个音素一般是元音。
[0135]
假设模型的输入是“我听到”这三个音节,那么这三个音节分别按照自己的发音总帧数重复后,可得到如下序列:[wo,wo,wo,

,wo,ting,ting,

ting,dao,dao,

,dao],其中。这三个音节的重复次数分别为21,42,42,因为“我”的总帧数为21,“听”的总帧数为42,“到”的总帧数为42。据此,模型输出的预测序列可以为[0,0,

,0,1,1,

,1,0,0,

,0,1,1,

,1,0,0,

,0,1,1,

,1,],该序列中的前21位(即:11个“0”和10个“1”)对应“我”字,中间42位对应“听”字,后42为对应“到”字,该序列中共有:11个“0”+10个“1”+9个“0”+33个“1”+9个“0”+33个“1”。
[0136]
可见,在模型训练或使用过程中,可以一次性输入多个音节供模型处理。对音节重复的目的是:以重复次数告知模型该音节的总帧数。训练过程可采用深度神经网络的adam算法,损失函数可以为二分类算法常用的交叉熵损失函数。
[0137]
本实施例能够从歌词文本中解析出音节的总帧数、音节里音素的帧数等信息,据此可以标注出每个音节中不同音素所占的发音帧数,辅音标注成0,元音标注成1,据此可得到一个音节的标签序列。上述所使用的卷积神经网络(cnn,convolution neural network),将帧级别的音节作为模型的输入,将帧级别的音素类型作为输出,进行建模,可以让模型生成由0、1构成的序列,能够在歌声合成和翻唱合成等场景中发挥重要作用。
[0138]
可见,本实施例提供的音素发音时长识别模型能够准确地分析出每个音节里的辅音发音帧数和元音发音帧数,据此就可以预测相应的发音时长,这对于歌声合成的自然度和发音准确性有显著的提升,在音素时长估计的精度和自动化程度上有更好的优势。
[0139]
请参见图7,图7为本技术实施例提供的一种模型训练装置示意图,包括:
[0140]
音节获取模块701,用于从歌曲音节集中获取目标音节和目标音节的标签;标签包括:目标音节中的辅音音素的辅音发音帧数n0、目标音节中的元音音素的元音发音帧数n1;
[0141]
构建模块702,用于按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列;
[0142]
重复模块703,用于将目标音节重复n次得到音节组;n=n0+n1;
[0143]
预测模块704,用于将音节组输入神经网络模型,以使神经网络模型输出预测序列;预测序列包括n3个辅音标记和n4个元音标记;n3+n4=n;
[0144]
计算模块705,用于计算预测序列与目标序列之间的损失值;
[0145]
更新模块706,用于基于损失值对神经网络模型的参数进行调整,得到更新后的模型;
[0146]
输出模块707,用于若更新后的模型收敛,则将更新后的模型作为音素发音时长识别模型。
[0147]
在一种具体实施方式中,还包括:
[0148]
迭代模块,用于若更新后的模型未收敛,则从歌曲音节集中重新获取另一音节及该音节的标签,以对更新后的模型进行迭代训练,直至模型收敛时,将更新后的模型作为音素发音时长识别模型。
[0149]
在一种具体实施方式中,预测模块包括:
[0150]
神经网络模型基于音节组中的目标音节的重复次数确定目标音节的发音总帧数n,并预测目标音节中的每帧发音的音素类型;
[0151]
若任一帧发音的音素类型为辅音,则记录一个辅音标记,若任一帧发音的音素类型为元音,则记录一个元音标记,得到预测序列。
[0152]
在一种具体实施方式中,神经网络模型通过查询音素词典预测目标音节中的每帧发音的音素类型。
[0153]
在一种具体实施方式中,歌曲音节集由中文歌词文本依据相应歌曲音频转换得到。
[0154]
在一种具体实施方式中,还包括:
[0155]
填充模块,用于若目标音节为单音素元音音节,则按照辅音发音帧数n0和元音发音帧数n1,构建包括n0个辅音标记和n1个元音标记的目标序列之后,在目标序列的首位填充一个辅音标记;相应地,在计算预测序列与目标序列之间的损失值之前,还包括:在预测序列的首位填充一个辅音标记。
[0156]
在一种具体实施方式中,还包括:
[0157]
优化模块,用于检测并消除所述预测序列中的噪点。
[0158]
在一种具体实施方式中,计算模块具体用于:
[0159]
将预测序列与目标序列对位比较,得到n个比较结果;基于n个对比结果确定损失值。
[0160]
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0161]
可见,本实施例提供了一种模型训练装置,该装置以歌曲音节集中的音节为训练样本,可训练得到能够约束音素发音时长的音素发音时长识别模型,该模型针对任一个音节,能够确定该音节在歌曲中发音时,元音发音多长时间,辅音发音多长时间,因此利用该模型可以标注音节在歌曲中的发音音素的时长,从而基于该标注信息可用于合成歌声。
[0162]
请参见图8,图8为本技术实施例提供的一种音素发音时长标注装置示意图,包括:
[0163]
文本获取模块801,用于获取待标注文本;
[0164]
转换模块802,用于将待标注文本转换为音节;
[0165]
处理模块803,用于将音节输入以上所述的音素发音时长识别模型,以使音素发音时长识别模型输出标注序列;
[0166]
确定模块804,用于基于标注序列确定音节中的元音音素的元音发音帧数和辅音音素的辅音发音帧数;
[0167]
计算模块805,用于将元音发音帧数与单位帧长度的乘积记录为元音发音时长,将辅音发音帧数与单位帧长度的乘积记录为辅音发音时长;
[0168]
标注模块806,用于将元音发音时长和辅音发音时长标注于音节。
[0169]
在一种具体实施方式中,还包括:
[0170]
歌声合成模型训练模块,用于构建标注有元音发音时长和辅音发音时长的集合,以利用歌曲音节集训练歌声合成模型。
[0171]
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0172]
可见,本实施例提供了一种音素发音时长标注装置,该装置中的音素发音时长识别模型针对任一个音节,能够确定该音节在歌曲中发音时,元音发音多长时间,辅音发音多长时间,因此利用该模型可以标注音节在歌曲中的发音音素的时长,从而基于该标注信息可用于合成歌声。
[0173]
进一步的,本技术实施例还提供了一种电子设备。其中,上述电子设备既可以是如图9所示的服务器50,也可以是如图10所示的终端60。图9和图10均是根据一示例性实施例示出的电子设备结构图,图中的内容不能被认为是对本技术的使用范围的任何限制。
[0174]
图9为本技术实施例提供的一种服务器的结构示意图。该服务器50,具体可以包括:至少一个处理器51、至少一个存储器52、电源53、通信接口54、输入输出接口55和通信总线56。其中,所述存储器52用于存储计算机程序,所述计算机程序由所述处理器51加载并执行,以实现前述任一实施例公开的模型训练方法及音素发音时长标注方法中的相关步骤。
[0175]
本实施例中,电源53用于为服务器50上的各硬件设备提供工作电压;通信接口54能够为服务器50创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口55,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0176]
另外,存储器52作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统521、计算机程序522及数据523等,存储方式可以是短暂存储或者永久存储。
[0177]
其中,操作系统521用于管理与控制服务器50上的各硬件设备以及计算机程序522,以实现处理器51对存储器52中数据523的运算与处理,其可以是windows server、netware、unix、linux等。计算机程序522除了包括能够用于完成前述任一实施例公开的模型训练方法及音素发音时长标注方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据523除了可以包括应用程序的更新信息、歌曲、文本、音节等数据外,还可以包括应用程序的开发商信息等数据。
[0178]
图10为本技术实施例提供的一种终端的结构示意图,该终端60具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
[0179]
通常,本实施例中的终端60包括有:处理器61和存储器62。
[0180]
其中,处理器61可以包括一个或多个处理核心,比如4核心处理器、8核心处理器
等。处理器61可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器61也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器61可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器61还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0181]
存储器62可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器62还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器62至少用于存储以下计算机程序621,其中,该计算机程序被处理器61加载并执行之后,能够实现前述任一实施例公开的由终端侧执行的模型训练方法及音素发音时长标注方法中的相关步骤。另外,存储器62所存储的资源还可以包括操作系统622和数据623等,存储方式可以是短暂存储或者永久存储。其中,操作系统622可以包括windows、unix、linux等。数据623可以包括但不限于应用程序的更新信息。
[0182]
在一些实施例中,终端60还可包括有显示屏63、输入输出接口64、通信接口65、传感器66、电源67以及通信总线68。
[0183]
本领域技术人员可以理解,图10中示出的结构并不构成对终端60的限定,可以包括比图示更多或更少的组件。
[0184]
进一步的,本技术实施例还公开了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的模型训练方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0185]
需要指出的是,上述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
[0186]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0187]
本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。