Bag of Tricks for Unsupervised Text-to-Speech

abstract

在少量无监督数据,做语音合成。

intro

对于特殊语种的TTS,需要低资源合成。经常需要半监督或者无监督的方式训练。

  • 半监督:使用少量的标签数据初始化模型参数,然后使用back-translation利用无标签的数据。仍然需要录制&标注专业的TTS数据。
  • 无监督:之前使用ASR提供speech数据的伪标签,然后训练。但是会受限于ASR模型的性能,而且对于没有字典或者G2P工具的小语种,没办法做。
  • 小语种数据是从各种特定国家网站上爬取的,所以可以用一个其他语种的大量监督数据做一个前期工作。但是要说明的是:监督数据的语种和目标小语种应该共享同样的声韵母单元,比如法语和印度尼西亚语,都是拉丁语系(字母表一样)。
存在的问题解决方案
低质量多说话人数据多语种VC模型with flow-based enhanced prior,将多说话人的数据转化为一个说话人&增强
Back-translation stability:半监督的方法用到无标注数据,性能有限且很难收敛curriculum learning, length augmentation and auxiliary supervised loss
鲁邦性:自回归模型对齐的问题非自回归模型,ASR模型中的对齐引入back-translation过程

method

architecture

在这里插入图片描述

在这里插入图片描述
stage1 :voice conversion:语音合成的难点,在于speech和text之间建立跨模态的对齐。如果能让这两个模态之间的gap小一些,小数据的TTS就成为可能。对于同样的文本,录音的噪音,说话人的音色、韵律都会不一样,这些在常规TTS中是情感/风格建模,但是对于小数据TTS都是干扰,要做的实际是尽量消除这些干扰。采用语音转换的方法, S r i c h S_rich Srich(大规模监督语种数据)和 S l o w S_low Slow(少量无监督目标语种数据)都用于训练, S r e f S_ref Sref作为参考音色指导,所以变声模型的输出会将输入语音中的变量都进行规整。
stage 2 :Supervised warm-up training:使用监督数据预训练一个ASR,TTS的模型,给模型一个好的初始化;

Stage 3:Unsupervised back-translation training:音频序列 s s s输入ASR,得到文本序列 t p s e u d o t_{pseudo} tpseudo,然后用 ( s , t p s e u d o ) (s, t_{pseudo}) (s,tpseudo)训练TTS模型,N step=20k以后,再用 s p s e u d o , t s_{pseudo},t spseudot训练ASR模型,如此往复。实验表明两个模块的性能提升如上图。

voice conversion model

在这里插入图片描述

  • 对VC模型的要求:(1)跨语言变声的能力,基于rich data训练,然后输入low data进行变声;(2)生成高质量的结果,因为VC生成的结果会被用于TTS。(3)VC模型对噪声鲁棒,因为输入的low data可能是带噪的。
  • 对此,模型在设计中针对性的采取以下措施:
  • 支持跨语言的能力:使用Multilingual HuBERT,提取帧级别自监督学习的离散内容表征,在VC模型的decoder加language id,指示模型去关注一些不同语言的发音细节区别。
  • Variational encoder with flow-based enhanced prior:同PortaSpeech以及VITS的方法一样,encoder建模后验概率 D q D_q Dq,学习到一些时间尺度细微的区别,使用normalizing flow,对 D q D_q Dq的分布进行约束。与encoder表征结果求KL距离,基本是在高斯空间约束,限制了分布的多样性,同时也给decoder更多的先验知识。此外,也能给随机采样的变量时间相关性。
  • Information bottleneck:对HuBERT的token通过linear进行约束,以保证尽可能少的有说话人的身份信息泄漏。dimension过大信息泄漏,太小会引入发音错误。
    在这里插入图片描述
    λ 1 = λ 2 = λ 3 = 1 \lambda_1=\lambda_2=\lambda_3=1 λ1=λ2=λ3=1
    MAE-mel loss
    在这里插入图片描述

