Lazy loaded image
🔉TTS
Words 5856Read Time 15 min
2025-7-1
2025-7-1
type
status
date
slug
summary
tags
category
icon
password

Wavenet

wavenet 的输入不是直接的文本,而是声学特征,例如梅尔频谱图 (Mel-Spectrogram),因此wavenet不能直接处理文本。
也就是说 Wavenet 实际上是一个声码器,只不过在当今,wavenet有些过时,生成时间长。
为了解决速度问题,学术界和工业界已经发展出更先进的并行声码器来替代 WaveNet,例如 NVIDIA 的 WaveGlowParallel WaveGAN 以及目前效果最好、速度最快的 HiFi-GAN。它们的原理相似(都是将频谱图转换为波形),但通过非自回归的设计实现了并行计算,生成速度快了几个数量级。
常见的 TTS 流程如下:

Tacotron2

Tacotron2 实际上是一个整个系统,包含了wavenet的这个部件
Tacotron2 是一个直接从文本生成语音的神经网络架构
The system is composed of a recurrent sequence-to-sequence feature prediction network that maps character embeddings to mel-scale spectrograms, followed by a modified WaveNet model acting as a vocoder to synthesize timedomain waveforms from those spectrograms.
notion image
由于这只是一个框架,其中某些模型可以替换和优化,例如 Nvidia 的实现中,就将 Wavenet 替换为了 WaveGlow,可是在当今来说,还不是最优的。

HiFiGAN

HiFiGAN 模型的输入是 Mel-Spectrogram,生成波形
notion image
MFCC
梅尔频率倒谱系数
Mel Frequency Cepstral Coefficient
关于是否用 MFCC
绝佳的问题!您正在将我们之前讨论的概念应用到当前最先进(SOTA, State-of-the-Art)的模型之一。答案与 WaveNet 的情况非常相似,但理由更加充分。
简短而直接的回答:
  • HiFi-GAN 的输入是:梅尔频谱图 (Mel-Spectrogram)。
  • 不,绝对不能使用 MFCC 作为输入。 如果这样做,你将完全无法获得 HiFi-GAN 设计时所追求的“高保真度”(High-Fidelity)效果,结果会非常糟糕。

深入详解

1. HiFi-GAN 的角色和输入

HiFi-GAN 是一个声码器 (Vocoder),与 WaveNet 在 TTS 系统中所扮演的角色完全相同。它的唯一工作就是将声学特征转换为原始音频波形。
  • 工作流程: 在一个完整的 TTS 系统中,HiFi-GAN 仍然是第二阶段
      1. 阶段一 (声学模型): 一个模型(如 FastSpeech 2)接收文本,并生成梅尔频谱图
      1. 阶段二 (声码器): HiFi-GAN 接收这个梅尔频谱图作为输入,并极其高效地将其合成为最终的高保真音频。
HiFi-GAN 的一大突破是它非自回归的特性,它不像 WaveNet 那样一个样本点一个样本点地生成,而是可以并行地一次性生成一大段音频,因此速度极快,可以轻松实现实时合成。但它对输入特征的要求和 WaveNet 是一致的。

2. 为什么 MFCC 对于 HiFi-GAN 来说是“毒药”?

这个原因和我们之前讨论的完全一样,但对于 HiFi-GAN 来说,矛盾更加尖锐,因为它的目标是**“高保真”**。
  1. 高保真需要海量细节: “高保真”意味着生成的音频在听感上要与真实录音无法区分。这要求音频包含所有微妙的细节:细腻的谐波结构(决定音色)、高频的嘶嘶声(如齿音)、以及声音的整体“空气感”和质感。所有这些细节信息都编码在梅尔频谱图中。
  1. MFCC 是细节的“粉碎机”: MFCC 通过离散余弦变换 (DCT) 和系数截断,有意地丢弃了这些高频和精细的谐波细节。它的设计目标是为了识别语音内容,而不是为了重建语音本身。
打个比方:
  • 梅尔频谱图是一张 8K 分辨率的超高清照片的原始数字文件。
  • MFCC 是这张照片被压缩后,只保留了主体轮廓的一张 10KB 大小的缩略图。
  • HiFi-GAN 是一位顶级的照片修复和放大专家,他的工作是把数字文件变成一张巨幅的、画廊级别的实体照片。
如果你给这位专家 8K 的原始文件(梅尔频谱图),他可以为你创造出一幅惊艳的、充满细节的作品。 如果你给他那张 10KB 的缩略图(MFCC),他无论如何努力,最终得到的也只能是一张模糊不清、充满马赛克的放大图片。他无法凭空创造出原始文件中已经丢失的细节。

3. HiFi-GAN 的工作机制决定了它需要梅尔频谱图

HiFi-GAN 的生成器(Generator)通过一系列的**转置卷积(Transposed Convolutions)**来工作。这个过程可以被理解为不断地将输入的梅尔频谱图进行“上采样”和“填充细节”,直到其时间分辨率与最终的音频波形相匹配。
这个“填充细节”的过程是基于模型在训练中学到的模式。如果输入本身(MFCC)就已经丢失了绝大部分细节,那么生成器就失去了填充的依据,它的学习过程也会变得毫无意义,因为它无法学到从一个高度抽象的特征到高保真音频的映射。
此外,HiFi-GAN 的创新之处在于它的多周期和多尺度判别器(Discriminators),它们像多个听觉专家一样,从不同角度审视生成的音频,确保其周期性模式和整体结构都像真实的音频。这种精密的“评审机制”反过来也要求生成器的输入必须是信息量充足的。

结论

特征
梅尔频谱图 (Mel-Spectrogram)
MFCC
信息保真度
低(有损压缩)
适用任务
音频合成 (Synthesis)
音频识别 (Recognition)
作为 HiFi-GAN 输入
正确选择 ✅
错误选择 ❌
预期结果
高保真、自然、清晰的音频
低保真、模糊、沉闷、机器人般的声音
总而言之,无论对于经典的 WaveNet 还是现代的 HiFi-GAN,梅尔频谱图都是作为声码器输入的黄金标准。MFCC 则属于语音识别(ASR)领域的专属特征,二者不可混用。
优点
  • 相比较梅尔时频谱图,以更少的数据量描述了时频谱图的信息,前者滤波器个数通常为80,MFCC特征个数通常为39
  • 相比较梅尔时频谱图,特征之间的相关性更低,具有更好的区分性
  • 能提取出表征基频和共振峰的信息,滤去其他无关信息
  • 在基于GMM的声学模型中效果较好
缺点
  • 相比较梅尔时频谱图,计算量更大,因为MFCC是在梅尔时频谱图的基础上得到的
  • 对噪声,尤其是加性噪声,不够鲁棒
  • 人工设计的痕迹太重,导致更大的经验风险
  • 对语音合成无效,因为不存在从MFCC特征到音频信号的逆变换

CosyVoice

notion image
CosyVoice 2 的整体架构可以看作一个三阶段的流水线,它将传统的两阶段 TTS 系统(声学模型 + 声码器)进行了更精细的解耦和优化。这三个核心组件分别是:
  1. 监督语义语音分词器 (Supervised Semantic Speech Tokenizer)
  1. 统一的文本-语音语言模型 (Unified Text-Speech Language Model)
  1. 块感知流匹配模型 (Chunk-aware Flow Matching Model)

统一的文本-语音语言模型 (Unified Text-Speech Language Model)

目标: 这是一个自回归的大语言模型(LLM),它的任务是学习从文本令牌语音令牌的映射关系。它充当了传统 TTS 系统中“声学模型”的角色,但预测的目标不是梅尔频谱图,而是上一步生成的离散语音令牌。
架构 (见 Figure 1b):
  • 模型骨干: 直接使用一个预训练好的文本大语言模型作为骨干(论文中提到使用了 Qwen2.5-0.5B)。这极大地增强了模型的上下文理解能力。
  • 输入:
    • 文本 Y: 用户想要合成的文本,被 BPE 分词器转换成文本令牌。
    • 可选的参考语音 X: 用于零样本语音克隆(Zero-shot TTS)时,参考语音被第一阶段的分词器转换成语音令牌。
  • 工作方式 (自回归生成): 模型以“下一个令牌预测”的方式工作。它接收一段包含文本令牌和(部分)语音令牌的序列,然后预测出下一个语音令牌是什么。
  • 统一流/非流模式 (Unified Streaming/Non-streaming): 这是一个关键设计。通过在训练时构造不同的输入序列格式(见 Figure 2),同一个模型既可以支持一次性生成整个句子的非流模式,也可以支持边接收文本边生成语音的流式模式。
一句话总结: 这个组件是一个“翻译家”,它把人类的文字(文本令牌)翻译成机器能理解的语音密码(语音令牌)。

块感知流匹配模型 (Chunk-aware Flow Matching Model)

目标: 这是流水线的最后一步,扮演了“声码器”(Vocoder)的角色。它的任务是将第二阶段生成的离散语音令牌重新转换成连续的梅尔频谱图,并在这个过程中注入目标说话人的音色
架构 (见 Figure 1c):
  • 模型类型: 一个基于流匹配(Flow Matching)的条件生成模型。Flow Matching 是一种比扩散模型(Diffusion Model)更新、更高效的生成范式。
  • 输入:
    • 语音令牌 μ: 从第二阶段的 LLM 生成。
    • 说话人嵌入 v: 代表目标说话人音色的向量。
    • 可选的参考语音梅尔频谱图: 用于提供更精细的声学细节。
  • 流程:
      1. 上采样: 语音令牌的速率(25 Hz)远低于梅尔频谱图的帧率(论文中是 50 Hz)。因此,首先需要将语音令牌进行上采样以匹配帧率。
      1. 块感知因果 Transformer (Chunk-aware Causal Transformer): 这是一个核心设计。通过使用不同类型的掩码(Mask),如非因果、全因果、块因果掩码,该模型可以在同一个模型内支持低延迟的流式合成和高质量的离线合成
      1. UNet 结构: 模型的核心是一个 Causal Conv-Transformer UNet。它接收一个随机噪声作为起点,并在语音令牌、说话人嵌入等条件的引导下,通过一个常微分方程(ODE)逐步将噪声转换为最终的梅尔频谱图。
一句话总结: 这个组件是一个“渲染器”,它拿着不带音色的语音密码(语音令牌)和一张调色盘(说话人嵌入),最终绘制出一幅详细的音频蓝图(梅尔频谱图)。

流程
好的,我们来梳理一下 CosyVoice 2 在进行**文本转语音(TTS)推理(即生成音频)**时的完整工作流程。这个流程清晰地展示了各个部分的先后顺序以及它们之间的输入和输出关系。
整个流程可以分为四个主要步骤,前三个是 CosyVoice 2 的核心模型,第四个是标准的后处理。

前置条件:准备工作

在开始生成之前,我们需要两样东西:
  1. 要合成的文本 (Text): 例如,"你好,世界!"。
  1. 目标说话人的音色 (Target Speaker Timbre): 这通常通过以下两种方式之一提供:
      • 一个短的参考音频 (.wav):用于零样本语音克隆(Zero-shot In-Context Learning)。
      • 一个说话人ID: 如果模型已经针对某个特定说话人进行了微调(Speaker Fine-Tuning)。

流程一:文本-语音语言模型 (Text-Speech LM)

这是整个生成流程的第一步,负责将文本翻译成不带音色的“语音密码”。
  • 输入:
    • 主要输入: 经过 BPE 分词器处理后的文本令牌 (Text Tokens)
    • 条件输入 (可选,用于零样本克隆):
        1. 参考音频经过第一组件(语音分词器)处理后得到的参考语音令牌 (Reference Speech Tokens)
        1. 参考音频的文本内容,即参考文本令牌 (Reference Text Tokens)模型会将参考文本、参考语音令牌和目标文本组合成一个提示(Prompt),来引导生成。
  • 处理过程:
    • 这个基于 LLM 的模型以自回归的方式工作,即一个接一个地预测令牌。
    • 它根据输入的文本令牌(和可选的参考令牌),逐个生成代表语音内容的离散语义语音令牌
  • 输出:
    • 一个离散的整数序列:语义语音令牌 (Semantic Speech Tokens)。例如,[12, 543, 8, 231, 99, ...]。这个序列只包含语音的“内容”和“韵律”信息,不包含任何特定说话人的音色。

流程二:块感知流匹配模型 (Chunk-aware Flow Matching Model)

