🍵 matcha-tts

摘要:

一种用于快速 TTS 声学建模的新编码器-解码器架构,使用最佳传输条件流匹配 (OT-CFM) 进行训练。与使用分数匹配训练的模型相比,这产生了基于 ODE 的解码器,能够以更少的合成步骤实现高输出质量。仔细的设计选择还确保每个合成步骤都能快速运行。该方法是概率性的、非自回归的,并且无需外部对齐即可从头开始学习说话。与强大的预训练基线模型相比,Matcha-TTS 系统具有最小的内存占用,可以与长语音上最快的模型相媲美,并在听力测试中获得最高的平均意见得分。

一种非自回归神经 TTS 的新方法,它使用条件流匹配(CFM from 2022.10 Flow Matching for Generative Modeling)(类似于校正流(Rectified Flow 2022.9 Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow)来加速基于 ODE 的语音合成。

  • Is probabilistic 是概率性的
  • Has compact memory footprint 具有紧凑的内存占用
  • Sounds highly natural 听起来非常自然
  • Is very fast to synthesise from 合成速度非常快

简洁的结构,训练推理快,使用更少额内存空间,

一种基于连续归一化流的概率性、非自回归、快速采样的 TTS 声学模型。主要有两个创新点:

  1. 提出了一种改进的编码器-解码器 TTS 结构,该结构在解码器中结合使用 1D CNN 和 Transformer。这减少了内存消耗并且可以快速评估,从而提高综合速度。
  2. 使用最优传输条件流匹配 optimal-transport conditional flow matching(OT-CFM) 来训练这些模型,这是一种学习从数据分布中采样的 ODE 的新方法。与传统的 连续时间归一化流 CNF(continuous-time normalising flows ) 和分数匹配概率流 ODE (probability flow ODE) 相比,OT-CFM 定义了从源到目标的更简单的路径,从而能够以比 DPM(Diffusion probabilistic model) 更少的步骤进行准确合成。

实验结果表明,这两种创新都加速了合成,减少了速度和合成质量之间的权衡。尽管速度快且轻量级,Matcha-TTS能够在不需要外部对齐器的情况下学习说话和对齐。与强大的预训练基线模型相比,Matcha-TTS实现了快速合成,并获得了更好的自然度评分。


结构:

Matcha-TTS 是一种非自回归的神经文本到语音(TTS)编码器-解码器结构。其结构的概述在图1中提供。文本编码器和时长预测器结构和Grad-TTS一致,但Text encoder使用旋转位置嵌入而不是相对位置嵌入。对齐和时长模型训练遵循MAS和先验损失 $\mathcal{L}_{enc}$ ,如Grad-TTS中所述。预测的时长,经过向上取整后,用于上采样(复制)编码器输出的向量,以获得 $\mu$ ,即在给定文本和所选时长的情况下预测的平均声学特征(例如,梅尔频谱图)。这个平均值用于条件化解码器,解码器预测用于合成的向量场 $v_{t}\left(\phi_{t}^{OT}\left(x_{0}\right)\mid\mu;\theta\right)$,但它并不用作初始噪声样本 $x_0$ 的均值(与Grad-TTS不同)。最终通过vocoder(HiFi-GAN Generator)生成waveform

image

Text encoder 文本编码器

位置编码使用 RoPE embedding 而不是相对位置 relative embedding, 和Grad-TTS中Text encoder 相同的超参数

Duration predictor 持续时间预测器

和Grad-TTS中Duration predictor 相同的超参数

Decoder (the Flow-prediction network 流预测网络)

使用两个下采样块,然后是两个中采样块和两个上采样块,如图 2 所示。每个块都有一个 Transformer 层,隐藏维度为 256、2 个头、注意力维度为 64,并且使用snake 激活函数。

image

Optimal-transport conditional flow matching 最优传输条件流匹配

在这一部分,首先介绍由向量场生成的概率密度路径,然后引入提出的方法中使用的最优传输条件流匹配(OT-CFM)目标。 设 $\mathbf{x}$ 表示数据空间 $\mathbb{R}^d$中的一个观测值,它从复杂且未知的数据分布 $q(\mathbf{x}) q(x)$ 中采样得到。一个概率密度路径是一个随时间变化的概率密度函数, $p_t: [0,1] \times \mathbb{R}^d \rightarrow \mathbb{R}^{>0} pt:[0,1]×Rd→R>0 $,其中 $t \in [0,1] t∈[0,1]$ , $p_0(\mathbf{x}) = \mathcal{N}(\mathbf{x}; \mathbf{0}, \mathbf{I})$ 是一个先验分布,使得 $p_1(\mathbf{x})$ 近似于数据分布 $q(\mathbf{x})$ 。 例如,连续时间归一化流(CNFs)首先定义一个向量场 $\mathbf{v}_t: [0,1] \times \mathbb{R}^d \rightarrow \mathbb{R}^d$ ,它通过下面的常微分方程(ODE)生成流 $\phi_t: [0,1] \times \mathbb{R}^d \rightarrow \mathbb{R}^d$ :

$$ \frac{d}{dt} \phi_t(\mathbf{x}) = \mathbf{v}_t(\phi_t(\mathbf{x})) \quad ; \quad \phi_0(\mathbf{x}) = \mathbf{x}. $$ 这生成了路径 $p_t$ ,作为数据点的边际概率分布。我们可以通过解决方程(1)中的初值问题,从近似的数据分布 $p_1$ 中采样。 假设存在一个已知的向量场 $\mathbf{u}_t$ ,它从 $p_0$ 到 $p_1 \approx q$ 生成概率路径 $p_t$ 。流匹配损失定义为:

$$ \mathcal{L}_{\mathrm{FM}}(\theta) = \mathbb{E}_{t,p_t(\mathbf{x})} \left| \mathbf{u}_t(\mathbf{x}) - \mathbf{v}_t(\mathbf{x}; \theta) \right|^2, $$ 其中 $t \sim \mathbb{U}[0,1]$ 并且 $\mathbf{v}_t(\mathbf{x}; \theta)$ 是一个具有参数 $\theta$ 的神经网络。然而,流匹配在实践中是不可行的,因为获取向量场 $\mathbf{u}_t$ 和目标概率 $p_t$ 并非易事。因此,条件流匹配考虑的是:

$$ \mathcal{L}_{\mathrm{CFM}}(\theta) = \mathbb{E}_{t,q(\mathbf{x}_1),p_t(\mathbf{x} \mid \mathbf{x}_1)} \left| \mathbf{u}_t(\mathbf{x} \mid \mathbf{x}_1) - \mathbf{v}_t(\mathbf{x}; \theta) \right|^2. $$

这替换了难以处理的边际概率密度和向量场,转而考虑条件概率密度和条件向量场。关键是,这些通常是可行的,并且有封闭形式的解决方案,而且可以证明 $\mathcal{L}_{\mathrm{CFM}}(\theta)$ 和 $\mathcal{L}_{\mathrm{FM}}(\theta)$ 在 $\theta$ 方面具有相同的梯度。

Matcha-TTS 使用最优传输条件流匹配(OT-CFM)进行训练,这是一种具有特别简单梯度的 CFM 变体。OT-CFM 损失函数可以写成: $$ L(\theta)=\mathbb{E}_{t, q(x_{1}), p_{0}(x_{0})}\left|u_{t}^{OT}\left(\phi_{t}^{OT}(x)\mid x_{1}\right)-v_{t}\left(\phi_{t}^{OT}(x)\mid\mu;\theta\right)\right|^{2}, \quad $$

定义 $\phi_{t}^{OT}(x)=(1-(1-\sigma_{\min}) t) x_{0}+t x_{1}$ 为从 $x_{0}$ 到 $x_{1}$ 的流,其中每个数据 $x_{1}$ 与一个随机样本 $x_{0}\sim\mathcal{N}(0, I)$ 匹配,其梯度向量场(其期望值是学习的目标) 则是 $u_{t}^{OT}\left(\phi_{t}^{OT}\left(x_{0}\right)\mid x_{1}\right)=x_{1}-(1-\sigma_{\min}) x_{0}$,它是线性的、时间不变的,并且只依赖于 $x_{0}$ 和 $x_{1}$ 。这些属性使得训练更简单、更快,生成更快,并且与 DPMs 相比性能更好。

在Matcha-TTS的情况下,$\mathbf{x}_1$ 是声学帧,而 $\boldsymbol{\mu}$ 是从文本预测的这些帧的条件均值,使用下一部分描述的架构。 $\sigma_{\min}$ 是一个具有很小值(在我们的实验中为1e-4)的超参数。

训练

常规数据集,论文中使用单人数据(LJ Speech),额外也用多人数据(VCTK)来训练;可以使用lhotse工具下载, 进行切分数据预处理,然后通过带有 espeak-ng 后端的phonemizer: https://github.com/bootphon/phonemizer 用于将输入字素(graphemes)转换为 IPA 音素(IPA phones),在 2 个 GPU 上训练了 500k 更新,批量大小为 32,学习率为 1e-4。

训练数据集:

对比开源模型

对比评估

从内存使用量(模型参数),推理速度,以及生成语音质量三个方面评估:

  • 所有系统训练期间(批量大小为 32 和 fp16)的参数数量和最大内存使用情况,使用内存小;
  • 在训练系统之后,我们通过计算在测试集上合成时的实时因子(RTF)的平均值和标准差,以及将Whisper medium ASR系统应用于结果时的单词错误率(WER),来评估不同条件的合成速度和可理解性;
  • 平均意见得分(MOS)听力测试(众包人工测试),这个比较意义不大;
  • 评估了不同模型的合成速度如何随着语句长度的增加而变化,通过使用GPT-2模型生成不同长度的180个句子,评估合成时间,对长句子合成更快;

结合作者以前的研究成果,都是在3090上进行训练,构造精简小而美的结构,满足基本要求(正常文本到语音)

总结:

论文实现的代码结构清晰,提炼的网络结构参数少,所需硬件成本不高,挺适合快速上手训练一个tts,然后根据需求和所要解决的实际问题,加入其他网络结构,再去推进升级。比如 VALL-E, Seed-TTS(非纯DiT结构),CosyVoice 基于大语言模型(LLM)的文本转语音(TTS)成为主流,生成更加泛化(涌现),但是所需训练数据和模型网络参数大(scaling),训练推理成本高(虽然有大量的推理优化工作)。 2024.7 CosyVoice: A Scalable Multilingual Zero-shot Text-to-speech Synthesizer based on Supervised Semantic Tokens | 2024.12 CosyVoice 2: Scalable Streaming Speech Synthesis with Large Language Models | paper code