笔记地址:https://flowus.cn/share/4c8c251b-cb8e-4f21-aa9e-139c1c3cf883
【FlowUs 息流】Vits
论文地址:
proceedings.mlr.press
与传统的two-stage TTS(即文字→mel频谱→声音)相比,是一种parallel end-to-end TTS,提升了效率且声音自然。
其它parallel方法主要存在音质不佳情况,Vits使用了variational inference augmented with normalizing flows and an adversarial training process,等技术,使得声音听起来更加自然。variational inference augmented with normalizing flows:这些技术被用于提高生成模型的表达能力,使生成的语音更加自然和富有表现力。adversarial training process:进一步优化模型性能,提高生成语音的质量。
提出stochastic duration predictor:通过这个预测器,系统能够从给定文本合成具有多样化节奏的语音,增强语音的自然度和多样性。
uncertainty modeling和stochastic duration predictor的运用下,系统能够理解和表达one-to-many关系,反映了语言的自然多样性。
评价指标:使用LJSpeech数据集,MOS指标评定
这部分介绍了TTS系统发展的过程,并解释了Vits在之前基础上所做的工作
TTS系统将给定的文本信息,合成为原始语音波形,传统上通常通过两阶段来完成。
First Stage:从预处理文本生成中间语音表示,如Mel频谱或语言特征(linguistic features)
Second Stage:根据第一阶段的中间表示生成原始波形
在First Stage,自回归的TTS方法如tacotron能够合成真实的语音,但问题是它的序列生成过程难以充分利用现代并行处理器
为了提高合成速度克服回归系统限制,提出了几种非自回归方法
从预训练的教师网络中提取注意力图,如fastspeech就采取了这样的方式,以降低学习文本和频谱图之间对齐的难度
基于似然的方法:进一步消除对外部对齐器的依赖,通过估计或学习对齐来最大化目标Mel频谱图的似然
在Second Stage,从频谱图到原始波形图的过程,多使用生成对抗网络GAN。基于GAN的前馈网络采用多个判别器,每个判别器在不同尺度或周期上区分样本,实现了高质量的原始波形合成
传统上TTS通常通过以上两个Stage完成,但这仍然存在问题,主要因为它需要序列训练或微调。后期模型的训练依赖于前期模型生成的样本。系统依赖于预定义的中间特征,这限制了使用学习到的隐藏表示来进一步提升性能的可能性。
VITS方法的创新之处:
端到端的并行训练:VITS采用了变分自编码器(VAE)的框架,将TTS系统的两个模块通过潜在变量连接起来,实现高效的端到端学习。
表达力的提升:为了提高合成的高质量语音的表达能力,VITS应用了标准化流(normalizing flows)在条件先验分布上,并在波形领域采用了对抗训练。
多样性和自然性:为了解决文本到语音中的一对多问题(即同一文本可以有多种不同的语音表达方式),VITS提出了一种随机持续时间预测器,这使得从输入文本合成具有不同节奏的语音成为可能。通过对潜在变量的不确定性建模和随机持续时间预测器,VITS能够捕捉到仅通过文本无法表示的语音变化。
优越的性能:VITS在生成自然 sounding speech 和采样效率方面都优于当时公开可用的最佳TTS系统Glow-TTS结合HiFi-GAN。
VITS是一种基于变分推断(Variational Inference)和对抗学习(adversarial learning)的端到端文本到语音转换(TTS)方法,全称为:Variational Inference with adversarial learning for end-to-end Text-to-Speech
VITS是一种条件变分自编码器(Conditional VAE),其目标是最大化变分下界(也称为证据下界,ELBO)。该方法旨在处理无法直接计算的数据的边际对数似然 logpθ(x∣c)。VITS不仅包括变分推断,还包括对齐估计和对抗训练以提高合成质量。
公式解释:
重构建损失是训练阶段用来提高生成语音质量的关键步骤,这个方法利用了梅尔频谱图与人耳感知的接近性,来提升合成语音的感知质量。
重建目标选择:
在计算重建损失时,VITS不使用原始的波形数据作为目标,而是使用梅尔频谱图(mel-spectrogram),记为 xmel。梅尔频谱图是一种更紧凑的数据表示形式,它基于人类听觉感知的非线性梅尔尺度。
潜在变量到波形域的上采样:
潜在变量 z 通过解码器上采样到波形域 y^,然后将波形 y^ 转换为梅尔频谱图域 x^mel。
计算重建损失:
重建损失 Lrecon 是预测的梅尔频谱图 x^mel 与目标梅尔频谱图 xmel 之间的L1范数(绝对值误差和)。数学表示为
最大似然估计:
这种重建损失可以看作是在假设数据分布符合拉普拉斯分布的条件下的最大似然估计,忽略了常数项。
选择梅尔频谱图的理由:
作者选择在梅尔频谱图域定义重建损失,是因为梅尔尺度近似模拟了人类的听觉系统响应,这有助于改进生成语音的感知质量。
梅尔频谱图的计算方式:
从原始波形到梅尔频谱图的转换不需要可训练的参数,仅使用短时傅里叶变换(STFT)和线性投影到梅尔尺度上。这个转换只在训练期间使用,而在实际推理过程中不使用。
高效端到端训练:
在实践中,并不对整个潜在变量 z 进行上采样,而是使用部分序列作为解码器的输入,这就是所谓的窗口化生成器训练。这种方法被用于高效的端到端训练。
通过这种方式,VITS系统能够在没有对齐真值标签的情况下,通过变分推断估计潜在变量的分布,并利用正规化流增加先验分布的表达性,从而在保持变分推断属性的同时生成高质量的语音样本。
先验编码器的输入条件:
先验编码器的输入条件 c 包括从文本中提取的音素 ctext 和音素与潜在变量之间的对齐 A。这里的对齐 A 是一个硬性单调注意力矩阵(hard monotonic attention matrix),它有 ∣ctext∣×∣z∣ 的维度,表示每个输入音素在时间上扩展多长,以与目标语音对齐。
对齐的估计:
由于对齐没有真值标签,需要在每次训练迭代中估计对齐,这一点将在2.2.1节中讨论。
后验编码器的输入:
在问题设定中,目的是为后验编码器提供更高分辨率的信息。因此,使用目标语音的线性尺度频谱图 xlin 作为输入,而不是梅尔频谱图。修改的输入不会违反变分推断的属性。
KL散度的计算:
其中 z 由后验分布 qϕ(z∣xlin) 采样得到,后者是一个参数化的正态分布。
先验和后验编码器的参数化:
使用分解的正态分布来参数化先验和后验编码器。
提高先验分布的表达性:
为了生成更真实的样本,增加先验分布的表达性是很重要的。因此,使用正规化流 fθ(来自Rezende & Mohamed, 2015的工作)对分解的正态先验分布进行变换。正规化流允许一个简单分布通过变量变换的规则转换成一个更复杂的分布。
正规化流的应用:
正规化流的应用在先验分布,变换的雅可比行列式用于在变换过程中保持概率分布的完整性。
由于在训练时没有对齐的真实标签,因此在训练阶段的每一次迭代时都需要估计文本和音频之间的对齐。MAS在VITS中用于动态地估计输入文本到目标语音的最优对齐,这是训练过程中的一个关键步骤,因为正确的对齐对于生成高质量的语音至关重要。通过这种对齐,VITS能够确保在合成过程中每个音素都能得到适当的时间展开,从而在听觉上保持语音的自然流畅。
对齐的定义:
对齐 A 是输入文本和目标语音之间的时间映射,确定了输入文本中的每个音素(或字)与目标语音中的特定时间段如何对应。
MAS的原理:
MAS是一种寻找最优对齐的算法,目的是找到一个对齐 A^,它可以最大化给定输入 ctext 和潜在流 f 参数化数据的似然 p(x∣ctext,A^)。
由于人类在阅读文本时是按顺序不跳跃地读的,因此对齐被限制为单调非跳跃的。
对齐估计的数学表达:
使用正态分布来寻找最优对齐 A。这个过程涉及搜索所有可能的对齐候选 A^,以找到最大化似然的那个。
MAS与ELBO的关系:
在VITS的背景下,由于目标是最大化ELBO而不是精确的对数似然,因此MAS需要被重新定义为寻找最大化ELBO的对齐。
这实际上归结为找到一个对齐 A^,它最大化了潜在变量 z 的对数似然。
MAS在VITS中的应用:
公式(6)描述了在VITS设置中,MAS的目标是找到最大化 logpθ(z∣ctext,A^) 的对齐 A^,即最大化潜在变量 z 在给定文本和对齐的条件下的先验分布的对数似然。
因为公式(5)和公式(6)在形式上相似,可以直接使用原始的MAS实现而无需修改。
动态规划的使用:
Kim等人(2020年)提到,为了找到最优对齐,使用了动态规划方法,这是一种有效的算法,可以在多个可能的对齐序列中快速找到最优解。
计算时长:
文本中的每个输入标记(比如音素)的时长可以通过对估计的对齐矩阵中的每一行进行求和来计算。这个时长可以用来训练一个确定性的时长预测器,但这种方法无法表达人在不同语速下的发音方式。
随机时长预测器的设计:
为了生成类似人类的语音节奏,设计了一个随机时长预测器。这个预测器是基于流的生成模型,通常通过最大似然估计来训练。但是直接应用最大似然估计有其难点,因为每个输入音素的时长是离散的整数,需要去量化以适用于连续的归一化流,并且是标量,这限制了因可逆性而进行的高维转换。
变分去量化和数据增强:
为了解决这些问题,引入了变分去量化(variational dequantization)和变分数据增强(variational data augmentation)。具体地,引入了两个随机变量 u 和 ν,它们与时长序列 d 的时间分辨率和维度相同。将 u 限制在 [0, 1) 范围内,使得 d−u 成为一系列正实数,并且将 ν 和 d 在通道维度上拼接,形成更高维的潜在表示。
目标函数和训练损失:
通过近似后验分布 qφ(u, ν|d, ctext) 采样这两个变量。结果目标是音素时长的对数似然的变分下界。训练损失 Ldur 是变分下界的负数。在训练过程中,应用停止梯度操作符,以防止输入条件的梯度反向传播,这样时长预测器的训练就不会影响其他模块。
采样过程:
S采样过程相对简单。音素时长通过随机噪声通过随机时长预测器的逆变换采样得到,然后转换为整数。
VITS使用对抗训练来提升语音质量,
GAN由两部分组成:生成器 G 和判别器 D。生成器 G 负责生成数据,而判别器 D 则区分生成的数据和真实数据。在这项工作中,使用了两种类型的损失函数来训练这两个网络:
对判别器的对抗损失 Ladv(D):
这个损失函数是用于训练判别器 D,使其能够更好地区分生成的输出和真实的波形 y。这里使用的是最小二乘损失函数,它有利于提高训练过程的稳定性。该函数针对两个目标:使判别器 D 对于真实数据 y 的判断尽可能接近1(即认为数据是真实的)。使判别器 D 对于生成数据 G(z) 的判断尽可能接近0(即认为数据是生成的)。
对生成器的对抗损失 Ladv(G):
这个损失函数是用于训练生成器 G,使其生成的数据在判别器 D 看来无法与真实数据区分。目的是让生成器 G 生成的数据 G(z),在经过判别器 D 评估后,尽可能得到接近1的判断,即判别器认为生成数据是真实的。
特征匹配损失 Lfm(G):
特征匹配损失用于进一步训练生成器 G,它关注于在判别器的隐藏层上进行重建损失的计算。这种损失函数与变分自编码器(VAEs)中的元素级重建损失不同,因为它不是直接在输出层比较生成数据和真实数据,而是在判别器内部的多个隐藏层进行比较。这样可以帮助生成器学习生成在特征层面上与真实数据更为接近的数据,从而改善生成数据的质量。
这三个损失函数共同作用,帮助生成对抗网络学习如何生成看起来和真实波形更接近的语音数据。其中 T 代表判别器中层的总数,而 Dl 输出第 l 层的特征映射。
结合VAE和GAN的训练过程,训练conditional VAE的总损失为:
总体结构由后验编码器(posterior encoder),先验编码器(prior encoder),解码器(decoder),鉴别器(discriminator)和随机持续时间预测器(stochastic duration predictor)组成。后验编码器和鉴别器只用于训练。
VITS模型是如何实现训练过程的:
文本编码器(Text Encoder): 首先,文本编码器接收文本信息,这里是以音素(Phonemes)的形式呈现。文本编码器将这些音素转换为一个连续的上下文表示 ctext,这为生成语音的语音学特征提供了基础。
后验编码器(Posterior Encoder): 后验编码器接收一个线性频谱图(Linear Spectrogram)作为输入,并将其编码为一个潜在的表示 z。这个潜在表示试图捕捉输入语音的重要特征。
对齐搜索(Monotonic Alignment Search): 这个步骤涉及到将文本表示和潜在的语音表示对齐。这通常是一个挑战,因为文本到语音中需要将不同长度的文本序列与语音序列对应起来。
流(Flow): 流是一个可逆的神经网络,它可以将潜在表示 z 转换为一个更结构化的空间 fθ(z),其中可能更容易从中采样和生成新的数据点。
投影(Projection): 这个步骤将上下文表示 ctext 投影到与潜在表示 z 相同的空间。
随机持续时间预测器(Stochastic Duration Predictor): 这部分模型负责预测每个音素的持续时间,这是生成自然听起来的语音的关键因素。
梯度停止(Stop Gradient): 梯度停止是一种技术,用于防止在训练过程中的某些部分传递梯度,以便可以独立地训练模型的其他部分。
噪声(Noise): 噪声项可能被添加到潜在表示中,以鼓励模型学习生成多样化的输出,这是变分推断方法的常见做法。
解码器(Decoder): 最后,解码器接收流输出 fθ(z),以及文本和持续时间信息,生成最终的原始波形。解码器负责将所有信息合成为可听的语音。
后验编码器
先验编码器,在图中又被写作Text Encoder
LJ Speech数据集:
VCTK数据集:
对于后验编码器的输入:
重构损失计算:
对于先验编码器的输入:
优化器:
学习率调度:
窗口生成器训练:
混合精度训练:
批量大小和训练步数:
与其他模型的比较:
预训练权重:
HiFi-GAN的微调:
微调的选择:
固定随机性:
MOS测试:
VITS的性能:
时长预测器的影响:
消融实验:
表3显示,VITS模型在MOS评分上高于其他所有模型,甚至达到了与真实语音相同的评分(4.38 ± 0.06)。
这个结果表明,VITS模型不仅能够学习和表达多样化的语音特征,而且能够以端到端的方式实现,这是在多说话人语音合成中非常重要的。
侧重于说明VITS模型通过其随机时长预测器不仅能够生成不同长度的话语,而且能够捕捉和表现出于说话人身份相关的音长和音调的特征。展现VITS生成语音自然的特点
语音长度的多样性:
说话人依赖的音素时长学习:
音调和节奏的多样性:
基频轮廓:
VITS的多样性:
Tacotron 2和Glow-TTS的比较:
合成速度:
合成速度的比较:
速度测试方法:
测试配置:
测试结果:
VITS系统:
随机时长预测器:
直接从文本合成语音:
实验结果:
应用前景:
挑战与未来研究方向: