本次分享国立台湾大学李宏毅(Hung-yi Lee)老师组刚刚被语音领域顶刊 IEEE/ACM Transactions on Audio, Speech, and Language Processing (IEEE/ACM-TASLP)录用的语音合成论文《Meta-TTS: Meta-Learning for Few-Shot Speaker Adaptive Text-to-Speech》。该论文使用元学习(Meta-Learning)技术提升语音合成在少样本场景下的说话人自适应能力。
论文地址:
https://ieeexplore.ieee.org/document/9756900
代码仓库:
https://github.com/SungFeng-Huang/Meta-TTS/
Demo地址:
0 Abstract
1 Introduction

2 Problem Definition
2.1 Tasks
2.2Methods
2.3 Evaluation
3 Multi-Speaker TTS Architecture

4 Speaker Adaptation via Fine-tuning
5 Meta-TTS

5.1 An introduction to MAML
假定我们将要在一个K-shot回归下游任务上评价模型效果,MAML会基于训练数据生成一系列K-shot回归训练任务,其中每个任务被称作一个适用于元学习的“meta-task”。每个任务包含一个含有K个样本的supprt set,以及一个含有Q个样本的query set。每个任务的学习目标都是基于support set学习任务相关的模型参数(内循环,inner loop)。MAML的目标就是学习meta-initialization参数,每个meta-task都可以基于该参数得到表现不错的任务自适应参数(外循环,outer loop)。这一优化过程称为“meta-update”。
5.2 Meta-training FastSpeech 2 with MAML

5.3 Fine-tuning
6 Evaluation Metrics
6.1 Human evaluation
Speaker similarity (SMOS)
Naturalness(MOS)
使用MOS测试合成语音的音频质量。
6.2 Neural evaluation metrics
Speaker similarity
先分别计算合成语音和对应真实语音的D-vector,之后计算各自D-vector的余弦相似度(cosine similarity)。
Speaker verification
先计算合成语音的D-vector,之后从目标说话人的真是样本中随机选择真实语音计算D-vector。通过判断D-vector的余弦相似度是否超过一定阈值来判断是否属于同一说话人。
Synthesized speech detection
与Speaker verification计算类似,我们从相同说话人的样本中选择语音,分别计算选择语音和合成语音的D-vector后计算余弦相似度。之后通过判断余弦相似度是否超过阈值来判断语音时合成语音还是真实语音。
Naturalness MOS prediction
使用MOSNet、MBNet以及另外3种基于自监督表示的模型对合成语音的MOS值进行预测。
7 Experimental Setup of Speaker Adaptation
Datasets
Training
Inference
我们为每个说话人采样了16个任务。每个任务包含含有5个样本的support set和1个样本的query set。对于每个task,我们使用support set微调模型,使用query set进行语音合成测试效果。
我们从LibriTTS的test-clean数据集中选择30个说话人、从VCTK中选择80个说话人进行听力测试。
我们观察不同微调步数下的模型表现来探究模型自适应需要的最佳步数。
我们使用另外的6个说话人的语音数据进行MelGAN声码器的训练作为本文实验的声码器。
8 Speaker Adaptation Results
8.1 Speaker similarity
我们使用微调10步的自适应模型来验证Meta-TTS的有效性。SMOS结果如表1所示。如图所示,Meta-TTS的所有结果都优于baseline。

另外,我们可以使用D-vector的余弦相似度来验证说话人自适应效果。我们分别计算合成语音和真实语音的D-vector,之后计算余弦相似度。结果如图4所示。

坐标轴中的数字表示说话人身份,上边一行的结果表示baseline模型在不同自适应步数下的表现,下边一行是Meta-TTS的表现。最右边一列是重建语音与真实语音的相似度结果,可以看到余弦相似度在呈对角线时表示说话人信息趋于一致。因此,从图4结果可以看出,baseline模型在50自适应步数后出现对角线趋势,但是Meta-TTS在5-10步时已经出现对角线趋势。这说明本文的Meta-TTS具有更快的自适应效果,在5步自适应后即可表现很好的自适应效果。
我们又对所有合成语音和真实语音的D-vector都计算了余弦相似度进行统计并计算它们的均值和方差,统计结果如图5所示。

从结果可以看到,Meta-TTS相比baseline模型可以更快的自适应到目标说话人。
8.2 Speaker verification
说话人验证的目的是将目标说话人的合成语音与其他说话人的语音进行有效的区分。图6和图7展示了说话人验证在Equal error rate(EER,越小表示效果越好)和detection error trade-off(DET,越趋向于左下方向表示效果越好)上的结果。


从结果同样可以发现,Meta-TTS达到了最好的效果。
8.3 Visualizing d-vector utterance embeddings
为了直观感受说话人自适应的效果,我们对合成语音的D-vector在图8进行了可视化。

所有的模型都进行了20步的微调。如图所示,baseline模型的向量在向量空间中广泛分布,无集中趋势。而Meta-TTS的向量都比较集中,与目标说话人的向量非常接近。
8.4 Synthesized speech detection
本小节我们评估从真实语音中分辨合成语音的难度。图9和10展示了合成语音检测的ROC曲线。(如果合成语音和真实语音几乎无法区分,那么ROC曲线接近对角线形状,并且ROC AUC的数值会趋于50%。)


