GPT-SoVITS 模型测试笔记
一、模型概述
GPT-SoVITS 是一个开源(MIT License)的少样本语音克隆与文本转语音(TTS)框架,由 RVC-Boss 团队开发维护。
- GitHub : https://github.com/RVC-Boss/GPT-SoVITS
- 模型下载 : https://hf-mirror.com/lj1995/GPT-SoVITS/tree/main
- 核心特点 : 只需要几秒钟到一分钟左右的目标人物语音样本,就能生成高度相似的语音
适用场景
- 语音克隆(少样本,仅需数秒~1分钟原声)
- 个性化 TTS 合成
- 有声书 / 语音助手 / 虚拟主播 音色定制
- 跨语言语音生成
二、模型架构
GPT-SoVITS 采用双模块架构设计,两阶段流水线工作:
文本输入 → [GPT 模块] → 语义 Token → [SoVITS 模块] → 语音输出
2.1 GPT 模块(语义建模)
| 项目 | 说明 |
|---|---|
| 职责 | 理解文本内容,生成语音的"语义中间表示" |
| 参数量 | 约 300M+(基于 Qwen 或类似 LLM 结构) |
| 具体功能 | 学习语音的节奏、停顿、情绪、语速等韵律特征 |
| 输出 | 语义 Token 序列 |
通俗理解:GPT 模块 "决定怎么说"------把文字变成带有语气和节奏的"语音草图"。
2.2 SoVITS 模块(语音合成)
| 项目 | 说明 |
|---|---|
| 职责 | 根据 GPT 输出的语义 Token,合成目标人物音色的波形 |
| 结构 | 基于 SoVITS(Singer-oriented Variational Inference TTS)改进,含 VITS + 音色编码器 |
| 具体功能 | 声学特征预测 + 声码器生成原始波形 |
| 输出 | 原始 PCM 音频 |
通俗理解:SoVITS 模块 "决定是谁在说"------把"语音草图"渲染为特定人物的声音。
2.3 工作流程总结
┌─────────────────┐
│ 输入文本 │
│ (要说的内容) │
└────────┬────────┘
▼
┌──────────────────────────────────────────────────────────────┐
│ GPT 模块(语义建模) │
│ 理解文本 → 学习节奏/停顿/情绪 → 生成语义 Token │
│ "决定怎么说" │
└────────────────────────────┬─────────────────────────────────┘
▼
┌──────────────────────────────────────────────────────────────┐
│ SoVITS 模块(语音合成) │
│ 语义 Token → 声学特征 → 目标音色 → 波形 │
│ "决定是谁在说" │
└────────────────────────────┬─────────────────────────────────┘
▼
┌─────────────────┐
│ 合成语音输出 │
└─────────────────┘
三、硬件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 显存 | 8GB+ | 16GB+(微调/训练需更多) |
| 内存 | 16GB | 32GB |
| 存储 | 10GB | 50GB+(含模型权重) |
| GPU | NVIDIA GTX 1080 / T4 | A10 / A100 / 天数智芯等 |
⚠️ 注意 : MR100 加速卡不支持微调和训练(仅可推理)。
四、环境搭建与部署
4.1 代码下载
bash
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
4.2 Python 环境
推荐 Python 3.9--3.11,使用 conda 或 venv:
bash
conda create -n gptsovits python=3.11
conda activate gptsovits
pip install -r requirements.txt
4.3 启动 WebUI
bash
cd /home/GPT-sovits/GPT-SoVITS-main
python3 webui.py
启动后浏览器打开 http://localhost:9872 即可访问操作界面。
五、模型测试流程(详细步骤)
第 1 步:上传音频 & 人声分离(UVR5)
如果输入音频包含背景噪音、伴奏或混响,建议先使用内置的 UVR5(人声伴奏分离)模块提纯人声。
- 点击 "开启人声分离 WebUI"
- 在 UVR5 界面中:
- 方式一:输入音频所在文件夹路径
- 方式二:点击批量上传音频文件
- 分离完成后,输出文件位于
output/uvr5_opt/目录下:xxx_vocal.wav→ 人声(保留)xxx_instrument.wav→ 伴奏(可删除)
💡 建议: 将不需要的伴奏文件及时删除,避免后续步骤取错文件。
第 2 步:切割音频
将长音频按静音段落切割为短片段,适配模型处理。
- 输入原音频文件夹路径(不支持中文路径)
- 切割输出路径:
output/slicer_opt/ - 观察日志输出
"语音切分已完成"即表示完成
参数调整说明:
| 参数 | 作用 | 调整建议 |
|---|---|---|
min_length |
最小片段长度 | 显存越小,值调小 |
min_interval |
最小间隔时长 | 音频密集时适当调低 |
max_sil_kept |
最大静音保留时长 | 影响句子连贯性,新手建议保持默认 |
第 3 步:语音降噪(可选,谨慎使用)
- 该功能对音质有较大破坏
- 不建议在一般场景下使用
- 如音频底噪严重且无法通过 UVR5 解决,可酌情尝试
第 4 步:语音识别(ASR,自动标注)
为每个切割后的音频片段配上对应的文字标注。
- 使用 AI 自动识别音频中的文字内容
- 输出用于后续训练时的文本-音频对齐
第 5 步:语音文本校对(可选,追求极致音质推荐)
此步骤比较耗时,如果追求极致的合成效果,建议执行:
- 点击 "开启打标 WebUI"
- 输入标注文件的路径(注意:是文件路径,不是文件夹路径)
- 逐条校对 ASR 识别结果,修正错误文字
- 如果不需要极致完美,可以跳过此步骤
第 6 步:训练/微调
在完成数据准备后,可进行模型微调(Fine-tuning)。
第 7 步:推理合成
训练完成后,通过 WebUI 的推理界面:
- 输入或粘贴想要合成的文本
- 选择参考音频(目标人物音色参考)
- 设置参数后点击合成
- 等待模型输出语音文件
六、常见问题与解决方案
6.1 缺少英文词性标注工具
报错现象 : 运行过程中提示 nltk 缺少英文词性标注数据
解决方法:
bash
python3 -c "import nltk; nltk.download('averaged_perceptron_tagger'); nltk.download('punkt'); nltk.download('wordnet')"
6.2 显存不足
现象:OOM(Out of Memory)报错
- 降低
min_length参数值 - 减小
batch_size - 使用更短的参考音频
6.3 音频路径含中文
现象:运行报错,路径识别异常
- 将所有音频文件路径改为纯英文路径
- 文件夹命名不要使用中文
6.4 合成语音音色不匹配
可能原因:
- 参考音频过短(建议 ≥ 10 秒)
- 参考音频含杂音/背景音
- 文本校对不准确
七、参考链接
- GitHub 仓库:https://github.com/RVC-Boss/GPT-SoVITS
- HuggingFace 模型(国内镜像):https://hf-mirror.com/lj1995/GPT-SoVITS/tree/main
- 文档参考:GPT-SoVITS V4 使用教程 - 知乎(88 封私信 / 63 条消息)
八、附注
- 本文档基于有道云笔记《GPT-SoVITS 模型测试》整理,补充了架构说明与参数详解
- 测试日期:2026-06-09
- 笔记大小:931.7 KB(含参考音频等附件)