这是第二步,负责将“语音密码”渲染成详细的“音频蓝图”,并在这个过程中上色(加入音色)。
  • 输入:
    • 主要输入: 上一步生成的语义语音令牌 (Semantic Speech Tokens)
    • 条件输入 (关键):
        1. 说话人嵌入 (Speaker Embedding v): 这是一个向量,代表了目标说话人的音色。这个向量可以从参考音频中提取,或者是微调时学习到的特定 ID 对应的向量。
        1. 参考语音的梅尔频谱图 (可选): 从参考音频中提取,可以提供更丰富的声学细节。
  • 处理过程:
      1. 模型首先将输入的语义语音令牌进行上采样,以匹配梅尔频谱图的帧率。
      1. 然后,它以一个随机噪声为起点。
      1. 在语义语音令牌和说话人嵌入的共同引导下,模型通过流匹配 (Flow Matching) 过程,迭代地将噪声转换成一个结构化的特征图。
      1. 对于流式合成,这个过程会以“块”(Chunk)为单位进行,从而实现低延迟。
  • 输出:
    • 一个二维的浮点数矩阵:梅尔频谱图 (Mel-Spectrogram)。这幅“图”详细描述了音频在每个时间点的频率能量分布,现在它已经包含了目标说话人的音色。

流程三:声码器 (Vocoder)

这是生成流程的第三步,也是最后一步核心模型处理。它负责将“音频蓝图”变成真正的声音。
  • 输入:
    • 上一步生成的梅尔频谱图 (Mel-Spectrogram)
  • 处理过程:
    • 这是一个预训练好的独立模型(如 HiFi-GAN)。
    • 它通过一系列的卷积和非线性变换,学习如何从梅尔频谱图中推断出缺失的相位信息,并合成出完整的音频波形。
  • 输出:
    • 一个一维的浮点数数组:原始音频波形 (Raw Audio Waveform)

流程四:后处理 (Post-processing)

  • 输入: 原始音频波形。
  • 处理过程: 将浮点数波形保存为标准的音频文件格式。
  • 输出: 最终的 .wav 文件,可以直接播放。

整体流程图

输入:[文本] + [参考音频]
Step 1: Text-Speech LM
  • 输入: 文本令牌, (可选的)参考语音令牌
  • 输出语义语音令牌
Step 2: Flow Matching Model
  • 输入: 语义语音令牌, 说话人嵌入 v
  • 输出梅尔频谱图
Step 3: Vocoder (e.g., HiFi-GAN)
  • 输入: 梅尔频谱图
  • 输出原始音频波形
Step 4: Post-processing
  • 输入: 原始音频波形
  • 输出.wav 文件 (最终结果)
输出:[.wav 文件]

MegaTTS

IndexTTS

notion image
对比
好的,我们来深入分析一下这篇名为 IndexTTS 的论文,看看它的做法与我们之前讨论的 CosyVoice 2 以及其他主流 TTS 模型相比,有哪些关键的不同点和创新之处。
根据论文的描述,IndexTTS 的架构总体上遵循了“声学编码器 + 语言模型 + 声码器”的现代 TTS 范式,但在多个关键模块上做出了自己独特的选择和改进,使其更适合工业级应用
以下是 IndexTTS 的主要不同点:

1. 语音到波形的解码方式:直接解码,而非梅尔频谱图

这是 IndexTTS 与 CosyVoice 2 最根本、最核心的区别
  • CosyVoice 2 (以及大多数现代TTS): 它的流程是 文本 → 语音令牌 → **梅尔频谱图** → 波形。中间会生成一个梅尔频谱图作为详细的“音频蓝图”,然后再由一个独立的声码器(如HiFi-GAN)将其转换为波形。
  • IndexTTS: 它的流程是 文本 → 声学令牌 → **直接生成波形**。它跳过了生成梅尔频谱图这一步。如论文 2.4 节和图 1 所示,它使用了一个名为 BigVGAN2 的解码器,这个解码器直接接收语言模型(LLM)的最后隐藏层状态 (Latent)说话人嵌入作为输入,然后直接重建出最终的音频波形。
这个不同点带来的影响:
  • 更简洁的流水线: 减少了一个独立的模型(Flow Matching)和一个中间表示(梅尔频谱图),架构更简单。
  • 可能更快的推理速度: 省去了生成梅尔频谱图的时间。
  • 流式合成更直接: 因为没有了梅尔频谱图这个需要完整生成的中间产物,实现流式输出可能更直接、更容易。

2. 说话人信息的编码方式:Conformer Perceiver