HuBERT

  • Multilingual HuBERT是基于英语、法语、西班牙语训练的。(VoxPopuli dataset的子集,本身有23种语言),共计13.5k 小时数据。
  • 从HuBERT的第三个iteration模型的第11层提取frame-level representation ,使用预训练的K-means模型获得离散的表征 H i n g H_{ing} Hing
  • fair开源的模型

Posterior Encoder

  • arch:conv1d(stride=4)+LN+non casual wavenet (k=8/192/5)
  • 预测均值方差,重采样得到z,dim=32

Volume-Preserving (VP) Normalizing Flow

在这里插入图片描述

  • θ \theta θ是normalize flow的参数

  • 将简单的高斯分布通过一系列可逆变换转换成复杂的分布,然后将这个复杂的分布作为decoder输入的先验,

TTS and ASR models

在这里插入图片描述

  • TTS模型设计思路:主要参照了PortaSpeech的做法,非自回归,而且将对齐的任务交给上游ASR完成。
  • TTS模型细节:decoder输入端有语言id的指导。postnet的模块删除,加入multi-length GAN的模块,为了简便,text-encoder使用的和fastspeech一样,没有用mix-linguistic encoder。
  • ASR模型设计思路:基于LSTM-based encoder and decoder,使用location sensitive attention做对齐,然后将attention矩阵通过维特比解码得到。该ASR模型是对所有语言通用的,更适用于新的目标语种加入训练。
  • ASR模型细节:使用tacotron2的模型作为ASR训练,输入语音,decoder输出端是多分类问题,预测character seq。训练一个Transformer-based语言模型+beam search,以最大化 l o g p A S R ( X ∣ S ) + 0.2 ∗ l o g p L M ( X ) log p_{ASR}(X|S)+0.2*log p_{LM}(X) logpASR(XS)+0.2logpLM(X),其中 S S S是输入语音, X X X是ASR识别结果,beam search size=5

tricks in back translation

  • Curriculum learning:
    • (1)首先用 ( S r i c h , t r i c h ) (S_{rich},t_{rich}) (Srich,trich)训练ASR模型,在基于 S l o w S_{low} Slow更新的时候,为了保证得到的 t l o w t_{low} tlow的置信度更高,计算focus rate F F F F F F数值越高,说明在单向对齐路径上的概率更大,说明转录的文本可信度更高。每一轮选择一个最好的ASR结果,如果 F > F t h r e s h o l d F>F_{threshold} F>Fthreshold,在下一轮back translation中,替换 t p s e u d o t_{pseudo} tpseudo
      在这里插入图片描述在这里插入图片描述
    • (2)因为ASR的结果会影响后端TTS,因此挑选一些和base中发音相近的句子及其转录用于TTS训练,那些不好的case直接丢掉。
  • Length augmentation
    • 背景:TTS和ASR模型对于短句子 都会更快的收敛而且表现更好,按照上述提到的丢弃表现不好的句子的策略,最终模型会在长句子上性能明显变差。
    • 方案:按照一定比例/概率,拼接一些短句子及其转录文本加入训练,这样的结果和对齐误差都是比较小的。20%比例
  • Auxiliary supervised losses
    • 问题:如果只使用back translation,那么对齐效果差,合成效果也很差;
    • 方案:将监督数据训练TTS和ASR的步骤,按照一定比例插入到back translation的训练过程中。 20%比例

experiment

  • train set:CommonVoice dataset中选取法语作为rich data,英语和印尼语作为目标小语种。目标语言分成两份,一份取音频,训练ASR,一份取文本训练TTS,保证两个不重合。LJSpeech中选语音作为ref。
  • 网站上可以查到,印尼语一共65h,英文一共3205h,有明显背景噪声
  • val set:LJSpeech中选100个audio/text pair作为evaluation,Indonesian从CommonVoice中选100个
  • 1张A100的卡,训练3天,包括VC/TTS/ASR,HiFi-GAN-vocoder 在LJSpeech上预训练好;
  • MOS:20句话20个人;CER/WER,英文的用wenet的模型测试,印尼语用微软的接口测试

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值