VITS采用条件VAE进行变分推断:
\[\log p_\theta(x | c) \geq \mathbb{E}_{q_\phi(z | x)} \left[ \log p_\theta(x | z) - \log \frac{q_\phi(z | x)}{p_\theta(z | c)} \right]\]其中第一项可以理解成让自编码器的输出接近输入内容; 第二项为KL散度, 其中 $q_\phi(z \vert x)$ 是后验编码器,将音频编码为隐表征 z, 而 $p_\theta(z \vert c)$ 则是z的先验,表示在给定文本条件的前提下,隐变量z的先验分布。
值得注意的是,标准的VAE对后验 q(z|x) 做重参数化,而VITS对先验和后验都做了重参数化,由于是条件VAE;
A conditional VAE is a conditional generative model where the observed conditions modulate the prior distribution of latent variables used to generate outputs.
首先需要计算对数似然损失。由基本的机器学习知识可以知道,假设数据符合高斯分布时,最大化对数似然等价于最小化L2 loss; 而VITS则是假设数据符合拉普拉斯分布,则其重建损失 $L_{recon}$ 是L1 Loss \(L_{recon} = \Vert x_{mel}-\hat{x}_{mel}\Vert_{1}\) 注:
KL散度的计算中,先验和后验编码器均采用了正态分布进行重参数化处理。
对齐估计是通过对齐矩阵A确定每个因素持续时间的过程。训练过程中, Monotonic Alignment Search (MAS) 策略被使用,其采用动态规划的方式寻找最优的单调对齐矩阵A:
\[\begin{aligned} \hat{A} &= \arg \max\limits_{\hat{A}} \log p_{\theta}(x_{\text{mel}} | z) - \log \frac{q_{\phi}(z | x_{\text{lin}})}{p_{\theta}(z | c_{\text{text}}, \hat{A})} \\ &= \arg \max\limits_{\hat{A}} \log p_{\theta}(z | c_{\text{text}}, \hat{A}) \\ &= \log \mathcal{N}(f_{\theta}(z); \mu_{\theta}(c_{\text{text}}, \hat{A}), \sigma_{\theta}(c_{\text{text}}, \hat{A})) \end{aligned}\]但注意到仅在训练过程中 z是已知的,但在测试的时候,需要我们通过一个时长预测器 (duration predictor) 来进行时长预测,获取对齐矩阵 A。之前的工作中预测器预测固定的值,无法体现人的语音的随机性。VITS 采用了一个 flow-based 生成式模型,以得到一个随机的时长预测器(stochastic duration predictor)。预测器的训练过程主要基于之前的一些基于flow的工作,在此不做详细叙述,可自行参考原文引用文献。
上述内容包含三个损失函数, 重建损失 $L_{recon}$ 和 KL损失 $L_{KL}$, 二者构成变分下界; 时长预测器的损失 $L_{dur}$, 用于训练时长预测器。此外,模型还额外具有一个判别器,用于判断合成音频是真是假, 进行类似GAN的对抗训练。判别器产生对抗损失 $L_{adv}$ 和逐层的特征图损失 $L_{fn}$, 对抗损失包括训练生成器和训练判别器的对抗损失两部分,而特征图损失则是让判别器的每一层真实音频和合成音频的特征均保持相似。
后验编码器: 由 vanilla Transformer 构成的文本编码器将音素编码序列 $c_{text}$ 编码为 $h_{text}$ ,之后一个线性投影层将 $h_{text}$ 转化为先验概率p(z|c)的均值和方差。
Flow 层: "The normalizing flow is a stack of affine coupling layers consisting of a stack of WaveNet residual blocks", 具体如下图所示。多说话人的情况下,说话人嵌入也被通过 global conditioning 引入到了 flow 结构中。
L1数据集(24 hours) 和VCTK数据集(44 hours)。注意到数据集规模还是比较小的。
实验仅采用主观指标 MOS(mean opinion score)。 MOS评分通常由一组听众对语音样本的主观评分计算得出,评分范围通常为1到5,分数越高表示语音质量越好。实验结果表明VITS在两个数据集上均取得了高于传统二阶段方法的MOS分数,并且其MOS分数和Ground Truth很接近,证明了其效果有效性。
VITS 的一个卖点是其采用了随机时长预测器。文章通过对同一个合成内容( "How much variation is there?" ) 对总的说话人时长和不同说话人时长统计表明,VITS能够很好的生成不同长短的内容,从而提高合成语音的自然度。而提取的 10 条话语的 F0 轮廓表明VITS对不同说话人, 生成了具有不同音调和节奏的语音。
在语音合成中,F0 contours(基频轮廓)是指语音信号中基频(F0)的变化模式。基频是声波的最低频率,通常与音高相关。基频轮廓描述了基频在时间上的变化情况,是语音合成和语音识别中的重要参数。通过分析和合成基频轮廓,可以更好地模拟自然语音的音调和韵律,从而提高语音合成的自然度和可理解性。
VITS的另一个优点是其是端到端的,因此合成速度比二阶段的要块。论文中也设计了实验来反应这一优点。