TangYuGe GPT-SoVITS v2ProPlus(唐语歌语音合成模型)
English summary. A Chinese text-to-speech model of the character Tang Yuge (唐语歌) from the visual novel Sparkling Memories (夏日花火), fine-tuned from the official GPT-SoVITS v2ProPlus base models. This repository is self-contained: it ships the fine-tuned GPT and SoVITS weights, the auxiliary pretrained models required for inference (BERT, HuBERT, speaker verification, G2PW, language identification), the official GPT-SoVITS base models for anyone who wants to continue training, 19 scene reference clips with their prompt texts, ready-to-use profiles and scripts. Clone GPT-SoVITS at the verified commit, install its Python dependencies, run scripts/install_pretrained.py, and you can synthesize speech. Chinese only.
本仓库是基于 GPT-SoVITS v2ProPlus 底模微调的唐语歌(《夏日花火》角色)中文语音合成模型,并附带推理所需的辅助模型,以及供继续训练使用的官方底模。下载本仓库、准备好 GPT-SoVITS 运行环境后即可直接使用。
旧版本(GPT-SoVITS v2Pro 微调)见 shiqianyan/TangYuGe-GPT-SoVITS-v2Pro。本版本在相同训练数据上改用 v2ProPlus 底模,背景底噪和电音明显更少,推荐优先使用本版本。
模型信息
| 项目 | 内容 |
|---|---|
| 模型类型 | GPT-SoVITS 少样本语音克隆 / 文本转语音(TTS) |
| 底模 | GPT-SoVITS v2ProPlus(s2Gv2ProPlus.pth、s2Dv2ProPlus.pth)与 GPT 底模 s1v3.ckpt(随包附带,仅继续训练时使用) |
| 微调方式 | 全参数微调(非 LoRA),SoVITS 与 GPT 两个模型分别训练 |
| 语言 | 中文(普通话) |
| 输出 | 32 kHz 单声道 WAV |
| 训练数据 | 角色唐语歌的游戏语音 561 条,约 43 分钟 |
| 推荐采样参数 | top_k=5、top_p=0.8、temperature=0.7,切句方式 cut5 |
| 验证环境 | GPT-SoVITS 提交 ea2d2a8、Python 3.10、PyTorch 2.4.0 + CUDA 12.4、NVIDIA RTX 4060 Laptop 8GB |
适用范围
- 适合:为唐语歌这一角色生成中文台词语音,例如同人创作、游戏 Mod、角色对话机器人、个人学习研究。
- 不适合:非中文文本;需要与原声完全一致的商业配音;任何冒充真实人物、误导他人或违法的用途。生成内容请标注为 AI 合成。
快速开始
1. 准备 GPT-SoVITS
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
git checkout ea2d2a8
按 GPT-SoVITS 官方说明安装 Python 依赖(Python 3.10,推荐 NVIDIA GPU)。本仓库已附带所需预训练模型,不需要再单独下载 GPT-SoVITS 的预训练模型包。
2. 下载本仓库
建议与 GPT-SoVITS 放在同一个父目录下:
cd ..
hf download shiqianyan/TangYuGe-GPT-SoVITS-v2ProPlus --local-dir TangYuGe-GPT-SoVITS-v2ProPlus
<workspace>/
├── GPT-SoVITS/
└── TangYuGe-GPT-SoVITS-v2ProPlus/
3. 安装预训练模型
python TangYuGe-GPT-SoVITS-v2ProPlus/scripts/install_pretrained.py --gptsovits-root GPT-SoVITS
脚本会校验文件哈希,再把 GPT-SoVITS-overlay/ 中的模型复制到 GPT-SoVITS 对应位置(已存在且相同的文件会跳过)。
随包的预训练模型分为两类:
| 类别 | 文件 | 什么时候需要 |
|---|---|---|
| 辅助模型 | chinese-roberta-wwm-ext-large(BERT)、chinese-hubert-base(HuBERT)、sv/(声纹)、text/G2PWModel(多音字)、fast_langdetect(语种识别) |
推理必需 |
| 官方 v2ProPlus 底模 | v2Pro/s2Gv2ProPlus.pth、v2Pro/s2Dv2ProPlus.pth、s1v3.ckpt |
只在继续训练时需要,推理不会加载 |
weights/ 中的微调权重是全参数微调得到的完整推理模型,只做语音合成时不需要底模。GPT-SoVITS 保存微调权重时会去掉只在训练中使用的后验编码器(enc_q)和判别器,因此如果要在本模型基础上继续训练,需要用底模补回这两部分;这也是本仓库附带底模的原因。
4. 生成语音
以下命令均使用 GPT-SoVITS 的 Python 环境执行:
# 默认使用主 profile(严肃、长句)
python TangYuGe-GPT-SoVITS-v2ProPlus/scripts/run_tangyuge_infer.py --text "这里填写要合成的中文文本。" --output output.wav
# 切换场景:换一个 profile
python TangYuGe-GPT-SoVITS-v2ProPlus/scripts/run_tangyuge_infer.py --voice-profile TangYuGe-GPT-SoVITS-v2ProPlus/profiles/morning.yaml --text "早上好呀,今天也要加油哦。" --output morning.wav
若两个目录不在同一父目录下,追加 --gptsovits-root <GPT-SoVITS 路径>。
5. 启动 HTTP 服务(可选)
python TangYuGe-GPT-SoVITS-v2ProPlus/scripts/start_tangyuge_bridge.py
启动后在 127.0.0.1:9881 提供 /tts 接口(后端 GPT-SoVITS api_v2 运行在 9880)。服务会根据文本自动选择场景,也可显式指定:
curl -X POST http://127.0.0.1:9881/tts -H "Content-Type: application/json; charset=utf-8" \
-d '{"text": "早上好呀,今天也要加油哦。", "profile": "morning"}' --output output.wav
请求字段:text(必填)、profile / scene / reference(选择场景)、top_k、top_p、temperature 等。辅助接口:GET /health、GET /profiles、GET /references。
在 GPT-SoVITS WebUI 中使用
安装预训练模型后,在 WebUI 推理页选择:
- GPT 模型:
weights/tangyuge_v2pp-e14.ckpt - SoVITS 模型:
weights/tangyuge_v2pp_e4_s564.pth - 参考音频:
references/中任一文件,参考文本必须使用manifests/references.yaml中与之绑定的prompt_text - 采样参数:
top_k=5、top_p=0.8、temperature=0.7
场景参考音频(reference)
GPT-SoVITS 的语气和节奏很大程度上由参考音频决定。本仓库提供 19 个场景,每个场景是一条原游戏语音及其台词文本,打包为 profiles/*.yaml:
| Profile | 适用文本 |
|---|---|
main_hybrid_mid(默认) |
严肃说明、长台词、情绪稳定的表达 |
morning |
早安、问候、短句寒暄 |
neutral_polite |
普通说明、礼貌回答 |
soft_daily |
温柔、日常、低压交流 |
question_clear / question_firm |
关切式疑问 / 质询式疑问 |
lively_daily / casual_invite |
轻快短句 / 熟人邀请 |
narration_calm |
旁白、叙述 |
apology |
道歉、礼貌退让 |
bright_fireworks / high_brightness_exclaim / exclaim |
明亮期待 / 开心短句 / 惊讶感叹 |
intimate_reassure / romantic_soft |
亲密安抚 / 含蓄恋爱向 |
command_gentle |
提醒、劝阻 |
food_daily / cafeteria_ordering |
饮食日常 / 点单 |
low_energy_discussion |
克制解释、舒缓讨论 |
更换参考音频时必须同时更换对应的参考文本,否则发音与节奏会明显变差。
仓库结构
├── README.md
├── LICENSE # Apache-2.0
├── THIRD_PARTY.md # 第三方预训练模型来源
├── weights/ # 微调权重(fp16)
│ ├── tangyuge_v2pp-e14.ckpt # GPT(文本→语义)
│ └── tangyuge_v2pp_e4_s564.pth # SoVITS(语义→声学)
├── GPT-SoVITS-overlay/ # 推理用辅助模型 + 继续训练用底模,与 GPT-SoVITS 目录同构
│ └── GPT_SoVITS/
│ ├── pretrained_models/ # 底模、BERT、HuBERT、声纹模型、语种识别模型
│ └── text/G2PWModel/ # 中文多音字模型
├── configs/tts_infer_pack.yaml # GPT-SoVITS 推理配置
├── profiles/ # 19 个场景 profile
├── references/ # 19 条场景参考音频
├── samples/ # 合成示例
├── scripts/ # 安装、推理、HTTP 服务脚本
└── manifests/
├── references.yaml # 参考音频与参考文本的绑定清单
├── training_report.md # 训练与评测报告
└── checksums.sha256 # 文件校验清单
训练细节
- 数据:从游戏中提取的唐语歌语音 702 条(约 48.8 分钟),筛选 1–12 秒、有效汉字不少于 6 个的 561 条(约 43.1 分钟)。用语音识别逐条核对过台词文本,未发现标注错误。
- SoVITS:batch size 4,学习率 1e-4,fp16 混合精度,共训练 8 个 epoch,选用第 4 个 epoch(564 步)。
- GPT:batch size 4,学习率 0.002,16-bit 混合精度,共训练 15 个 epoch,选用第 14 个 epoch。
- 选型:在 25 句压力测试集、4 条参考音频、固定随机种子下,对多个 epoch 组合与采样参数做客观评测,再经两轮人工盲听确定最终组合。完整过程见
manifests/training_report.md。
评测
与旧版 v2Pro 微调模型在相同文本、相同参考音频、相同采样参数下对比(配对 bootstrap,95% 置信区间不含 0 视为显著):
| 指标 | 结果 |
|---|---|
| 停顿处底噪电平 | 降低约 5–6 dB(显著),接近原声水平 |
| DNSMOS 背景噪声分(BAK) | +0.21(显著) |
| DNSMOS 整体质量分(OVRL) | +0.12(显著) |
| 音高细碎抖动 | 降低约 9%(显著) |
| 发音准确率(ASR 拼音错误率) | 与旧版无显著差异,约 1–2% |
| 声纹相似度 | 与旧版无显著差异 |
局限性
- 仅支持中文;中英混合文本效果未验证。
- 极短的句子(如“好呀,就这样吧”)偶尔会只读出前半句,这是 GPT-SoVITS 自回归生成的共性问题;保守的采样参数可以减少但不能消除。
- 效果依赖参考音频与参考文本的配对;参考文本写错会导致发音、节奏异常。
- 音色与语气受限于约 43 分钟的训练数据,强烈情绪(大喊、哭泣等)表现有限。
- 在 CPU 上推理时,部分 Intel 混合架构处理器(已在 i7-13650HX 上复现)的 PyTorch oneDNN 多线程卷积会算出错误结果;GPU 推理不受影响。CPU 推理请设置
torch.backends.mkldnn.enabled = False或使用单线程。
许可证
本仓库以 Apache-2.0 许可发布。随包附带的第三方预训练模型的来源说明见 THIRD_PARTY.md。
致谢
引用
@misc{tangyuge_gptsovits_v2proplus,
title = {TangYuGe GPT-SoVITS v2ProPlus},
author = {shiqianyan},
year = {2026},
howpublished = {\url{https://huggingface.co/shiqianyan/TangYuGe-GPT-SoVITS-v2ProPlus}}
}
Model tree for shiqianyan/TangYuGe-GPT-SoVITS-v2ProPlus
Base model
lj1995/GPT-SoVITS