跳到主要内容Matcha-TTS 论文解读:基于条件流匹配的快速 TTS 架构 | 极客日志PythonAI算法
Matcha-TTS 论文解读:基于条件流匹配的快速 TTS 架构
Matcha-TTS 是一种基于最优传输条件流匹配(OT-CFM)的快速文本转语音(TTS)声学模型。它采用编码器 - 解码器架构,结合 1D CNN 与 Transformer,利用旋转位置嵌入(RoPE)提升长序列泛化能力。相比扩散概率模型(DPMs),OT-CFM 通过定义从噪声到数据的直线路径,显著减少了生成所需的采样步数,实现了更快的推理速度。实验表明,Matcha-TTS 在内存占用、合成速度和自然度评分上均表现优异,且无需外部对齐即可学习说话与对齐。
ServerBase0 浏览 Matcha-TTS:一种带条件流程匹配的快速 TTS 架构
Matcha-TTS 是一种用于快速 TTS 声学建模的新型编码 - 解码器架构,采用最优传输条件流匹配(OT-CFM)训练。
- 这使得基于常微分方程的译码器能够在更少的合成步骤内实现高输出质量,而非使用分数匹配训练的模型。
- 精心设计的选择还确保了每个合成步骤的快速运行。
- 该方法具有概率性、非自回归性,并且能够从零开始学习在没有外部对齐的情况下进行交流。
- 与强力的预训练基线模型相比,Matcha-TTS 系统内存占用最小,在长语句上速度可媲美最快模型,并在听力测试中获得最高的平均意见分数。
1. 介绍
扩散概率模型(DPMs,Diffusion probabilistic models)是当前生成模型领域的新标准,特别擅长生成图像、动作、语音等连续数据。其核心原理很简单:
- 先通过逐步加噪将真实数据"破坏"成纯噪声,如高斯噪声;
- 然后训练模型学会从噪声"重建"出原始数据。
这个重建过程可以用两种数学方式描述:
- 随机性的随机微分方程(SDEs,stochastic differential equations),每次生成结果略有不同;
- 确定性的常微分方程(ODE,ordinary differential equation),称为概率流 ODE(probability flow ODE),它能从相同噪声生成完全相同的结果,且计算效率更高。
概率流 ODE 就像一个精确的导航系统:给定一个噪声起点,它能确定性地将你引导到清晰的数据终点。相比传统方法,如连续时间归一化流(CNF,continuous-time normalising flows),它不需要复杂的训练技巧,就能高效生成高质量数据。
DPM 的 SDE 训练核心在于得分函数(score function)——即数据分布对数概率密度的梯度。其训练特点如下:
训练方式:通过均方误差(MSE)目标函数来近似分数函数,这一目标可从似然的证据下界(ELBO)推导而来
显著优势:
- 训练过程快速简单,无需数值 SDE/ODE 求解器参与
- 与传统归一化流模型不同,不限制模型架构设计,为网络结构提供更大灵活性
核心瓶颈:(合成速度慢,这是 DPMs 长期面临的主要实践挑战)
- 每个样本生成需要大量迭代步骤(通常数百步);
- 每一步都必须顺序计算,无法并行化;
- 每个步骤都需要完整评估整个神经网络,计算开销巨大
这种"训练快、生成慢"的特性形成了鲜明对比:虽然 DPMs 在训练阶段高效灵活,但实际应用时的生成效率问题成为制约其广泛部署的关键因素。
Matcha-TTS,这是一个基于连续归一化流的概率性、非自回归、快速采样自 TTS 的声学模型。主要有两项创新:
(1)采用1D CNN与Transformer混合的编码器 - 解码器架构。而且还显著降低内存消耗**,提升模型评估速度
(2)使用最优传输条件流匹配(OT-CFM,optimal-transport conditional flow matching)训练模型:
- 这是一种学习从数据分布中采样的常微分方程的新方法。
- 与传统 CNF 和评分匹配概率流常微分方程相比,OT-CFM 定义了从源(噪声)到目标(数据)的更简易路径,使得比 DPM 更少的步骤实现准确合成。
实验表明,这两项创新都加快了合成速度,减少了速度与合成质量之间的权衡。尽管速度快且轻便,Matcha-TTS 学会说话和对齐,无需外部矫正器。与强大的预训练基线模型相比,Matcha-TTS 实现了快速的合成和更好的自然性评分。音频示例和代码在 https://shivammehta25.github.io/Matcha-TTS/
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
2. 背景
2.1 近期的编码器 - 解码器 TTS 架构
扩散概率模型(DPMs)已应用于众多语音合成任务中,并取得了令人印象深刻的结果,包括波形生成和端到端 TTS。Diff-TTS 首次将 DPMs 应用于声学建模。随后,Grad-TTS 将扩散过程概念化为随机微分方程(SDE)。尽管这些模型以及其衍生模型如 Fast Grad-TTS 是非自回归的,但 TorToiSe 展示了在具有量化潜变量的自回归 TTS 模型中应用 DPMs 的效果。
上述模型——与许多现代 TTS 声学模型一样——采用编码器 - 解码器架构,编码器中使用 Transformer 模块。
- 许多模型(如 FastSpeech 1 和 2)使用正弦位置嵌入来处理位置依赖关系。然而,研究发现这种方法在长序列上的泛化能力较差;
- Glow-TTS、VITS 和 Grad-TTS 则采用相对位置嵌入。不幸的是,这些方法将短上下文窗口之外的输入视为"词袋",通常导致不自然的韵律。
- LinearSpeech 转而采用旋转位置嵌入(RoPE),与相对嵌入相比,RoPE 在计算和内存方面具有优势,并且能够更好地泛化到更长的距离。
因此,Matcha-TTS 在编码器中使用带有 RoPE 的 Transformer,相比 Grad-TTS 减少了内存使用。这应该是首个在基于 SDE 或 ODE 的 TTS 方法中使用 RoPE 的工作。
现代 TTS 架构在解码器网络设计方面也存在差异。
- 基于归一化流的方法 Glow-TTS 和 OverFlow 使用膨胀一维卷积。
- 基于 DPM(扩散概率模型)的方法使用一维卷积来合成梅尔频谱图。
- Grad-TTS 使用带有二维卷积的 U-Net网络。这种方法将梅尔频谱图视为图像,并隐含地假设在时间和频率两个维度上都具有平移不变性。然而,语音的梅尔频谱在频率轴上并不完全具有平移不变性,而且二维解码器通常需要更多内存,因为它们在张量中引入了额外的维度。
- 同时,像 FastSpeech 1 和 2 这样的非概率模型已经证明,使用 1D Transformer 的解码器能够学习长距离依赖关系并实现快速、并行的合成。
Matcha-TTS 在解码器中使用 Transformer,但采用了 1D U-Net 设计,该设计受到 Stable Diffusion 图像生成模型中 2D U-Net 的启发。
虽然一些 TTS 系统(如 FastSpeech)依赖于外部提供的对齐信息,但大多数系统能够同时学习说话和对齐能力,尽管研究发现鼓励或强制执行单调对齐对于快速有效的训练至关重要。实现这一目标的一种机制是单调对齐搜索(MAS),该机制被 Glow-TTS 和 VITS 等系统所采用。特别是,Grad-TTS 使用了一种基于 MAS 的机制,他们称之为先验损失(prior loss),以快速学习将输入符号与输出帧对齐。这些对齐信息还用于训练一个确定性时长预测器,该预测器在对数域中最小化均方误差(MSE)。Matcha-TTS 在对齐和时长建模方面采用了相同的这些方法。最后,Matcha-TTS 的不同之处,在于在所有解码器前馈层中使用了来自 BigVGAN 的 snake beta 激活函数。
2.2 流匹配与 TTS
目前,一些最高质量的 TTS 系统要么利用扩散概率模型(DPMs),要么使用离散时间归一化流,而连续时间流的研究相对较少。
Lipman 等人最近提出了一种使用常微分方程(ODEs)进行合成的框架,该框架统一并扩展了概率流 ODEs 和连续归一化流(CNFs)。随后,他们提出了一种高效的学习 ODEs 用于合成的方法,使用一种称为条件流匹配(CFM)的简单向量场回归损失,作为学习 DPMs 的评分函数或在训练时使用数值 ODE 求解器(如经典 CNFs)的替代方案。
关键的是,通过利用最优传输的思想,CFM 可以被设置为产生具有简单向量场的 ODEs,这些向量场在将样本从源分布映射到数据分布的过程中变化很小,因为它本质上只是沿着直线传输概率质量。这种技术被称为OT-CFM;校正流(rectified flows)代表了具有类似思想的同期工作。这些简单的路径意味着 ODE 可以使用较少的离散化步骤被精确求解,即与 DPMs 相比,可以在更少的神经网络评估次数下绘制出精确的模型样本,从而在相同质量下实现更快的合成速度。
CFM 是一种新技术,与早期加速基于 SDE/ODE 的 TTS 方法不同,后者通常基于知识蒸馏。在 Matcha-TTS 之前,唯一公开的关于基于 CFM 的声学建模的预印本是 Meta 的 Voicebox 模型。Voicebox(VB)是一个基于大规模训练数据执行各种文本引导语音填充任务的系统,其英文变体(VB-En)在 6 万小时的专有数据上进行训练。
VB 与 Matcha-TTS 存在显著差异:VB 执行 TTS、去噪和文本引导声学填充任务,使用掩码和 CFM 相结合的方式进行训练,而 Matcha-TTS 是一个纯粹的 TTS 模型,仅使用 OT-CFM 进行训练。VB 使用带有 AliBi 自注意力偏置的卷积位置编码,而 Matcha-TTS 的文本编码器使用 RoPE。与 VB 不同,Matcha-TTS 在标准数据上进行训练,并公开提供代码和模型检查点。VB-En 消耗 3.3 亿个参数,这比实验中的 Matcha-TTS 模型大 18 倍。此外,VB 使用外部对齐进行训练,而 Matcha-TTS 无需外部对齐即可学习说话。
3. 方法
- 一是最优传输条件流匹配(OT-CFM,Optimal-transport conditional flow matching),为方便理解,这部分内容将分为(解释部分 + 原义)
- 提出的架构(Proposed architecture)
3.1 OT-CFM(解释部分)
最优传输条件流匹配(OT-CFM) 是一种生成模型的训练方法。下面介绍一些概念,然后将会对公式进行说明:
想象你有一堆数据点(比如图片),它们分布在空间中。$p_t$ 就是一条"路径",描述了如何从一个简单的分布(比如标准正态分布)逐渐变化到复杂的数据分布。
- $p_0(x)$: 起点,是简单的标准正态分布 $
u(x; \mathbf{0}, I)$
- $p_1(x)$: 终点,是复杂的数据分布 $q(x)$
- $t \in [0, 1]$: 时间参数,$t=0$ 时是起点,$t=1$ 时是终点
向量场就像"风向图",告诉每个点在每个时间 $t$ 应该往哪个方向移动。
- $v_t(x; \theta)$: 我们要训练的神经网络,预测每个点的移动方向
- $u_t(x)$: 理想的、正确的移动方向(我们想让神经网络学会这个)
1)公式 1: 常微分方程(ODE)
$$ \frac{d}{dt} \phi_t(x) = v_t(\phi_t(x)); \quad \phi_0(x) = x $$
- $\phi_t(x)$ 表示一个点 $x$ 在时间 $t$ 的位置
- 这个公式说:点的位置变化速度 = 当前位置的向量场值
- 就像一艘船在河流中航行,河流的流速(向量场)决定了船的移动轨迹
实际应用:如果我们知道向量场 $v_t$,就能通过解这个方程,把简单的噪声($t=0$)变成复杂的数据($t=1$)。
2)公式 2: 流匹配损失(FM)
$$ \mathcal{L}{\text{FM}}(\theta) = \mathbb{E}{t, p_t(x)} \left| u_t(x) - v_t(x; \theta) \right|^2 $$
- 这是训练神经网络的目标函数
- 意思是:让神经网络预测的移动方向 $v_t$ 尽可能接近正确的移动方向 $u_t$
- $\mathbb{E}_{t, p_t(x)}$ 表示在所有时间点 $t$ 和所有位置 $x$ 上取平均
- $| \cdot |^2$ 是平方误差,衡量两个向量的差距
问题:实际中我们不知道真实的 $u_t$ 和 $p_t(x)$,所以这个损失无法直接计算。
3)公式 3: 条件流匹配损失(CFM)
$$ \mathcal{L}{\text{CFM}}(\theta) = \mathbb{E}{t, q(x_1), p_0(x_0)} \left| u_t(x_1) - v_t(x; \theta) \right|^2 $$
- 不再需要知道 $p_t(x)$,而是直接使用:
- $q(x_1)$: 真实数据分布(我们有的数据)
- $p_0(x_0)$: 简单的标准正态分布(我们可以生成的噪声)
- $u_t(x_1)$: 给定终点 $x_1$ 时的条件向量场
关键优势:这个损失可以实际计算!因为我们有真实数据,也能生成噪声。
4)公式 4: OT-CFM 损失(最优传输版本)
$$ \mathcal{L}(\theta) = \mathbb{E}_{t, q(x_1), p_0(x_0)} \left| u_t^{\text{OT}}(\phi_t^{\text{OT}}(x) | x_1) - v_t(\phi_t^{\text{OT}}(x); \mu) \right|^2 $$
- 为每个真实数据点 $x_1$ 随机匹配一个噪声点 $x_0$
- 定义一条直线路径:$\phi_t^{\text{OT}}(x) = (1 - (1 - \sigma_{\text{min}})t)x_0 + t x_1$
- 这条路径是最优的,因为两点之间直线最短
目标向量场:$u_t^{\text{OT}}(\phi_t^{\text{OT}}(x_0) | x_1) = x_1 - (1 - \sigma_{\text{min}})x_0$
- 从语音数据中随机选一个真实语音片段 $x_1$
- 生成一个随机噪声 $x_0$(标准正态分布)
- 用直线连接它们,得到中间状态 $\phi_t^{\text{OT}}(x)$
- 让神经网络预测从当前状态到目标状态的方向
- 用公式 (4) 的损失函数训练网络
- 从噪声 $x_0$ 开始
- 用训练好的神经网络预测移动方向
- 沿着预测的方向一步步移动(解 ODE)
- 最终得到高质量的语音 $x_1$
3.1 OT-CFM(原义)
在此对流匹配方法进行高层次概述,首先介绍由向量场生成的概率密度路径,然后推导出 OT-CFM 目标函数。
设 $x$ 表示从复杂且未知的数据分布 $q(x)$ 中采样的数据空间 $\mathbb{R}^d$ 中的一个观测值。概率密度路径($p_t: [0,1] \times \mathbb{R}^d \to \mathbb{R}$)是一个随时间变化的概率密度函数,其中 $t \in [0,1]$,且 $p_1(x) = q(x)$。一种从数据分布 $q$ 生成样本的方法是构建一个概率路径 $p_t$,使得当 $t \in [0,1]$ 时,$p_0(x) = \mathcal{N}(x; \mathbf{0}, I)$ 是一个先验分布,且 $p_1(x)$ 逼近数据分布 $q(x)$。例如,CNFs(连续归一化流)首先定义一个向量场 $v_t: [0,1] \times \mathbb{R}^d \to \mathbb{R}^d$,该向量场通过以下常微分方程生成流 $\phi_t: [0,1] \times \mathbb{R}^d \to \mathbb{R}^d$:
$$ \frac{d}{dt} \phi_t(x) = v_t(\phi_t(x)); \quad \phi_0(x) = x. \tag{1} $$
这生成了路径 $p_t$,作为数据点的边缘概率分布。可以通过求解方程 (1) 中的初始值问题,从近似的数据分布 $p_1$ 中采样。
假设存在一个已知的向量场 $u_t$,它能生成从 $p_0$ 到 $p_1 \approx q$ 的概率路径 $p_t$。流匹配损失定义为:
$$ \mathcal{L}{\text{FM}}(\theta) = \mathbb{E}{t, p_t(x)} \left| u_t(x) - v_t(x; \theta) \right|^2, \tag{2} $$
其中 $t \sim \mathcal{U}[0,1]$,$v_t(x; \theta)$ 是一个参数为 $\theta$ 的神经网络。尽管如此,流匹配在实际应用中难以处理,因为通常无法直接获取向量场 $u_t$ 和目标概率 $p_t$。因此,条件流匹配转而考虑:
$$ \mathcal{L}{\text{CFM}}(\theta) = \mathbb{E}{t, q(x_1), p_0(x_0)} \left| u_t(x_1) - v_t(x; \theta) \right|^2. \tag{3} $$
这将难以处理的边缘概率密度和向量场替换为条件概率密度和条件向量场。关键的是,这些在一般情况下是可处理的,并且具有闭式解;此外可以进一步证明,$\mathcal{L}{\text{CFM}}(\theta)$ 和 $\mathcal{L}{\text{FM}}(\theta)$ 关于 $\theta$ 具有相同的梯度。
Matcha-TTS 使用最优传输条件流匹配(OT-CFM)进行训练,这是流匹配的一种变体,具有特别简单的梯度。OT-CFM 损失函数可表示为:
$$ \mathcal{L}(\theta) = \mathbb{E}_{t, q(x_1), p_0(x_0)} \left| u_t^{\text{OT}}(\phi_t^{\text{OT}}(x) | x_1) - v_t(\phi_t^{\text{OT}}(x); \mu) \right|^2, \tag{4} $$
其中定义 $\phi_t^{\text{OT}}(x) = (1 - (1 - \sigma_{\text{min}})t)x_0 + t x_1$ 为从 $x_0$ 到 $x_1$ 的流,其中每个数据点 $x_1$ 与从随机样本 $x_0 \sim \mathcal{N}(\mathbf{0}, I)$ 中匹配的样本配对。其梯度向量场(即学习目标)为 $u_t^{\text{OT}}(\phi_t^{\text{OT}}(x_0) | x_1) = x_1 - (1 - \sigma_{\text{min}})x_0$。这些性质使得训练更简单、更快,生成速度更快,且性能优于 DPMs(扩散概率模型)。
3.2 提出的架构
Matcha-TTS 是一种用于神经语音合成(TTS)的非自回归编码器 - 解码器架构。上图提供了该架构的概览。文本编码器和时长预测器的架构,但使用旋转位置嵌入替代了相对位置嵌入。对齐和时长模型的训练使用 MAS(单调对齐搜索)以及先验损失 $\mathcal{L}_{enc}$。
预测的时长(向上取整)用于上采样(复制)编码器输出的向量,从而获得 $\mu$,即给定文本和所选时长条件下预测的平均声学特征(例如,梅尔频谱图)。该均值用于调节解码器,该解码器预测用于合成的向量场 $v_t(\phi_t^{OT}(x_0)|\mu; \theta)$,但不作为初始噪声样本 $x_0$ 的均值(与 Grad-TTS 不同)。
图 2:Matcha-TTS 解码器(图 1 中的 flow-prediction network)
上图展示了 Matcha-TTS解码器架构。它是一个包含一维卷积残差块的 U-Net,用于对输入进行下采样和上采样,并嵌入了流匹配步骤 $t \in [0,1]$。每个残差块后跟一个 Transformer 块,其前馈网络使用 snake beta 激活函数。这些 Transformer 不使用任何位置嵌入,因为音素间的位置信息已经由编码器处理,而卷积和下采样操作则用于在同一音素内对帧间进行插值,并区分它们之间的相对位置。与 Grad-TTS 使用的纯 2D 卷积 U-Net 相比,该解码器网络评估速度显著更快,且内存消耗更少。
参考: