MaskGCT:用一种训练技巧同时解决两个相反的 TTS 难题
自回归 TTS 模型以隐式方式建模时长,这往往会损害鲁棒性,也让你无法真正控制输出究竟持续多久。非自回归模型解决了鲁棒性问题,但过去在训练期间需要显式的文本—语音对齐监督和音素级时长预测——这些额外机制本身也可能损害自然度。MaskGCT 由香港中文大学(深圳)的研究人员开发,并通过 Amphion 工具包发布;它借用了生成建模另一领域的训练方法——先掩码,再预测——旨在同时避开这两个问题。
什么是 MaskGCT?
MaskGCT(Masked Generative Codec Transformer,掩码生成式编解码器 Transformer)是一款完全非自回归、开源的零样本 TTS 模型,于 2024 年 10 月发布,后来发表于 ICLR 2025。它在训练期间无需文本与语音之间的显式对齐信息,也彻底取消了音素级时长预测——这确实有别于典型非自回归 TTS 系统的架构,而不只是调参差异。该模型通过 Amphion 分发;Amphion 是一个面向音频、音乐和语音生成研究的开源工具包。
MaskGCT 的功能优势
- 训练期间无需对齐监督,去掉了大多数非自回归 TTS 系统所依赖的一整类预处理工作和潜在故障点。
- 无需音素级时长预测,避开了一种本身可能给生成语音带来不自然感的机制。
- 可以显式控制总输出时长,让你准确指定生成片段应持续多久——相比仅以隐式方式建模时长的自回归模型,这是一项真正的能力优势。
- 只需 5 秒参考音频即可进行零样本声音克隆,无需针对目标说话人进行额外训练。
- 快速并行生成,文本到语义阶段只需 25 到 50 个推理步骤,而不是按顺序逐个生成 Token。
- 展现出超越核心 TTS 的广泛用途,同一底层系统还被探索用于跨语言配音、声音转换、情绪控制和语音内容编辑。
掩码预测生成的实际工作原理
MaskGCT 的训练方法在概念上类似于文本中的掩码语言建模(可以联想到 BERT),或图像中的掩码生成建模(可以联想到 MaskGIT),只不过这里将其应用于离散语音 Token。训练期间,模型学习根据周围的上下文、条件和提示来预测被掩码的语义或声学 Token。推理期间,它不会按顺序生成 Token,而是通过迭代式并行解码,以指定长度生成完整的 Token 序列——经过多轮处理填入被掩码的位置,而不是一次生成一个 Token。
实际流程分为两个阶段。**文本到语义(T2S)**阶段根据输入文本和提示语义 Token 预测语义 Token;这些语义 Token 由一个 VQ-VAE 提取,该 VQ-VAE 经过专门训练,用于量化语音自监督学习模型的嵌入表示。相较于早期工作常用的 k-means 聚类,这是一个有意为之的选择,因为即使只使用一个码本,它也能尽量减少信息损失。随后,**语义到声学(S2A)**阶段以这些语义 Token 和额外声学提示为条件,预测来自基于 RVQ 的语音编解码器的声学 Token,并在编解码器的多个 Token 层上进行逐层生成,以保留精细的声学细节。
基准测试结果
MaskGCT 使用 Emilia 数据集中 100,000 小时的自然场景语音进行训练,其中英语与中文各占一半。根据报告,在质量、相似度和可懂度方面,它优于参与比较的先前最先进零样本 TTS 系统,并在这些指标上达到了作者所称的人类水平。与一个强大的“自回归 + SoundStorm”基线直接比较时,MaskGCT 在自然度上取得了可衡量的改善(LibriSpeech test-clean 的 CMOS 提升 +0.12,SeedTTS test-en 提升 +0.08,SeedTTS test-zh 提升 +0.37),同时相似度和鲁棒性也更好。它的鲁棒性优势在真正困难的案例中尤其明显——重复词和绕口令正是典型会触发 TTS 幻觉与漏词的问题——这使结果不只停留在最高基准分数上,也具有切实的实用意义。
MaskGCT 入门
- 克隆 Amphion 代码仓库。 运行
git clone https://github.com/open-mmlab/Amphion.git即可获得完整工具包,MaskGCT 是其中一个组件。 - 使用提供的脚本设置环境。
bash ./models/tts/maskgct/env.sh会在更大的 Amphion 仓库中完成 MaskGCT 专用的环境设置。 - 从 Hugging Face 下载预训练检查点。 以
hf_hub_download("amphion/MaskGCT", filename="semantic_codec/model.safetensors")为调用模式,对其余必需组件重复操作,包括声学编解码器的编码器与解码器、T2S 模型以及 S2A 模型(1 层版本和完整版本)。 - 使用
MaskGCT_Inference_Pipeline类进行生成。 用已经加载的语义模型、语义编解码器、编解码器的编码器/解码器、T2S 模型和 S2A 模型实例化该类,然后调用.maskgct_inference(),传入提示音频路径、提示文本、目标文本以及源语言/目标语言代码。 - 需要精确输出时长时,显式设置
target_len。 传入以秒为单位的具体数值,即可直接控制生成长度;将其保留为None时,则会回退到简单的时长估算规则。 - 如果想先以交互方式测试模型,再编写自定义流程脚本,可以尝试 Jupyter notebook、Gradio 界面或 Hugging Face Space 演示。
获得更好结果的技巧
- 只要时长很重要,就有意识地使用
target_len。 这是 MaskGCT 相比自回归模型真正的结构优势之一——任何将精确时长视为硬性约束而非锦上添花的用例(视频旁白、固定时段配音)都应该利用它。 - 用真正困难的文本测试,而不只是干净的句子。 MaskGCT 的鲁棒性优势在重复词和绕口令式内容上表现得最明显,因此用这些内容与其他方案比较,也最能说明它是否适合你的用例。
- 确保参考片段在至少完整 5 秒内保持干净。 克隆质量取决于从该参考中提取的语义和声学 Token,因此时长达到或超过 5 秒的清晰录音,会优于更短或噪声更大的样本。
MaskGCT 与其他非自回归 TTS 模型对比
| MaskGCT | F5-TTS | E2 TTS | |
|---|---|---|---|
| 核心方法 | 掩码预测、两阶段语义/声学 Token | Diffusion Transformer + 流匹配 | 流匹配、扁平 U-Net Transformer |
| 是否需要对齐监督 | 否 | 否 | 否 |
| 显式时长控制 | 支持,通过 target_len 参数 | 无专用时长模型 | 无专用时长模型 |
| 克隆所需参考片段 | 约 5 秒 | 约 5–15 秒 | 相近 |
| 语言 | 6 种(英语、中文、韩语、日语、法语、德语) | 主要面向英语 | 面向英语 |
MaskGCT 的独特定位,是把无需对齐、无需时长预测的训练与真正的显式输出长度控制结合起来——这种组合直接解决了它所处的自回归与典型非自回归两大阵营各自的特定弱点。
常见问题
MaskGCT 名称中的“掩码生成式”是什么意思?
它指的是该模型的掩码预测训练范式,在概念上类似于文本中的掩码语言建模或掩码生成图像模型——模型学习根据周围上下文预测被掩码的 Token,然后在推理时通过迭代式并行解码生成完整序列。
我可以准确控制生成语音的时长吗?
可以。通过 target_len 参数,你可以指定准确的输出时长——自回归模型只以隐式方式建模时长,因此无法直接提供这项能力。
MaskGCT 进行声音克隆需要多少参考音频?
最短只需 5 秒,而且无需针对目标说话人进行额外训练。
MaskGCT 支持哪些语言?
六种:英语、中文、韩语、日语、法语和德语。
MaskGCT 是否已经适合商业或生产用途?
官方项目页面称其用于研究演示——在考虑任何生产部署之前,请务必使用自己的内容进行充分测试,并查阅当前的许可证条款。
从参考声音生成相似语音
若需要目标相近的浏览器工作流,可以使用 Echora 的声音克隆。上传你自己的声音,或已获得明确使用许可的参考录音,输入新文本,即可生成接近参考声音的新语音。