一种保持音高的歌声合成方法及装置制造方法及图纸

技术编号:30370747 阅读:19 留言:0更新日期:2021-10-16 17:49
本发明专利技术公开了一种保持音高的歌声合成方法和装置,解决基于端到端歌声合成由于训练数据不足导致的音高不准问题。该发明专利技术由模型训练和模型推理两部分组成,离线完成模型训练后将模型推理部署在装置上。根据歌声的特点本发明专利技术提出一种有效分离歌声的音高和音素发音的声学模型,使得训练语料中不同音高对应的相同发音单元能够互相弥补,从而提升语料库中出现次数较少的音高的合成准确率。数较少的音高的合成准确率。数较少的音高的合成准确率。

【技术实现步骤摘要】
一种保持音高的歌声合成方法及装置


[0001]本专利技术涉及歌声合成
,尤其涉及一种保持音高的歌声合成方法及装置。

技术介绍

[0002]歌声合成是一门将包含歌词和音符的乐谱转换为歌声的合成技术,得益于语音合成技术的快速发展,歌声合成在逼真度上有了巨大提升。该技术已成功地应用在虚拟偶像、语音助手以及智能音乐创作等领域,未来对合成质量要求也越来越高。目前高质量的歌声合成系统均采用端到端的深度学习技术,但依赖大量的标注语料。歌声语料主要包含歌声音频和相应的乐谱,其数据获取成本高昂,对歌声合成效果造成严重阻碍。尤其是语料中音高数据分布差异较大,合成语料中出现次数较少的音高时容易出现走音现象,为此本专利技术提出一种新颖的歌城合成声学模型。

技术实现思路

[0003]本专利技术的目的在于提供一种保持音高的歌声合成方法及装置,以解决歌声合成音高不准问题。
[0004]本专利技术解决上述问题所采取的技术方案是:一种保持音高的歌声合成方法,包括了训练阶段和推理阶段,在训练阶段包括以下步骤:
[0005]S11.解析语料中的乐谱,并提取训练模型所需的输入和输出特征,包括音素、音符音高、音符时长、音素时长、当前音高与相邻音高之间的频率比值、音高分类标签和频谱;
[0006]S12.音符音高经过音高嵌入层并输入到音高编码器,音高编码器后接一个音高度量损失函数,将当前音高与相邻音高之间的频率比值输入给音高度量损失函数;
[0007]S13.音素经过音素嵌入层并输入到音素编码器,音素编码器后接一个音高自适应损失函数,将音高分类标签输入给音高自适应损失函数;
[0008]S14.音符时长经过时长嵌入层,将时长嵌入层和音素编码器的输出之和输入给音素时长预测器,将音素时长输入给音素时长预测器;
[0009]S15.音素时长规整器将音高编码器和音素编码器输出之和根据时长预测器的输出扩展为帧级别的隐特征;
[0010]S16.帧级别的隐特征输入解码器,并将语料中音频对应频谱输入到该解码器的损失函数中,S11

S16中模型的所有模块和损失函数一起联合训练;
[0011]推理阶段包括以下步骤:
[0012]S21.解析待合成的乐谱,提取音素、音符音高和音符时长信息;
[0013]S22.将步骤S21所提取的音素、音符音高和音符时长分别输入给声学模型的音素嵌入层、音高嵌入层和时长嵌入层,声学模型最终输出频谱;
[0014]S23.将步骤S22所得的频谱输入给神经网络声码器得到歌声音频。
[0015]更进一步的,为了准备从乐谱中提取音素、音符音高、音符时长、音素、音素时长、当前音高与相邻音高之间的频率比值、音高分类标签和频谱信息,步骤S11包括:
[0016]根据语料中乐谱数据格式,为每张乐谱提取歌词和音符标记;
[0017]根据歌词的语义,将每张乐谱切分为多个乐句,每个乐句仅包含一句语义完整的歌词。每张乐谱对应单个音频,将音频根据乐句结束位置切分为和多个乐句对应的多个音频段。
[0018]将每个语句包含的歌词展开为声韵母表示的音素串,音符的音高和时长根据对应的歌词展开成和音素串对应的音符音高串和音符时长串;
[0019]将音素串和对应的音频段输入语音识别系统,得到每个音素在音频段中起始和结束位置,或者通过人工标注方式获得,根据起始和结束位置的差值求得音素时长,单位为帧。
[0020]为音符音高串中每个音高计算其与前后相邻两个音高之间的频率之比;
[0021]使用输入音高串作为音高分类标签,即,标签和输入音高一样;
[0022]利用librosa工具将音频段转换为频谱。
[0023]更进一步的,为了创建音高编码器,步骤S12包括:
[0024]根据语料中不同音高出现的总次数,将音符音高用one

hot编码表示,音高one

hot编码先输入到音高嵌入层进一步学习音高表征,随后将音高嵌入层的输出送入音高编码器;
[0025]音高编码器后采用音高度量损失函数,该函数设计为:
[0026][0027][0028]其中N表示每个音素串的总音素个数,p
i
表示音高串中的的当前音高,p
j
表示相邻音高,E
pit
表示音高编码器,r
ij
表示前音高与相邻音高之间的频率比值,该值由步骤S11预先计算得到。
[0029]更进一步的,为了创建音素编码器,步骤S13包括:
[0030]根据语料中不同音素出现的总次数,将音素用one

hot编码表示,音素one

hot编码先输入到音素嵌入层进一步学习音素表征,随后将音素嵌入层的输出送入音素编码器。
[0031]将音素编码器的输出和步骤S11中的音高分类标签一起输入给音素编码器的音高自适应损失函数;
[0032]更进一步的,为了创建音素时长预测器,步骤S14包括:
[0033]根据语料中不同音符时长出现的总次数,将音符时长用one

