GLM-TTS 完全指南 2025:基于强化学习的革命性零样本语音克隆
🎯 核心亮点(TL;DR)
- 开源卓越:GLM-TTS 在保持高说话人相似度的同时,实现了开源 TTS 模型中最低的字符错误率(0.89)
- 零样本能力:仅需 3-10 秒音频提示即可克隆任何声音,无需微调
- 强化学习增强情感:多奖励强化学习框架相比传统 TTS 系统提供更自然、更富表现力的语音
- 生产就绪:支持流式推理、双语处理(中英文)和音素级发音控制
- 活跃开发:2025 年 12 月 11 日发布,持续更新中,包括 2D Vocos vocoder 和强化学习优化权重
目录
什么是 GLM-TTS?
GLM-TTS(Generative Language Model - Text-to-Speech)是由智谱 AI 的 CogAudio Group 开发的尖端开源文本转语音合成系统。该系统于 2025 年 12 月发布,通过结合大语言模型和强化学习优化,代表了语音克隆技术的重大进步。
核心创新
与在情感表现力方面存在困难的传统 TTS 系统不同,GLM-TTS 引入了多奖励强化学习框架,从多个维度评估生成的语音:
- 音质和自然度
- 说话人相似度
- 情感表达
- 发音准确度(字符错误率)
- 韵律和节奏
💡 关键优势
GLM-TTS 通过强化学习优化实现了 0.89 的字符错误率 - 在开源模型中表现最佳,可与 MiniMax(0.83 CER)等商业系统相媲美。
主要特性和能力
1. 零样本语音克隆
含义:无需训练或微调即可克隆任何说话人的声音
要求:
- 3-10 秒的提示音频
- 无需说话人特定的模型训练
- 适用于任何语音样本
技术方法:
- 使用 CamPlus ONNX 模型提取说话人嵌入
- 基于这些嵌入条件化生成过程
- 在不同文本输入中保持语音特征
2. 强化学习增强的情感控制
系统使用 GRPO(Group Relative Policy Optimization)算法和多个奖励函数:
| 奖励类型 | 目的 | 影响 |
|---|---|---|
| 相似度 | 匹配说话人特征 | 高说话人保真度 |
| CER(字符错误率) | 发音准确度 | 从 1.03 降至 0.89 |
| 情感 | 自然的情感表达 | 更具表现力的语音 |
| 笑声 | 适当的笑声插入 | 增强自然度 |
3. 音素级控制(Phoneme-in)
解决的问题:多音字和生僻字的自动发音歧义
示例:中文字符"行"可以根据上下文发音为 xíng 或 háng
解决方案:混合音素 + 文本输入机制
工作流程:
1. 全局 G2P(字素到音素)转换
2. 多音字的动态字典查找
3. 目标音素替换
4. 混合输入生成
⚠️ 使用场景特异性
音素级控制特别适用于:
- 教育内容和评估
- 有声书制作
- 语言学习应用
- 包含专业术语的技术文档
4. 流式推理支持
- 实时音频生成
- 适用于交互式应用
- 低延迟处理
- 非常适合对话式 AI 和虚拟助手
5. 双语支持
- 主要:中文
- 次要:英语
- 混合文本处理能力
- 两种语言的文本规范化
系统架构详解
GLM-TTS 采用复杂的两阶段架构:
阶段 1:基于 LLM 的 Token 生成
模型:基于 Llama 的架构
输入:文本(可选音素标注)
输出:语音 token 序列
支持的模式:
- 预训练(PRETRAIN)
- 微调(SFT)
- LoRA(低秩适应)
阶段 2:波形合成的 Flow Matching
组件:
- DiT(Diffusion Transformer):将 token 转换为 mel 频谱图
- Vocoder:生成最终音频波形
- Vocos vocoder(当前)
- 2D Vocos vocoder(即将推出)
- Hift vocoder(替代方案)
架构可视化
文本输入 → 前端处理 → LLM(Token 生成)
↓
语音 Token → Flow Matching 模型 → Mel 频谱图
↓
Vocoder → 音频波形输出
[并行路径]
提示音频 → 说话人嵌入提取 → 条件信号
📊 技术规格
- VRAM 需求:推理约 8GB
- 支持的 Python 版本:3.10 - 3.12
- 模型大小:多个组件总计数 GB
- 推理速度:支持实时流式传输
强化学习如何改进 TTS?
传统 TTS 系统通常产生平淡、无情感的语音。GLM-TTS 通过多奖励强化学习框架解决这个问题:
GRPO 训练过程
-
生成阶段
- 模型为同一文本生成多个语音候选
- 每个候选通过完整管道合成
-
奖励计算
- 分布式奖励服务器评估每个候选
- 多个奖励函数并行运行
- Token 级奖励提供细粒度反馈
-
策略优化
- GRPO 算法比较每组内的候选
- 更新 LLM 策略以偏好更高奖励的生成
- 同时平衡多个目标
可衡量的改进
| 指标 | 基础模型 | 强化学习优化 | 改进 |
|---|---|---|---|
| CER | 1.03 | 0.89 | 降低 13.6% |
| 相似度 | 76.1 | 76.4 | 增加 0.3% |
| 表现力 | 基线 | 增强 | 定性 |
✅ 最佳实践
当情感表现力至关重要时,建议在生产环境中使用强化学习优化模型(GLM-TTS_RL),而基础模型可能足以应对简单的叙述任务。
性能基准测试
Seed-TTS-Eval 中文测试集结果
为保持与原始基准的一致性,在不使用音素标志的情况下进行评估:
| 模型 | CER ↓ | SIM ↑ | 开源 | 备注 |
|---|---|---|---|---|
| GLM-TTS_RL | 0.89 | 76.4 | ✅ 是 | 最佳开源 CER |
| VoxCPM | 0.93 | 77.2 | ✅ 是 | 强相似度 |
| GLM-TTS Base | 1.03 | 76.1 | ✅ 是 | 强化学习前基线 |
| IndexTTS2 | 1.03 | 76.5 | ✅ 是 | 相当的 CER |
| DiTAR | 1.02 | 75.3 | ❌ 否 | 闭源 |
| CosyVoice3 | 1.12 | 78.1 | ❌ 否 | 更高相似度 |
| Seed-TTS | 1.12 | 79.6 | ❌ 否 | 最佳相似度 |
| MiniMax | 0.83 | 78.3 | ❌ 否 | 最佳整体 CER |
| F5-TTS | 1.53 | 76.0 | ✅ 是 | 开源替代 |
| CosyVoice2 | 1.38 | 75.7 | ✅ 是 | 开源替代 |
关键发现
- GLM-TTS_RL 在所有开源模型中领先(发音准确度 CER)
- 仅落后最佳商业模型(MiniMax)0.06 分
- 保持有竞争力的说话人相似度分数
- 显著优于其他开源替代方案
安装和快速开始
前置要求
- Python 3.10、3.11 或 3.12
- 推理需要约 8GB VRAM
- 已安装 Git 和 pip
- 推荐使用 CUDA 兼容 GPU(CPU 推理可行但较慢)
步骤 1:克隆仓库
git clone https://github.com/zai-org/GLM-TTS.git
cd GLM-TTS
步骤 2:安装依赖
pip install -r requirements.txt
⚠️ 常见安装问题
Linux 用户可能会遇到 WeTextProcessing/cython/pynini 的问题。解决方案:
# 在 requirements.txt 中注释掉 WeTextProcessing,然后: pip install -r requirements.txt pip install WeTextProcessing pip install soxr
步骤 3:下载预训练模型
选项 A:HuggingFace
mkdir -p ckpt
pip install -U huggingface_hub
huggingface-cli download zai-org/GLM-TTS --local-dir ckpt
选项 B:ModelScope(中国)
mkdir -p ckpt
pip install -U modelscope
modelscope download --model ZhipuAI/GLM-TTS --local_dir ckpt
步骤 4:运行推理
命令行:
python glmtts_inference.py \
--data=example_zh \
--exp_name=_test \
--use_cache
# 添加 --phoneme 标志以进行音素级控制
交互式 Web 界面:
python tools/gradio_app.py
步骤 5(可选):安装强化学习组件
用于训练或高级功能:
cd grpo/modules
git clone https://github.com/s3prl/s3prl
git clone https://github.com/omine-me/LaughterSegmentation
# 将 wavlm_large_finetune.pth 下载到 grpo/ckpt/
使用场景和应用
1. 内容创作
- 有声书制作:音素控制实现准确发音
- 播客生成:自然、富有表现力的叙述
- 视频配音:快速语音克隆以保持角色一致性
2. 教育技术
- 语言学习:准确的发音建模
- 在线学习平台:引人入胜、富有情感的叙述
- 评估工具:发音评估参考
3. 无障碍访问
- 屏幕阅读器:更自然的语音输出
- 辅助沟通:个性化语音合成
- 视障用户的文本转语音
4. 娱乐
- 游戏角色声音:NPC 的零样本语音克隆
- 虚拟网红:一致的语音身份
- 互动叙事:情感语音适应
5. 企业应用
- 客服机器人:自然的对话流程
- IVR 系统:专业的语音合成
- 内部培训材料:一致的叙述
与其他 TTS 模型的比较
GLM-TTS vs. CosyVoice2
| 方面 | GLM-TTS | CosyVoice2 |
|---|---|---|
| CER | 0.89(强化学习)/ 1.03(基础) | 1.38 |
| 架构 | LLM + Flow | 不同方法 |
| 强化学习优化 | ✅ 是 | ❌ 否 |
| 开源 | ✅ 完全 | ✅ 完全 |
| 音素控制 | ✅ 混合输入 | 有限 |
GLM-TTS vs. F5-TTS
| 方面 | GLM-TTS | F5-TTS |
|---|---|---|
| CER | 0.89 | 1.53 |
| 内存使用 | 约 8GB VRAM | 更低(竞争优势) |
| 情感表达 | 强化学习增强 | 标准 |
| 流式传输 | ✅ 是 | ✅ 是 |
| 语言支持 | 中英文 | 不同 |
GLM-TTS vs. 商业模型(Seed-TTS、MiniMax)
GLM-TTS 的优势:
- ✅ 完全开源
- ✅ 可自托管
- ✅ 无 API 成本
- ✅ 隐私控制
- ✅ 可定制
商业模型的优势:
- 略好的 CER(MiniMax:0.83 vs GLM-TTS:0.89)
- 更高的相似度分数(Seed-TTS:79.6 vs GLM-TTS:76.4)
- 托管基础设施
- 无本地硬件要求
💡 决策框架
如果您需要以下功能,请选择 GLM-TTS:
- 对模型的完全控制
- 敏感内容的隐私保护
- 大规模成本节约
- 定制能力
如果您需要以下功能,请选择商业模型:
- 绝对最佳质量
- 零基础设施管理
- 即时部署
常见问题和解决方案
问题 1:Linux 上的安装失败
症状:在 pip install -r requirements.txt 期间出现 WeTextProcessing、cython 或 pynini 错误
解决方案:
# 编辑 requirements.txt 注释掉 WeTextProcessing
pip install -r requirements.txt
pip install WeTextProcessing
pip install soxr
确认可用:使用 conda Python 3.12 的 Linux/WSL
问题 2:在线演示返回 404
症状:无法访问 audio.z.ai 演示链接
状态:演示基础设施尚未部署(截至 2025 年 12 月 11 日)
解决方法:使用本地 Gradio 界面:
python tools/gradio_app.py
问题 3:输出中缩略语被展开
症状:生成的音频中"I'm"变成"I am","don't"变成"do not"
原因:模型训练为展开缩略语以提高清晰度
解决方法:
- 预处理文本以手动展开缩略语
- 或接受这种设计行为(类似于《星际迷航》中的 Data 角色)
问题 4:英语输出带有中文口音
症状:英语语音有明显的中文口音
原因:模型主要在中文数据上训练,英语为次要语言
预期行为:类似于在英语国家生活几年的母语中文使用者
缓解措施:
- 使用英语母语提示音频
- 考虑在英语密集型数据集上进行微调
- 或对口音要求严格的应用使用专门的英语 TTS 模型
问题 5:特殊字符导致输出问题
症状:单个下划线 _ 或其他特殊字符使其余输出混乱
原因:前端文本处理限制
解决方案:
- 预处理文本以删除或替换特殊字符
- 使用
cosyvoice/cli/frontend.py中的文本规范化工具 - 向 GitHub 仓库报告具体情况
问题 6:高 VRAM 使用
症状:需要约 8GB VRAM,限制了可访问性
背景:这是完整模型管道的预期情况
更低 VRAM 的替代方案:
- 使用量化模型(可用时)
- 考虑更轻量的替代方案,如 Kokoro 或 F5-TTS
- 使用 CPU 推理(较慢但可行)
问题 7:HuggingFace 上的可疑文件警告
症状:"此模型有 1 个文件被扫描为可疑" - 在 generator_jit.ckpt 上检测到 pickle 导入
解释:PyTorch pickle 文件可能包含任意代码
状态:团队需要将 pickle 转换为 safetensors 格式
风险缓解:
- 仅从官方来源下载
- 运行前审查代码
- 在隔离环境中使用
- 等待 safetensors 转换
故障排除:仓库中没有流式代码
社区问题:"文档说可以用于实时流式传输。我在仓库中没有看到相关代码。有人知道怎么做吗?"
当前状态:
- 文档中提到了流式功能
flow/flow.py中有实现细节(Streaming Flow 模型)- 尚未提供具体的流式推理示例
建议:
- 查看
flow/flow.py了解流式实现 - 关注 GitHub issues 获取社区解决方案
- 考虑为项目贡献流式示例
🤔 常见问题(FAQ)
Q:GLM-TTS 支持哪些语言?
A:GLM-TTS 主要支持中文,次要支持英语。它可以处理中英文混合文本。对于其他语言,该模型没有原生支持,尽管一些用户尝试使用 espeak-ng 输出 IPA(国际音标)的音素输入。但是,tokenizer 针对拼音(中文音素)进行了优化,因此其他语言的结果可能不可预测。
Q:运行 GLM-TTS 需要多少 VRAM?
A:完整模型管道的推理大约需要 8GB VRAM。这包括:
- 用于 token 生成的 LLM
- 用于 mel 频谱图转换的 Flow 模型
- 用于波形合成的 Vocoder
对于较低 VRAM 的系统,考虑使用 CPU 推理(较慢)或等待量化模型发布。
Q:我可以为特定声音或语言微调 GLM-TTS 吗?
A:可以,该模型支持多种训练模式:
- LoRA(低秩适应):针对特定声音的高效微调
- SFT(监督微调):完整模型微调
- 预训练模式:无需微调直接使用
配置文件在 configs/ 目录中提供。但是,详细的微调教程尚未在文档中提供。
Q:GLM-TTS 与 Elevenlabs 相比如何?
A:质量:Elevenlabs 在整体自然度和情感范围方面仍处于领先地位,但 GLM-TTS 具有竞争力,特别是通过强化学习优化。
语言支持:Elevenlabs 支持 29 种以上语言,而 GLM-TTS 专注于中文和英语。
成本:GLM-TTS 免费且开源;Elevenlabs 是付费服务。
隐私:GLM-TTS 可以自托管以实现完全的数据控制。
定制:GLM-TTS 提供完整的模型访问以进行定制。
Q:GLM-TTS 和 GLM-TTS_RL 有什么区别?
A:
-
GLM-TTS(基础):没有强化学习优化的预训练模型
- CER:1.03
- 相似度:76.1
- 标准情感表现力
-
GLM-TTS_RL:经过多奖励强化学习优化后的同一模型
- CER:0.89(改进 13.6%)
- 相似度:76.4
- 增强的情感表现力和韵律
建议:对于质量至关重要的生产应用,使用 GLM-TTS_RL。
Q:GLM-TTS 适合实时应用吗?
A:是的,GLM-TTS 支持流式推理,适用于:
- 交互式语音助手
- 实时对话系统
- 实时叙述应用
但是,实际延迟取决于硬件能力。有足够的 GPU 资源,可以实现实时性能。
Q:如何控制特定单词的发音?
A:使用 Phoneme-in 机制:
- 启用音素模式:
--phoneme标志 - 使用混合输入格式:混合文本和音素标注
- 在
configs/custom_replace.jsonl中配置自定义发音 - 系统将对标记的单词使用您指定的音素,同时正常处理其余部分
这特别适用于:
- 多音字(具有多种发音的单词)
- 生僻字
- 技术术语
- 专有名词
Q:我可以商业使用 GLM-TTS 吗?
A:该模型是开源的,在 GitHub 和 HuggingFace 上发布。请查看仓库的 LICENSE 文件了解具体条款。一般来说,开源模型允许商业使用,但是:
- 验证许可条款
- 注意仓库中的提示音频示例标记为"仅供研究使用"
- 确保您的使用案例符合任何限制
Q:GLM-TTS 接下来会有什么?
A:根据项目路线图:
- 2D Vocos vocoder 更新(进行中)
- 强化学习优化模型权重(即将推出)
- 可能增加额外的语言支持
- 流式示例的社区贡献
- 改进的文档和教程
Q:我如何为项目做贡献?
A:项目欢迎贡献:
- 在 GitHub 上报告问题
- 提交错误修复或功能的 pull request
- 分享您的使用案例和结果
- 为文档做贡献
- 帮助扩展语言支持
仓库:https://github.com/zai-org/GLM-TTS
社区反响和反馈
积极反应
来自 Reddit r/LocalLLaMA 的讨论:
"你们要发布多少个模型!这太疯狂了,是好的那种疯狂!" - 社区对 ZAI 快速发布节奏的兴奋
"向 GLM 团队致敬,继续加油。" - 对开源贡献的赞赏
关注和请求
- 语言支持:多位用户请求支持中文和英语以外的语言
- 安装复杂性:几位用户花费数小时排查依赖问题
- 文档缺口:最初缺乏清晰的示例和演示
- 模型放弃担忧:社区希望项目保持积极维护,引用了其他被放弃的 TTS 项目
与其他模型的比较
社区成员积极讨论 GLM-TTS 与以下模型的对比:
- Qwen-2.5-Omni:另一个具有 TTS 功能的多模态模型
- Chatterbox:因多语言支持而受到赞扬
- VoxCPM:因 LoRA 微调能力而受到关注
- Kokoro 和 F5-TTS:在内存效率方面进行比较
使用 GLM-TTS 的最佳实践
1. 提示音频选择
✅ 应该做:
- 使用干净、高质量的音频(16kHz 或更高)
- 选择 3-10 秒的清晰语音
- 选择音量一致的音频
- 优先选择单说话人录音
❌ 不应该做:
- 使用有背景噪音的音频
- 使用多说话人录音
- 使用音乐或非语音音频
- 使用高度压缩的音频
2. 文本准备
✅ 应该做:
- 规范化文本(删除特殊字符)
- 使用适当的标点符号以获得韵律
- 展开缩写
- 对歧义单词使用音素标注
❌ 不应该做:
- 包含 markdown 或 HTML 格式
- 使用过多的特殊字符
- 如果需要保留缩略语,则依赖缩略语
- 在一个句子中混合太多语言
3. 性能优化
- 使用缓存:启用
--use_cache标志以避免重新处理 - 批处理:尽可能一起处理多个文本
- GPU 选择:使用 CUDA 兼容 GPU 以获得最佳性能
- 模型选择:简单叙述使用基础模型,表现力内容使用强化学习模型
4. 质量保证
- 听取输出:始终审查生成的音频
- 测试边缘情况:验证数字、日期、缩写的发音
- 比较说话人:使用不同的提示音频测试以找到最佳匹配
- 迭代文本:调整标点和措辞以获得更好的韵律
技术深入:项目结构
理解代码库组织:
GLM-TTS/
├── glmtts_inference.py # 主入口点
├── configs/ # 配置文件
│ ├── spk_prompt_dict.yaml # 说话人提示
│ ├── G2P_*.json # 音素转换
│ └── custom_replace.jsonl # 自定义规则
├── llm/
│ └── glmtts.py # LLM 实现
├── flow/
│ ├── dit.py # Diffusion Transformer
│ ├── flow.py # Streaming Flow 模型
│ └── modules.py # Flow 组件
├── grpo/ # 强化学习
│ ├── grpo_utils.py # GRPO 算法
│ ├── reward_func.py # 奖励函数
│ ├── reward_server.py # 分布式奖励
│ └── train_ds_grpo.py # 训练脚本
├── cosyvoice/
│ └── cli/frontend.py # 文本/音频预处理
├── frontend/
│ ├── campplus.onnx # 说话人嵌入
│ └── cosyvoice_frontend.yaml # 前端配置
└── tools/
├── gradio_app.py # Web 界面
└── ffmpeg_speech_control.py # 音频处理
要探索的关键组件
- 推理定制:
glmtts_inference.py - 音素控制:
utils/glm_g2p.py和configs/G2P_*.json - 强化学习训练:
grpo/train_ds_grpo.py - 前端修改:
cosyvoice/cli/frontend.py - 流式传输:
flow/flow.py
结论和建议
关键要点
- GLM-TTS 为开源 TTS 树立了新标准,其 0.89 CER 优于所有其他开源替代方案
- 强化学习在质量指标和情感表现力方面都产生了可衡量的差异
- 零样本语音克隆有效工作,仅需 3-10 秒的提示音频
- 项目正在积极开发中,拥有清晰的路线图和响应迅速的社区
谁应该使用 GLM-TTS?
理想用户:
- 构建中文或英文语音应用的开发者
- 需要高质量语音合成的内容创作者
- 探索 TTS 和强化学习技术的研究人员
- 需要自托管、保护隐私的 TTS 的组织
- 发音准确度至关重要的项目
考虑替代方案的情况:
- 需要支持中文/英文以外的语言
- VRAM 非常有限(<8GB)
- 需要绝对最佳质量(考虑商业选项)
- 需要更成熟、文档更完善的解决方案
下一步
- 试用演示:本地安装并使用您的用例进行测试
- 加入社区:关注 GitHub 仓库以获取更新
- 试验强化学习模型:比较基础版本和强化学习优化版本
- 探索音素控制:测试您领域的发音准确度
- 回馈贡献:分享您的发现、报告问题或提交改进
资源
- GitHub 仓库:https://github.com/zai-org/GLM-TTS
- HuggingFace 模型:https://huggingface.co/zai-org/GLM-TTS
- ModelScope(中国):https://modelscope.cn/models/ZhipuAI/GLM-TTS
- 官方演示(即将推出):https://audio.z.ai/
- 社区讨论:Reddit 上的 r/LocalLLaMA
引用
如果您在研究或项目中使用 GLM-TTS,请引用:
@misc{glmtts2025,
title={GLM-TTS: Controllable & Emotion-Expressive Zero-shot TTS with Multi-Reward Reinforcement Learning},
author={CogAudio Group Members},
year={2025},
publisher={Zhipu AI Inc}
}
最后更新:2025 年 12 月 11 日
模型版本:GLM-TTS v1.0(基础版和强化学习优化版)
状态:积极开发中,即将推出 2D Vocos vocoder 更新
💡 保持更新
为 GitHub 仓库加星以接收有关新版本的通知,包括即将推出的强化学习优化权重和 2D Vocos vocoder 改进。
浙公网安备 33010602011771号