GPT-SoVITS:57.5K+ 星标
GPT-SoVITS(GSV)是一款具备零样本能力的少样本声音克隆与 TTS 工具,支持 ComfyUI、RVC 和 MeloTTS 集成。涵盖 Docker 部署、语音训练、API 配置和生产环境加固。
- ⭐ 33
- MIT
- 更新于 2026-05-19
Promptfoo:测试、评估并对你的 LLM 提示词进行红队测试 • Headroom:将 LLM 输入压缩 60-95%
用 5 秒音频克隆任意声音。用 1 分钟数据微调。20 分钟内部署到生产环境。本指南将带你走完完整的搭建流程。
简介 #
过去,搭建一条语音克隆流水线需要录音棚、数周的数据收集,以及六位数的预算。到了 2026 年,一个拥有 57,500 多个 GitHub star 的开源仓库改变了这个局面。GPT-SoVITS 让开发者能从 5 秒的样本中克隆声音,并仅用 1 分钟的训练数据就能微调出生产级质量的 TTS 模型。无论你是在构建有声书工具、游戏角色配音,还是实时语音智能体,本指南都覆盖了完整的生产部署路径——从首次安装到加固后的 API 服务。如果你正在寻找一份能够大规模落地的 gpt-sovits 教程 或 语音克隆搭建方案,这就是你需要的参考资料。我们还会详细介绍 AI 语音合成,并在下文提供一份详细的 gpt-sovits 与 coqui 对比表。
GPT-SoVITS 是什么? #
GPT-SoVITS 是一个少样本语音转换与文本转语音(TTS)框架,它将基于 GPT 的语义 token 预测器与 SoVITS(通过 VITS 实现语音合成)神经声码器结合在一起。它由维护者 RVC-Boss 以 MIT 许可证发布,已吸引了 96 位以上的贡献者,支持零样本推理(5 秒参考音频)、少样本微调(1 分钟)以及英语、日语、韩语、粤语和中文之间的跨语言合成。最新的 v4 版本修复了金属感伪影问题,并输出原生 48kHz 音频。
GPT-SoVITS 的工作原理 #
架构概览 #
GPT-SoVITS 使用一个两阶段流水线,将语言理解与音频波形生成分离开来:
Text Input → BERT Text Encoder → GPT Model (330M params) → Semantic Tokens
↓
Reference Audio → HuBERT Encoder → SoVITS Model (77M params) → Vocoder → 48kHz Audio
第一阶段 — GPT(文本到语义): 一个 3.3 亿参数的 GPT 模型将音素序列转换为离散的语义 token。BERT 嵌入为准确的发音和韵律预测提供语言上下文。
第二阶段 — SoVITS(语义到语音): 一个 7700 万参数的 SoVITS 模块将语义 token 转换为音频波形。它使用基于 GAN 的生成器,配合一个用于双向潜在空间映射的流网络,并以经 HuBERT 提取的参考音频嵌入作为条件。
核心组件 #
| Component | Purpose | Parameters |
|---|---|---|
| GPT Model | Semantic token prediction | 330M |
| SoVITS Generator | Waveform synthesis | 77M |
| BERT Text Encoder | Linguistic feature extraction | Shared with GPT |
| HuBERT Encoder | Reference audio feature extraction | Pre-trained |
| Residual Vector Quantizer | Token discretization | Part of SoVITS |
| BigVGAN Vocoder | Final audio upsampling | Pre-trained |
版本演进 #
| Version | Key Improvement | Training Data |
|---|---|---|
| V1 | Initial release | 2,000 hours |
| V2 | +Korean, +Cantonese, optimized frontend | 5,000 hours |
| V3 | Higher timbre similarity, LoRA support | 7,000 hours |
| V4 | Fixed metallic artifacts, native 48kHz output | 7,000 hours |
| V2Pro | Best speed/quality tradeoff (0.014 RTF on RTX 4090) | 5,000+ hours |

流水线数据流 #
完整的训练与推理流水线遵循以下流程:
Raw Audio → UVR5 Separation → Audio Slicer → ASR Transcription → Text Labeling
↓
Pretrained GPT + SoVITS ← Fine-tuning (1 min data) ← Formatted Dataset
↓
Inference: Reference Audio + Text → GPT (Semantic Tokens) → SoVITS → 48kHz Audio

安装与配置 #
硬件要求 #
| Component | Minimum | Recommended |
|---|---|---|
| GPU | NVIDIA GTX 1060 (6GB) | RTX 4060 Ti or better |
| VRAM | 6 GB | 8+ GB (fp16) |
| RAM | 16 GB | 32 GB |
| Storage | 20 GB SSD | 50 GB NVMe |
方式 A:Conda 安装(Linux / macOS) #
# Step 1: Create and activate environment
conda create -n GPTSoVits python=3.10 -y
conda activate GPTSoVits
# Step 2: Install FFmpeg
conda install ffmpeg -y
# Step 3: Clone repository
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
# Step 4: Install dependencies
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt
方式 B:Windows 集成包 #
# Download the integrated package from HuggingFace
# Extract and run:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 -Device CU126 -Source HF
方式 C:Docker 部署(生产环境推荐) #
# Clone and enter project directory
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
# Pull latest code before building
git pull origin main
# Build Docker image (CUDA 12.8, full version)
bash docker_build.sh --cuda 12.8
# Or use pre-built images from Docker Hub
docker compose run --service-ports GPT-SoVITS-CU128
Docker Compose 配置 #
# docker-compose.override.yaml for production
services:
GPT-SoVITS-CU128:
shm_size: '16g'
environment:
- is_half=true
ports:
- "9874:9874"
- "9880:9880"
volumes:
- ./models:/workspace/models
- ./outputs:/workspace/outputs
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
预训练模型配置 #
# Download pretrained models (run once)
mkdir -p GPT_SoVITS/pretrained_models
# Download from HuggingFace (auto-download via install.sh)
# Or manually for v4:
# s2v4.pth, vocoder.pth → GPT_SoVITS/pretrained_models/gsv-v4-pretrained/
# Download G2PW model for Chinese TTS
# Unzip G2PWModel.zip and place in: GPT_SoVITS/text/G2PWModel/
# Download UVR5 weights for voice separation
# Place in: tools/uvr5/uvr5_weights/
启动 WebUI #
# Standard launch (defaults to port 9874)
python webui.py
# Specify language explicitly
python webui.py en
# Launch inference-only API server
python api_v2.py
与主流工具集成 #
与 ComfyUI 集成 #
GPT-SoVITS 的 ComfyUI 节点让语音生成可以嵌入到可视化工作流中:
# Install ComfyUI-GPT-SoVITS nodes
cd ComfyUI/custom_nodes
git clone https://github.com/yaolidi/ComfyUI-GPT-SoVITS.git
# Install dependencies
pip install -r ComfyUI-GPT-SoVITS/requirements.txt
# Place your trained .pth and .ckpt models in:
# ComfyUI/models/GPT-SoVITS/
该节点将 GPT-SoVITS 推理封装为一个 ComfyUI 节点,提供参考音频、文本和模型选择等输入项。
与 RVC(基于检索的语音转换)集成 #
RVC 与 GPT-SoVITS 共享同一套生态。实时语音转换用 RVC,高质量 TTS 用 GPT-SoVITS:
# Pipeline: GPT-SoVITS TTS → RVC Voice Conversion
import requests
import subprocess
# Step 1: Generate speech with GPT-SoVITS API
tts_payload = {
"text": "Hello, this is a cloned voice speaking.",
"text_lang": "en",
"ref_audio_path": "/path/to/reference.wav",
"prompt_text": "Reference transcript text",
"prompt_lang": "en",
"media_type": "wav"
}
response = requests.post("http://localhost:9880/tts", json=tts_payload)
with open("tts_output.wav", "wb") as f:
f.write(response.content)
# Step 2: Convert through RVC (optional real-time VC)
rvc_cmd = [
"python", "RVC/infer_cli.py",
"--input", "tts_output.wav",
"--model", "models/rvc_model.pth",
"--output", "final_output.wav"
]
subprocess.run(rvc_cmd)
与 MeloTTS 集成 #
MeloTTS 在 GPT-SoVITS 合成之前处理多语言文本预处理:
from melo.api import TTS
import requests
# Step 1: Preprocess text with MeloTTS for phonemes
tts_model = TTS(language="EN", device="auto")
phonemes = tts_model.text_to_phone("Hello world")
# Step 2: Feed processed text to GPT-SoVITS
response = requests.post("http://localhost:9880/tts", json={
"text": phonemes,
"text_lang": "en",
"ref_audio_path": "/path/to/ref.wav",
"prompt_text": "Original prompt",
"prompt_lang": "en"
})
REST API 集成 #
内置的 api_v2.py 提供了适合生产环境使用的完整 REST API:
# Start the API server
python api_v2.py -a 0.0.0.0 -p 9880
# Check API documentation at http://localhost:9880/docs
# Python client example
import requests
def synthesize(text, ref_audio, prompt_text, output_path):
payload = {
"text": text,
"text_lang": "en",
"ref_audio_path": ref_audio,
"prompt_text": prompt_text,
"prompt_lang": "en",
"top_k": 15,
"top_p": 1.0,
"temperature": 1.0,
"speed_factor": 1.0,
"media_type": "wav"
}
response = requests.post(
"http://localhost:9880/tts",
json=payload,
timeout=60
)
if response.status_code == 200:
with open(output_path, "wb") as f:
f.write(response.content)
return True
return False
# Usage
synthesize(
"Deploying voice cloning at production scale is now trivial.",
"/voices/speaker_ref.wav",
"This is the reference transcription.",
"/output/cloned.wav"
)
OpenAI 兼容 API 封装 #
# Use the community OpenAI-compatible wrapper
git clone https://github.com/enihsyou/GPT-SoVITS-2-OpenAI.git
cd GPT-SoVITS-2-OpenAI
cp .env.example .env
cp config.yaml.example config.yaml
# Set BACKEND_URL to your GPT-SoVITS API
# BACKEND_URL=http://host.docker.internal:9880
docker compose up -d
# Now serves at http://localhost:5000/v1/audio/speech
基准测试 / 实际应用场景 #
推理速度基准 #
| Hardware | Version | RTF (Real-Time Factor) | 1400 Words Inference Time |
|---|---|---|---|
| RTX 4090 | V2 ProPlus | 0.014 | 3.36s |
| RTX 4060 Ti | V2 ProPlus | 0.028 | ~7s |
| Apple M4 (CPU) | V2 ProPlus | 0.526 | ~120s |
| NVIDIA H200 (half) | V2 ProPlus | <0.01 | <2s |
| RTX 4090 | XTTS v2 | 0.18 | ~40s |
| RTX 4090 | Bark | 0.85 | ~200s |
RTF < 1 意味着生成速度快于实时播放。GPT-SoVITS V2 ProPlus 在 RTX 4090 上能在 3.36 秒内生成 4 分钟的语音——比实时快 70 倍以上。
语音质量基准 #
| Model | MOS (Mean Opinion Score) | Training Data Required | Parameters |
|---|---|---|---|
| Human Speech | 4.5+ | N/A | N/A |
| GPT-SoVITS V4 | ~4.0 (estimated) | 5s zero-shot / 1min fine-tune | 407M total |
| XTTS v2 | 4.0 | 6s reference | 467M |
| Bark | 3.7 | Speaker prompt | 900M |
| F5-TTS | 4.1 | 5-15s reference | 336M |
生产环境应用场景 #
有声书平台:从 1 分钟的样本中克隆播讲人的声音。在单块 GPU 上,30 分钟内生成一本 10 小时的有声书。
游戏开发:使用同一个语音参考,将角色配音本地化为 5 种语言。跨语言支持能在不同语言之间保留说话人的音色特征。
语音智能体:为客服机器人部署实时语音响应。消费级 GPU 上 0.014 的 RTF 意味着短回复能实现亚秒级延迟。
无障碍工具:为用户生成个性化的屏幕阅读器语音。MIT 许可证允许无限制的商业部署。
内容创作:批量生产视频内容的配音。API 集成让流水线可以结合 ffmpeg 后处理实现自动化。
训练耗时基准 #
| Dataset Size | GPU | Steps | Training Time (SoVITS) | Training Time (GPT) |
|---|---|---|---|---|
| 1 minute | RTX 4090 | 300 | ~5 min | ~10 min |
| 5 minutes | RTX 4090 | 300 | ~8 min | ~15 min |
| 10 minutes | RTX 4090 | 300 | ~12 min | ~20 min |
| 1 minute | RTX 4060 Ti | 300 | ~12 min | ~25 min |

进阶用法 / 生产环境加固 #
GPU 显存优化 #
# Enable half-precision (fp16) for 50% VRAM reduction
export is_half=true
# For 6GB VRAM cards, use CPU offloading for text encoder
python webui.py --device cuda --half_precision --offload_text_encoder
# Use CPU inference version for low-VRAM setups
git clone https://github.com/baicai-1145/GPT-SoVITS-CPUFast.git
面向边缘部署的模型量化 #
# Export to ONNX for faster inference
python GPT_SoVITS/onnx_export.py \
--gpt_model GPT_SoVITS/GPT_weights/your_model.ckpt \
--sovits_model GPT_SoVITS/SoVITS_weights/your_model.pth \
--output_dir ./onnx_models/
# TensorRT optimization for NVIDIA deployment
/usr/src/tensorrt/bin/trtexec \
--onnx=./onnx_models/gpt_model.onnx \
--saveEngine=./trt_models/gpt_model.trt \
--fp16
API 限流与监控 #
# api_v2.py production wrapper with rate limiting
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import asyncio
from collections import defaultdict
import time
app = FastAPI()
rate_limits = defaultdict(list)
@app.middleware("http")
async def rate_limit(request, call_next):
client = request.client.host
now = time.time()
rate_limits[client] = [t for t in rate_limits[client] if now - t < 60]
if len(rate_limits[client]) >= 10: # 10 req/min
raise HTTPException(429, "Rate limit exceeded")
rate_limits[client].append(now)
return await call_next(request)
# Add CORS for web clients
app.add_middleware(
CORSMiddleware,
allow_origins=["https://yourdomain.com"],
allow_methods=["POST"],
allow_headers=["*"],
)
批处理流水线 #
#!/bin/bash
# batch_synthesize.sh — process text files in bulk
INPUT_DIR="./texts/"
REF_AUDIO="./references/narrator.wav"
REF_TEXT="The quick brown fox jumps over the lazy dog."
OUTPUT_DIR="./outputs/"
mkdir -p "$OUTPUT_DIR"
for txt_file in "$INPUT_DIR"/*.txt; do
filename=$(basename "$txt_file" .txt)
curl -X POST http://localhost:9880/tts \
-H "Content-Type: application/json" \
-d "{
\"text\": $(jq -Rs . < "$txt_file"),
\"text_lang\": \"en\",
\"ref_audio_path\": \"$REF_AUDIO\",
\"prompt_text\": \"$REF_TEXT\",
\"prompt_lang\": \"en\",
\"media_type\": \"wav\"
}" \
--output "$OUTPUT_DIR/${filename}.wav"
echo "Generated: $OUTPUT_DIR/${filename}.wav"
done
生产环境安全清单 #
- API 鉴权:内置 API 没有身份验证机制。请将其放在带有 API key 验证的 nginx 反向代理之后。
- 输入净化:校验
ref_audio_path,防止路径遍历攻击。 - 资源限制:设置
ulimit和 Docker 内存限制,防止 OOM 崩溃。 - 模型访问控制:将训练好的模型存放在权限受限的独立卷中。
- HTTPS 终结:使用反向代理来处理 TLS——绝不要将 API 服务器直接暴露到公网。
# nginx reverse proxy configuration
server {
listen 443 ssl;
server_name tts.yourdomain.com;
ssl_certificate /etc/ssl/certs/tts.crt;
ssl_certificate_key /etc/ssl/private/tts.key;
location / {
auth_request /auth;
proxy_pass http://127.0.0.1:9880;
proxy_set_header Host $host;
client_max_body_size 50M;
}
location = /auth {
internal;
proxy_pass http://127.0.0.1:5000/verify;
proxy_pass_request_body off;
}
}
与其他方案的对比 #
| Feature | GPT-SoVITS | Coqui XTTS v2 | Bark | F5-TTS |
|---|---|---|---|---|
| License | MIT (commercial OK) | CPML (non-commercial) | MIT (commercial OK) | CC-BY-NC 4.0 |
| Stars | 57,500+ | 4,200+ | 37,000+ | 10,800+ |
| Parameters | 407M (GPT+SoVITS) | 467M | 900M | 336M |
| Zero-shot Cloning | 5-second reference | 6-second reference | Speaker prompt | 5-15s reference |
| Few-shot Fine-tuning | 1 minute | 3-10 minutes | Not supported | Limited |
| RTF (RTX 4090) | 0.014 | 0.18 | 0.85 | 0.14 |
| MOS Score | ~4.0 | 4.0 | 3.7 | 4.1 |
| Languages | EN, JA, KO, ZH, Cantonese | 17 languages | ~20 languages | EN, ZH |
| VRAM Required | 6-8 GB | ~4 GB | ~6 GB | ~4 GB |
| Cross-lingual | Yes | Yes | Limited | Yes |
| WebUI Tools | Full pipeline (UVR5, ASR, slicing) | Minimal | None | Minimal |
| Community Size | Very large (96+ contributors) | Medium | Large | Growing |
该如何选择:
- GPT-SoVITS:数据需求最少、整体最均衡的声音克隆方案。MIT 许可证允许商业使用,内置完整的 WebUI 工具链。
- XTTS v2:适合快速原型验证,但 CPML 许可证禁止商业部署。
- Bark:适合创意类音频(音乐、音效、笑声)。速度较慢,但表现力范围更广。
- F5-TTS:学术表现出色,但非商业许可证限制了生产环境的使用。
局限性 / 诚实评估 #
以下场景 GPT-SoVITS 并不擅长:
低于 100ms 的实时流式传输:该模型需要先通过 HuBERT 处理参考音频并生成语义 token,然后再进行声码化。消费级硬件上无法实现低于 100ms 的流式传输。
不借助 RVC 的歌声合成:虽然 GPT-SoVITS 能处理口语文本,但高质量的歌声克隆需要搭配 RVC,或使用 DiffSinger 这类专门的模型。
精确的词级时序控制:与部分商业 TTS API 不同,GPT-SoVITS 没有暴露 SSML 或音素级的时序控制接口,无法实现精确同步。
无 GPU 的生产推理:CPU 推理(在 M4 上 RTF 为 0.526)适合原型验证,但对于生产负载来说太慢了。实际上必须配备 GPU。
无训练数据支持下的情感表现范围:基础模型能捕捉中等程度的情感变化,但要实现夸张的情感演绎(耳语、喊叫、哭泣),需要包含这些情感的训练数据。
Windows 路径处理的边缘情况:这套代码库是以 Linux 为优先设计的。Windows 用户偶尔会在文件路径中遇到非 ASCII 字符导致的路径编码问题。
常见问题 #
Q1:要获得不错的声音克隆效果,我实际需要多少训练数据? 对于零样本推理(无需训练),一段干净的 5 秒参考片段就足够了。对于个性化微调,1 分钟的多样化语音就能获得不错的效果。更多数据(5-10 分钟)能提升较长生成内容的一致性,但边际收益会递减。
Q2:我可以将 GPT-SoVITS 用于商业用途吗? 可以。GPT-SoVITS 以 MIT 许可证发布,允许商业使用、修改和分发。但请注意,部分预训练模型(例如 BigVGAN)可能带有各自的许可条款。请务必核实你实际使用的具体模型权重。
Q3:运行 GPT-SoVITS 最适合的 GPU 是什么? RTX 4060 Ti(8GB)对大多数用户来说是最佳性价比选择——它的推理 RTF 为 0.028,并支持 fp16 微调。对于生产环境服务,RTX 4090(RTF 0.014)或 A100/H100 等服务器级 GPU 能最大化吞吐量。避免使用显存低于 6GB 的显卡。
Q4:如何在不同模型版本(V2、V3、V4)之间切换?
版本可以通过 WebUI 下拉菜单或 API 配置来选择。要使用更新的版本,用 git pull 更新代码库,从 HuggingFace 下载对应的预训练模型,并将其放入 GPT_SoVITS/pretrained_models/。tts_infer.yaml 文件控制版本选择。
Q5:为什么我生成的语音听起来带有金属感或发闷? 这是 V3 版本中一个已知问题,由非整数倍上采样导致。升级到 V4 即可修复金属感伪影问题,并输出原生 48kHz 音频。同时也要确认你的参考音频是干净的——背景噪音和压缩伪影会传导到输出结果中。
Q6:如何在负载均衡器后面部署 GPT-SoVITS? 在 nginx 或 HAProxy 后面运行多个 API 实例。每个实例应绑定到不同端口。使用共享网络卷来存放模型。若要实现自动扩缩容,可用 Kubernetes 容器化部署,并使用 GPU 节点池。
Q7:我可以不用 Docker 运行 GPT-SoVITS 吗?
可以。Conda 安装方式完全受支持。确保已安装 FFmpeg,并且 requirements.txt 中的所有 Python 依赖都已满足。WebUI 和 API 在 Docker 之外的表现是一致的。
结论 #
GPT-SoVITS 以极低的数据需求、MIT 许可证以及成熟的部署生态,交付了生产级的声音克隆能力。消费级 GPU 上 0.014 的 RTF 让实时应用变得可行,而完整的 WebUI 工具链也降低了新手的入门门槛。对于 2026 年正在构建语音产品的团队来说,这是目前最实用的开源基础方案。
今天就能落地的行动清单:
- 克隆
https://github.com/RVC-Boss/GPT-SoVITS并运行 Docker 配置 - 下载一个预训练模型(建议从速度最佳的 V2 ProPlus 开始)
- 录制一段 5 秒的参考音频,并通过 WebUI 测试零样本推理
- 用你自己的鉴权层封装
api_v2.py接口 - 加入 dibi8.com Telegram 群组,获取部署支持并参与社区讨论
推荐的托管与基础设施 #
在将上述任何工具部署到生产环境之前,你都需要可靠的基础设施。以下是 dibi8 实际在用并推荐的两个选项:
- DigitalOcean — 覆盖 14 个以上全球区域,60 天内 200 美元免费额度。是运行开源 AI 工具的独立开发者的默认之选。
- HTStack — 从中国大陆访问延迟低的香港 VPS。这与托管 dibi8.com 的 IDC 是同一家——经过生产环境的实战检验。
附属链接——不会给你增加任何费用,同时也帮助维持 dibi8.com 的运营。
参考资料与延伸阅读 #
- GPT-SoVITS GitHub 仓库
- GPT-SoVITS Docker Hub 镜像
- GPT-SoVITS HuggingFace 演示
- GPT-SoVITS 用户指南(英文)
- Coqui XTTS v2 仓库
- Bark (Suno) 仓库
- F5-TTS 仓库
- 开源 TTS 对比指南
- GPT-SoVITS DeepWiki 架构指南
- GPT-SoVITS v3 技术论文参考
💬 留言讨论