IndexTTS 在如何“理解”和“编码”参考音频的音色方面,做出了重要的改进。
  • 其他模型:
    • Tortoise/XTTS: 使用一个简单的 Transformer 编码器来将参考音频压缩成几个固定的 latent 向量。
    • CosyVoice: 在第一版中使用了 utterance-level 的说话人嵌入,但在第二版中为了避免信息泄露而移除了。
  • IndexTTS:
    • 它引入了一个基于 Conformer 的 Perceiver 模型作为条件编码器 (Perceiver Conditioner)
    • Conformer 是一种结合了 Transformer 和卷积的网络,被证明在语音任务中非常有效。
    • Perceiver 是一种能处理多种模态、不同长度输入的注意力架构。
这个不同点带来的优势 (如论文 2.3 节所述):
  • 更强的音色捕捉能力: Conformer 能更好地捕捉语音的时间和局部特征,因此音色模仿更像。
  • 推理稳定性高: 保证了每次运行模型时,对同一个参考音频的音色编码是一致的,解决了“speaker shifting”(音色漂移)的问题。
  • 灵活处理多参考音频: 可以输入多个参考音频片段,综合捕捉一个说话人的不同方面,甚至可以融合不同说话人的特征来创造新音色。

3. 对中文场景的特殊优化:字符与拼音混合建模

这是一个非常贴近工业级应用场景的创新,专门为了解决中文多音字和生僻字的发音问题。
  • 通用方法: 大多数模型直接使用 BPE (Byte Pair Encoding) 对文本进行分词,依赖模型从海量数据中自己学习发音,但对多音字和生僻字的可控性较差。
  • IndexTTS:
    • 采用字符和拼音混合建模 (character-pinyin hybrid modeling) 的方法。
    • 在训练时,它会随机地将一部分汉字替换成其对应的带声调的拼音(例如,晕眩 -> 晕 XUAN4)。
    • 在推理时,如果用户发现模型读错了某个多音字,可以直接在输入文本中用拼音来强制纠正发音
这个不同点带来的优势:
  • 发音可控性极强: 为用户提供了一个简单直接的“后门”来修正发音错误,这在实际应用中(如视频配音)非常宝贵。
  • 提升了中文处理的鲁棒性

4. 声学分词器的选择:VQ-VAE (可能经过改进)

论文提到,其“Neural Speech Tokenizer”是基于 VQ-VAE 的。
  • CosyVoice 2: 明确指出使用了更先进的 FSQ (Finite Scalar Quantization),并论证了其在码本利用率上的优势。
  • IndexTTS: 虽然论文也对比分析了 VQ 和 FSQ,但最终选择的似乎是一个参数量较大(50M)的 VQ-VAE。他们可能通过增大模型和数据量(34k小时)的方式,克服了传统 VQ 的“码本崩溃”问题,使其利用率也接近 100%。
这表明,在分词器技术路线上,IndexTTS 选择了对经典 VQ-VAE 进行“力大砖飞”式的优化,而不是像 CosyVoice 2 那样转向 FSQ。

总结:IndexTTS 的核心差异化

特性
IndexTTS
CosyVoice 2 (及其他主流模型)
最终解码方式
直接从 LLM Latent 生成波形 (使用 BigVGAN2)
生成梅尔频谱图,再由独立声码器转波形
音色编码器
Conformer Perceiver (更强、更稳定、更灵活)
简单的 Transformer 或 Speaker Embedding
中文处理
字符+拼音混合建模 (发音高度可控)
主要依赖 BPE,可控性较差
声学分词器
优化的 VQ-VAE
FSQ 或其他
设计哲学
简洁、高效、稳定、可控,非常侧重于工业落地和用户体验。
解耦、精细、模块化,更侧重于学术探索和每个模块的极致性能。
总的来说,IndexTTS 的做法体现了清晰的工程导向。它在保证高质量效果的同时,通过简化流水线、增强可控性和稳定性,打造了一个更适合直接部署到实际产品中的系统。

Chatterbox

📎 参考文章

  1. Wavenet 知乎帖子
  1. Wavenet 论文
  1. Tacotron 知乎贴子
  1. Tacotron2 论文
  1. Nvidia 对 Tacotron2 的开源实现
  1. HiFi-GAN 论文
  1. HiFi-GAN 帖子
  1. CosyVoice
  1. Chatterbox
 
上一篇
折腾记录
下一篇
Matrix Calculus