概述
本文是一片低资源合成的文章,主要关注两方面,一方面关注如何针对每个新的说话人使用尽量少的的数据实现相同的合成效果;一方面关注如何针对每个说话人占用更少的内存资源(模型参数)。
针对上述问题,文章总结了目前的custom voice系统面临的挑战有两个:
- 集外声音与训练集声音声学条件不一样,包括个性化特征(韵律,情感,口音等),录音环境等等。
- 保持音质的同时降低模型参数数量
针对上述挑战,文章提出了两方面的解决方法:
- 分别使用两个encoder建模句子级别和音素级别的声学参数,用于更好的建模不同的(多变的)(集外说话人的)声学条件
- 在decoder部分引入condition normalization layer,新的数据来了以后仅finetune一个speaker embedding以及条件层正则化的两个系数矩阵一共三个参数,以便在参数量和声音质量上求得平衡。
通过上述方法,该模型仅使用每个说话人20句话(1分钟),每个人占用5K参数就能实现该音色的合成。
Q1 : condition normalization layer 是什么?
Q2 : 5k 参数量值得是什么?
系统概述
系统如图所示,系统基于fastspeech2实现,从训练到推理一共需要三步,分别是training(绿色), finetune(红色), inference(全部)。
红色部分的具体模块如下:
acoustic condition modeling
该模块建模了多粒度的说话人个性化信息,目的是为了弥补文本中超音段信息不足的问题,加入从音频中提取的信息,有利于在训练阶段提升模型的泛化能力。
音素级别的声学信息,坐着认为处理粒度更小,还有可能捕捉韵律、音调、甚至噪声等信息。
pretrain阶段先训练(a)(b)©60k steps, 然后用c的输出作为groundtruth, 训练(d), 其中d的输入是phoneme encoder的输出。
finetune阶段,只训练speaker embedding,以及正则化层的参数。
inference阶段则将上述参数的全集作为推理的依据。
Conditional Layer Normalization
其中正则化层的示意图如下:
algorithm pipline
具体算法如下:
结果分析: