844 字
4 分钟
GPT-SoVITS 本地语音合成完整教程
详细记录GPT-SoVITS本地语音合成模型的部署与使用,涵盖环境配置、模型训练、API调用,以及在项目中的集成方法
2026-03-24
前言
GPT-SoVITS是一款强大的本地语音合成项目,支持零样本声音克隆和少样本训练。本文记录完整的本地部署流程,帮你快速上手AI语音合成技术。
环境要求
硬件
- 显卡:NVIDIA GPU(建议6GB以上显存)
- 内存:16GB RAM
- 硬盘:30GB可用空间
软件
- Python 3.10+
- CUDA 11.8 或 12.1
- cuDNN
安装依赖
创建虚拟环境
conda create -n gptsovits python=3.10conda activate gptsovits安装PyTorch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118克隆项目
git clone https://github.com/RVC-Boss/GPT-SoVITS.gitcd GPT-SoVITS安装依赖
pip install -r requirements.txt预训练模型下载
需要下载的模型
| 模型 | 说明 | 大小 |
|---|---|---|
| GPT-SoVITS模型 | 主模型 | ~1.5GB |
| HuggingFace模型 | 底模 | ~4GB |
| 训练语料(可选) | 参考音色 | 几百MB |
下载地址
模型存放
GPT-SoVITS/├── GPT_SoVITS/│ └── pretrained_models/│ ├── GPT-SoVITS/│ └── huqubert/└── SoVITS/ └── pretrained_models/推理使用
启动WebUI
python webui.py --port 9876 --colab浏览器访问
打开 http://localhost:9876
推理参数
| 参数 | 说明 | 建议值 |
|---|---|---|
| 参考音频 | 克隆音色的源 | 5-30秒 |
| 文本内容 | 要合成的文字 | 避免超长 |
| 语速 | 合成语速 | 1.0正常 |
| 音调 | 音高调整 | 0正常 |
API服务
启动API服务
python API.py --port 9880HTTP调用示例
import requests
# 合成语音url = "http://127.0.0.1:9880/tts"
data = { "text": "你好,欢迎使用GPT-SoVITS语音合成", "text_lang": "zh", "ref_audio_path": "path/to/reference.wav", "prompt_lang": "zh", "prompt_text": "这是一段参考音频的文字内容"}
response = requests.post(url, json=data)
# 保存音频with open("output.wav", "wb") as f: f.write(response.content)返回格式
{ "code": 200, "message": "success", "data": { "audio": "base64编码的音频数据", "duration": 3.5 }}训练自定义音色
数据准备
- 收集目标音色的音频(5-30分钟)
- 音频格式:16bit WAV,16kHz,单声道
- 命名规范:
speaker_name_001.wav
音频预处理
python 3_applyforcevocab.py \ --input_path ./raw/ \ --output_path ./processed/启动训练
# 训练SoVITSpython train_sovits.py \ --data_path ./processed/ \ --model_path ./output/sovits/
# 训练GPTpython train_gpt.py \ --data_path ./processed/ \ --model_path ./output/gpt/训练参数
| 参数 | 说明 | 建议值 |
|---|---|---|
| batch_size | 批量大小 | 显存允许尽量大 |
| learning_rate | 学习率 | 1e-4 |
| epochs | 训练轮数 | 10-20 |
与项目集成
Python集成
import subprocessimport base64import os
class GPTSoVITSClient: def __init__(self, api_url="http://127.0.0.1:9880"): self.api_url = api_url
def generate(self, text, ref_audio, ref_text): import requests with open(ref_audio, "rb") as f: ref_audio_b64 = base64.b64encode(f.read()).decode()
data = { "text": text, "text_lang": "zh", "ref_audio_path": ref_audio, "prompt_lang": "zh", "prompt_text": ref_text }
response = requests.post(self.api_url + "/tts", json=data) result = response.json()
if result["code"] == 200: audio_b64 = result["data"]["audio"] audio_data = base64.b64decode(audio_b64)
output_path = "temp_output.wav" with open(output_path, "wb") as f: f.write(audio_data) return output_path return None游戏引擎集成
在UE5中使用:
// 在OpenClaw或其他项目中调用APIvoid USoVITSManager::GenerateVoice(const FString& Text, const FString& RefAudio){ TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest(); Request->SetURL("http://127.0.0.1:9880/tts"); Request->SetVerb("POST"); Request->SetHeader("Content-Type", "application/json");
TArray<TSharedPtr<FJsonValue>> JsonArray; // ... 构建JSON Request->SetContentAsString(JsonString);
Request->OnProcessRequestComplete().BindUObject(this, &USoVITSManager::OnResponse); Request->ProcessRequest();}常见问题
Q: 显存不足?
A: 降低batch_size,或使用量化模型。
Q: 合成声音不自然?
A: 提供更清晰、时长适中的参考音频(10-20秒为佳)。
Q: 中文发音错误?
A: 使用拼音或带声调的拼音输入。
Q: 如何提升推理速度?
A: 使用TensorRT加速,或降低推理精度。
总结
GPT-SoVITS核心要点:
- 本地部署 — 无需云服务,保护隐私
- 零样本克隆 — 5秒音频即可克隆
- 少样本训练 — 5-30分钟数据定制音色
- API服务 — 方便项目集成
- 游戏应用 — NPC对话、语音播报
本地语音合成让AI应用更灵活可控。
参考资源
🎉 恭喜! 现在你掌握了GPT-SoVITS本地部署与使用!
GPT-SoVITS 本地语音合成完整教程
https://gzhblog.cn/posts/2026-03/2026-03-24-gpt-sovits-tts/ 写作概览
20 篇
文章
2.9万
总字数
2.5h
阅读时长
1,464
均字数
年度发文
2026 20
Unreal相关
Unity相关
写作概览
20 篇
文章
2.9万
总字数
2.5h
阅读时长
1,464
均字数
年度发文
2026 20
Unreal相关
Unity相关