从图中曲线我们可以得出与之前相同的结论:Meta-TTS的表现要优于baseline模型。当ROC AUC远低于50%时,意味着我们可以轻易的将合成语音和真实语音分辨出来。因此,图中还可以看出,Meta-TTS可以合成接近目标说话人的语音,但是还没有达到与真实语音难以区分的程度。从伦理角度考虑,这样的结果也是可以接受的。
8.5 Naturalness of synthesized samples
本小节我们进行MOS测试来评价合成语音的音质。我们使用微调10步的模型进行测试。MOS结果如表II和图11。


从表II可以看到,Meta-TTS与baseline的合成语音在音质方面不相上下,但是之前的结果表明Meta-TTS在说话人相似度上实现了更好的效果。因此,Meta-TTS模型在说话人相似度和语音音质两方面实现了一个很好的折中效果。
9 Comparing with Speaker-Encoding Baseline
之前提到,说话人自适应和说话人编码时语音克隆的两种主要方法。之前的实验将说话人自适应模型作为baseline进行比较。本节将添加说话人编码baseline进行效果比较。
我们使用GE2E模型作为说话人编码模型中的说话人编码器。对三中说话人编码器训练方法进行比较:1、与TTS模型联合训练(“scratch encoder”);2、预训练之后固定参数(“D-vector”);3、预训练之后随TTS模型一起更新(“pre-trained encoder”)。
Models
本节对7中模型配置进行比较:
真实/重建语音
Meta-TTS和说话人自适应baseline
刚才提到的3种说话人编码baseline
Training
训练方式与说话人自适应baseline相似,但是说话人编码baseline中使用真实语音作为参考音频来获取说话人向量。
Inference
在推理阶段,我们使用support set的目标语音作为query set的参考音频。在5-shot任务场景下,我们需要将5个语音样本分别提取说话人向量,之后进行平均计算得到最终的说话人向量。
9.1 Experimental results
图12、13、14展示了说话人相似度、说话人验证和合成语音检测的结果。



可以看出,说话人编码的第二种方案(即“D-vector”)时最佳方案。不管说话人编码器是否预训练,将说话人编码器与TTS模型一起训练会导致效果下降。这样的结果说明,说话人编码器会很容易的过拟合到TTS训练数据,导致模型泛化性表现不好。
另外,说话人编码baseline中的说话人编码器增加了TTS模型的参数量,并且需要使用另外的大规模数据进行预训练,将其与Meta-TTS直接比较不具有很好的公平性。但是尽管如此,Meta-TTS在VCTK上的合成语音表现与说话人编码baseline不相上下,在LibriTTS上的表现要显著优于说话人编码baseline。
10 Related Works
(注:相关文献请查看原文)
文献 [8] 基于DeepVoice3作为基础模型框架实现了两种语音克隆方法:1、使用通用说话人编码器实现说话人编码方法;2、通过微调TTS模型的speaker embedding实现说话人自适应。实验结果表明,如果只对speaker embedding微调,说话人自适应方法与说话人编码方法的效果不相上下。如果对TTS模型参数全部微调,那么说话人自适应方法的效果会显著提升。
SV2TTS模型采用了说话人编码方法,其中说话人编码器是由一个预训练的说话人验证模型迁移得到。模型架构采用Tacotron2。该论文得出结论与文献 [8] 类似:如果目标用户的参考语音少至1-3秒(约1-shot),那么只微调speaker embedding或者使用说话人编码器都可以达到不错的效果。如果使用更多参考语音(约3-shots)对全部模型参数进行微调,那么合成效果也将会进一步提升。
SEA-TTS使用WAVENET作为基本框架,在论文中比较了两种语音克隆方法。SEA-TTS使用两种方法来解决说话人自适应中的过拟合问题:1、将few-shot support data划分为训练集和验证集,并使用early stopping技术;2、在TTS模型训练前,提前对speaker embdeding微调5k-10k步。
AdaSpeech使用FastSpeech2作为基本框架,并且做出两处修改来实现说话人自适应:1、acoustic condition modeling;2、conditional LayerNorm。在说话人自适应阶段,说话人向量与conditional LayerNorm参数一起微调2k步。
本文中,说话人自适应和说话人编码baseline的工作方式与上述工作一致。主要的不同点在于TTS模型结构的不同。本文说话人编码baseline的说话人编码器与SV2TTS中的编码器相同。但是,与上述工作不同的是,本文工作主要关注如何在100步数之内获取高质量的说话人自适应效果。实验证明,本文提出的Meta-TTS可以更加有效的进行说话人自适应,甚至在模型微调步数为10-20步数时,仍然具有优秀表现。另外,尽管说话人编码baseline的说话人编码器在额外的数据进行了预训练,但是与其相比,Meta-TTS在100步微调之后的结果仍然表现出不相上下甚至时更好的合成效果。
11Conclusion
在本文中,我们提出利用元学习在TTS的过程中更快地适应目标说话人。我们从多个角度分析了Meta-TTS模型的适应结果,得出了令人信服的结论: Meta-TTS模型在说话人相似度和适应速度方面明显优于基线多说话人TTS模型。
