TTS:MaskGCT & OuteTTS

在过去的一年中,seamless_communication、StyleTTS、VITS、DeepSpeech和Whisper 等项目都在 TTS(文本转语音)技术的进步中发挥了重要作用。但现在,回顾 GitHub,这些项目中的很多都已经沉寂了。

最初,我只对它们的功能有基本的了解,而没有深入研究它们背后的技术概念和机制。这次,受到最近发布的 MaskGCT 和 OutTTS 等开源项目的启发,我决定总结一下 TTS 的基础技术。总体而言,音频生成的质量自去年以来有了显着提高。以前,合成的声音听起来很机械;现在,多亏了 Hertz-dev 等模型,我们可以生成听起来更自然、更像人类的音频。

1、TTS 基础知识

TTS 系统的主要目标是将输入的文本转换为听起来自然的语音。

1.1 传统TTS模型

传统的 TTS 模型(例如 Tacotron 和 WaveNet)通常涉及三个主要步骤:文本分析、声学模型和语音波形生成。

在传统 TTS 系统中,例如使用 Tacotron 声学模型的系统,模型的任务是将文本映射到声谱图(如梅尔声谱图)。声谱图包含丰富的音频特征,可以使用声码器或 WaveNet 转换为最终的语音波形。虽然这种方法达到了准确度,但它的生成过程复杂且计算密集,这限制了实时应用的可行性。

例如,Tacotron 采用显式对齐,使用自回归注意机制来对齐文本和声谱图,确保生成的音频在时间上与文本匹配。但是,这种方法要求在模型训练期间进行精确对齐,否则可能会出现音频和文本不同步的问题。

1.2 离散声学词元TTS模型

最近的 TTS 模型,如 MaskGCT 和 OutTTS,已经放弃了昂贵、复杂的波形合成,而是采用离散声学词元(token)。该模型不是生成大型连续片段,而是将文本输入拆分为离散的单词级token。

这些新兴的 TTS 模型使用量化技术将频谱图或音频特征编码为离散语音词元序列,然后由解码器(通常使用声码器)将其转换为音频信号。这种方法使模型能够更快地生成词元,并且计算需求更低。通过生成词元序列,TTS 系统可以更快地合成语音,而且由于语音标记是离散的,因此更容易调整语速和语调等变量。

此外,这些模型避免了显式对齐机制。它们是非自回归的,无需精确的文本音频对齐即可生成离散的声学词元。MaskGCT 利用掩蔽生成和上下文学习来生成适当时间的标记序列,从而简化对齐需求。另一方面,OutTTS 使用 WavTokenizer 直接生成音频标记,完全绕过对齐步骤。

1.3 自回归 vs. 非自回归

当今的大型 TTS 系统主要分为自回归或非自回归,具体取决于它们在语音生成过程中是否依赖于前几个步骤的输出。

自回归 TTS 系统:

  • 特点:自回归模型以顺序方式生成语音,其中每个输出帧都依赖于前一个输出帧,每次生成一帧。
  • 优点:这种逐帧方法在输出质量和细节方面实现了高精度,使其适合需要高度自然、流畅的语音合成的任务。由于上下文信息是逐步构建的,因此自回归模型通常可以生成听起来更自然的语音。
  • 缺点:自回归方法较慢,因为每个帧都依赖于前一个帧,导致生成时间更长。此外,自回归模型可能会受到“错误传播”的影响,即一个步骤中的错误会影响后续步骤。

非自回归 TTS 系统:

  • 特点:非自回归模型在生成新帧时不依赖于之前的帧。它们可以并行生成整个语音序列,也可以以分层方式一次处理多个帧。
  • 优点:这些模型速度更快,大大减少了生成时间,适合实时应用。由于它们不依赖于逐帧数据,因此可以避免错误传播。
  • 缺点:在质量方面,非自回归模型可能无法达到与自回归模型相同的自然度,因为它们缺乏渐进的上下文依赖性,这有时会影响合成语音的流畅度和自然度。

1.4 零样本 TTS:从几分钟到几秒

TTS 技术最重要的升级之一是从需要 5 分钟到 30 分钟的音频来训练独特的语音特征,发展到只需几秒钟的输入即可实现音频克隆 — 通过零样本 TTS 实现。

较早期的 TTS 模型(如 SOVITS)需要大量个性化音频数据(5 到 30 分钟)才能准确捕捉说话者的声音特征。这是因为这些早期模型依赖大量训练样本来学习特定的声音特征,如音色、音调和口音。

最近的 TTS 模型(如 MaskGCT 和 OuteTTS)只需几秒到几分钟的音频就可以克隆声音。这一飞跃很大程度上归功于自监督学习技术(例如 WavTokenizer 或 VQ-VAE),这些技术允许模型从大量未标记数据中学习一般语音特征,然后使用最少量的个性化数据进行微调。这种预训练和微调方法使模型能够快速适应新声音。现代 TTS 模型也在不同的说话者数据集上进行了预训练,使其更能适应新声音。零样本 TTS 能够以最少的音频样本实现语音克隆,无需长时间的训练。

2、MaskGCT

香港中文大学(深圳)与上海科技公司 MetaApp 合作,最近推出了 MaskGCT,这是一种多功能 TTS(文本转语音)模型,支持语音克隆、风格转换以及跨语言生成和翻译。该项目已集成到上海人工智能研究院的 Amphion 平台中。

MaskGCT 是一个零样本 TTS 系统,即使没有文本和语音之间的严格对齐信息,也可以以非自回归的方式生成高质量的语音输出。该模型分为两个主要阶段运行:

2.1 语义词元生成

在第一阶段,MaskGCT 将输入文本转换为“语义词元”,代表文本的核心内容和含义。通过利用自监督学习 (SSL) 提取这些语义词元,该模型可以从文本中推断出预期含义,而无需预定义的音素级对齐信息。这里的目标是确保最终重建的语音尽可能与原始语音对齐。

文本到语义模型:

  • 目的:模型的第一阶段,将文本转换为表示文本基本含义的语义标记。
  • 实现:使用非自回归掩码生成 Transformer,无需精确的文本到语音对齐。在训练期间,随机语义标记被掩码,帮助模型学习在各种提示条件下生成连贯的语义标记。
  • 架构细节:该模型使用类似于 Llama 的 Transformer 主干,但用双向注意力取代了因果注意力,使其能够使用来自文本的上下文信息。其他优化技术包括门控线性单元 (GLU)、GELU 激活、旋转位置编码和自适应 RMSNorm,所有这些都增强了模型的上下文学习能力。

2.2 声学标记生成

获得语义标记后,模型随后基于它们生成“声学词元”。这些 token 封装了音高、情感和语速等特征,最终成为创建实际音频的基础。这种方法有助于模型在输出中保持一致性和自然性。此阶段的目的是从声学 token 生成波形,确保重现的语音尽可能接近原始语音。

语义到声学模型:

  • 目的:模型的第二阶段,负责将语义 token 转换为声学 token,从而生成自然语音所需的详细声音特征。
  • 实现:这里使用另一个非自回归掩码生成 Transformer,可以更快地生成目标声学 token 序列,并提高语音生成的速度和效率。
  • 详细信息:在生成过程中,该模型依赖于先前生成的语义 token,使用条件生成来重建高质量的语音波形。它还结合了持续时间预测模型来估计生成的语音的总长度,确保输出自然流畅。

2.3 技术优势

  • 无需显式对齐和时长预测:与传统 TTS 系统不同,MaskGCT 不依赖于精确的文本转语音对齐或音素时长预测。这种简化减少了数据要求,并允许模型灵活地适应新的文本和语音组合。
  • 掩蔽预测学习:MaskGCT 采用掩蔽预测机制,在训练期间随机掩蔽部分标记,教会模型在各种条件下重建这些标记。这种方法增强了模型的泛化能力,使其能够生成指定长度的语音内容。
  • 多语言和风格控制:MaskGCT 在多语言和风格生成任务中表现出色,允许调整语速、情感和语长。这种灵活性使 MaskGCT 在跨语言和个性化语音生成方面具有显著优势。

2.4 实际应用

MaskGCT 已应用于多个领域,包括国际流媒体、虚拟助手、有声读物、数字化身、教育和多语言内容创作。它提供情感控制和风格模仿,甚至可以克隆特定的声音(例如动漫人物或名人声音),使其非常适合自然语言对话应用。

3、OuteTTS

最近,Oute AI 推出了一种创新的文本转语音合成方法,称为 OuteTTS-0.1–350M。这种方法利用纯语言建模,不需要外部适配器或复杂的架构,提供了精简的 TTS 解决方案。

基于 LLaMa 架构,OuteTTS-0.1–350M 使用 WavTokenizer 直接生成音频标记,而不像 MaskGCT 的两阶段过程(语义识别、声学标记生成、掩蔽机制、量化和 SSL 模型)。这使得 OuteTTS 成为一个更高效的过程。

该模型支持零样本语音克隆,只需几秒钟的参考音频即可复制新语音。OuteTTS-0.1–350M 针对设备性能进行了优化,并与 llama.cpp 兼容,使其成为实时应用的理想选择。尽管其规模相对较小(3.5 亿个参数),但它的性能可与更大、更复杂的 TTS 系统相媲美。

4、MaskGCT vs. OuteTTS

总体而言,MaskGCT 提供更高的自然度、连贯性和语义理解质量,而 OuteTTS 则注重速度和简单性。

模型架构和复杂性:

  • MaskGCT:使用复杂的两阶段架构,包括“文本到语义模型”和“语义到声学模型”。第一阶段生成语义标记来表示核心文本含义,第二阶段创建特定的声学信息。 MaskGCT 的分层方法依赖于自监督学习 (SSL) 模型(如 W2v-BERT 2.0)和广泛的预处理组件(如 VQ-VAE 和 RVQ),这使其成为一种更复杂的结构,需要更多的计算资源。
  • OuteTTS-0.1–350M:使用基于 LLaMa 的语言模型追求简化的架构,无需额外的适配器或多阶段处理。使用 WavTokenizer,它直接生成音频标记,避免相互依赖的模块并创建更高效​​的流程。这种更轻量的结构非常适合设备上的实时应用程序。

生成方法:

  • MaskGCT:在分阶段的标记序列中使用掩码生成。文本到语义和语义到声学模型都使用非自回归掩码生成 Transformer,可以高效生成指定的语音内容长度。这种掩码学习方法确保了输出的连贯性和自然性,尽管它使训练和推理更加复杂。
  • OuteTTS:直接通过 LLaMa 进行语言建模,跳过掩码和多阶段流程,从而简化 TTS 工作流程。其生成音频标记的方法类似于标准文本序列生成,从而简化了训练和推理,提高了实时性能。

5、OuteTTS 示例代码

如果没有参考说话人文件,系统将自动选择内置说话风格并根据文本“你好,我在工作吗?”生成语音。可配置参数包括温度、重复惩罚和最大长度。

from outetts.v0_1.interface import InterfaceHF, InterfaceGGUF
# Initialize the interface with the Hugging Face model
interface = InterfaceHF("OuteAI/OuteTTS-0.1-350M")
# Or initialize the interface with a GGUF model
# interface = InterfaceGGUF("path/to/model.gguf")
# Generate TTS output
# Without a speaker reference, the model generates speech with random speaker characteristics
output = interface.generate(
    text="Hello, am I working?",
    temperature=0.1,
    repetition_penalty=1.1,
    max_length=4096
)
# Play the generated audio
output.play()
# Save the generated audio to a file
output.save("output.wav")

如果有参考音频文件,则可以使用它来生成特定说话者声音的语音。

# Create a custom speaker from an audio file
speaker = interface.create_speaker(
    "path/to/reference.wav",
    "reference text matching the audio"
)
# Generate TTS with the custom voice
output = interface.generate(
    text="This is a cloned voice speaking",
    speaker=speaker,
    temperature=0.1,
    repetition_penalty=1.1,
    max_length=4096
)

在实际使用中,处理长文本时,较低的温度设置(如 0.1)可能会导致生成的语音出现差异。

6、结束语

通过本文,我们不仅掌握了 TTS 背后的基础技术,还了解了 TTS 系统的最新进展。TTS 应用最热门的领域似乎是海外市场的短篇内容制作,这需要以一致的语音风格进行翻译。展望未来,TTS 可以显著简化电影和电视制作中的配音和剧本叙述工作流程,以及许多其他 AI 增强的可能性。


原文链接:Getting Started with TTS Technology Mechanisms: An Introduction to MaskGCT and OuteTTS

汇智网翻译整理,转载请标明出处