hot编码表示,音符时长one

hot编码先输入到音符时长嵌入层进一步学习音符时长表征;
[0034]将音符时长嵌入层和音素编码器的输出之和输入时长预测器;
[0035]时长预测器的损失函数包括但不限于均方误差、平均绝对差、交叉熵,将步骤S1中的音素时长作为时长预测器损失函数的标签。
[0036]更进一步的,为了创建解码以及训练整个声学模型,步骤S15包括:
[0037]将音高编码器和音素编码器输出相加,总长度与输入音素串的长度一致;
[0038]根据音素时长(单位为帧),音素时长预测器将音高编码器和音素编码器输出之和扩展为帧级别的隐特征,扩展后的隐特征的总长度为音素串所有音素时长之和。
[0039]更进一步的,为了给解码器准备帧级别的隐特征,步骤S16包括:
[0040]将帧级别的隐特征输入解码器,解码器输出长度和输入一致的歌声频谱;
[0041]将解码器的输出和其对应的真实频谱输入给频谱损失函数,该损失函数包括不限于均方误差和平均绝对误差;
[0042]联合训练、优化整个声学模型和损失函数。
[0043]更进一步的,提取待合成乐谱的音素、音符音高、音符时长信息,步骤S21包括:
[0044]根据歌词语义将乐谱切分为多个乐句,每个乐句仅包含一句完整语义的歌词;
[0045]按照乐句中歌词出现顺序将歌词转换为声韵母级别的音素串;
[0046]解析乐句中的音符音高,将歌词对应的音符音高展开成和音素串数量一致的音符音高串;
[0047]解析乐句中的音符时长,将歌词对应的音符时长展开成和音素串数量一致的音符时长串。
[0048]更进一步的,为了使得声学模型输出歌声频谱,步骤S22包括:
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种保持音高的歌声合成方法,其特征在于,包括了训练阶段和推理阶段,训练阶段包括以下步骤:S11.解析语料中的乐谱,并提取训练模型所需的输入和输出特征,包括音素、音符音高、音符时长、音素时长、当前音高与相邻音高之间的频率比值、音高分类标签和频谱;S12.音符音高经过音高嵌入层并输入到音高编码器,音高编码器后接一个音高度量损失函数,将当前音高与相邻音高之间的频率比值输入给音高度量损失函数;S13.音素经过音素嵌入层并输入到音素编码器,音素编码器后接一个音高自适应损失函数,将音高分类标签输入给音高自适应损失函数;S14.音符时长经过时长嵌入层,将时长嵌入层和音素编码器的输出之和输入给音素时长预测器,将音素时长输入给音素时长预测器;S15.音素时长规整器将音高编码器和音素编码器输出之和根据时长预测器的输出扩展为帧级别的隐特征;S16.帧级别的隐特征输入解码器,并将语料中音频对应频谱输入到该解码器的损失函数中,S11

S16中模型的所有模块和损失函数一起联合训练;推理阶段包括以下步骤:S21.解析待合成的乐谱,提取音素、音符音高和音符时长信息;S22.将步骤S21所提取的音素、音符音高和音符时长分别输入给声学模型的音素嵌入层、音高嵌入层和时长嵌入层,声学模型最终输出频谱;S23.将步骤S22所得的频谱输入给神经网络声码器得到歌声音频。2.根据权利要求1所述的一种保持音高的歌声合成方法,其特征在于,所述步骤S11包括:根据语料中乐谱数据格式,为每张乐谱提取歌词和音符标记;根据歌词的语义,将每张乐谱切分为多个乐句,每个乐句仅包含一句语义完整的歌词,每张乐谱对应单个音频,将音频根据乐句结束位置切分为和多个乐句对应的多个音频段;将每个语句包含的歌词展开为声韵母表示的音素串,音符的音高和时长根据对应的歌词展开成和音素串对应的音符音高串和音符时长串;将音素串和对应的音频段输入语音识别系统,得到每个音素在音频段中起始和结束位置,或者通过人工标注方式获得,根据起始和结束位置的差值求得音素时长,单位为帧;为音符音高串中每个音高计算其与前后相邻两个音高之间的频率之比;使用输入音高串作为音高分类标签,即,标签和输入音高一样;利用librosa工具将音频段转换为频谱。3.根据权利要求1所述的一种保持音高的歌声合成方法,其特征在于,所述步骤S12包括:根据语料中不同音高出现的总次数,将音符音高用one

hot编码表示,音高one

hot编码先输入到音高嵌入层进一步学习音高表征,随后将音高嵌入层的输出送入音高编码器;音高编码器后采用音高度量损失函数,该函数设计为:
其中N表示每个音素串的总音素个数,p
i
表示音高串中的的当前音高,p
j
表示相邻音高,E
pit
表示音高编码器,r
ij
表示前音高与相邻音高之间的频率比值,该值由步骤S11预先计算得到。4.根据权利要求1所述的一种保持音高的歌声合成方法,其特征在于,所述步骤S13包括:根据语料中不同音素出现的总次数,将音素用one

hot编码表示,音素one

hot编码先输入到音素嵌入层进一步学习音素表征,随后将音素嵌入层的输出送入音素编码器;将音素编码器的输出和步骤S11中的音高分类标签一起输入给音素编码器的音高自适应损失函数。5.根据权利要求1所述的一种保持...

【专利技术属性】
技术研发人员:刘书君王昆朱海周琳岷
申请(专利权)人:四川启睿克科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1