GPT-SoVITS:57.5K+ 星标

GPT-SoVITS(GSV)是一款具备零样本能力的少样本声音克隆与 TTS 工具,支持 ComfyUI、RVC 和 MeloTTS 集成。涵盖 Docker 部署、语音训练、API 配置和生产环境加固。

  • ⭐ 33
  • MIT
  • 更新于 2026-05-19

📦 资源信息

⭐ GitHub 星标33
🔧 最后维护2026/5/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 提取的参考音频嵌入作为条件。

核心组件 #

ComponentPurposeParameters
GPT ModelSemantic token prediction330M
SoVITS GeneratorWaveform synthesis77M
BERT Text EncoderLinguistic feature extractionShared with GPT
HuBERT EncoderReference audio feature extractionPre-trained
Residual Vector QuantizerToken discretizationPart of SoVITS
BigVGAN VocoderFinal audio upsamplingPre-trained

版本演进 #

VersionKey ImprovementTraining Data
V1Initial release2,000 hours
V2+Korean, +Cantonese, optimized frontend5,000 hours
V3Higher timbre similarity, LoRA support7,000 hours
V4Fixed metallic artifacts, native 48kHz output7,000 hours
V2ProBest speed/quality tradeoff (0.014 RTF on RTX 4090)5,000+ hours

GPT-SoVITS Architecture

流水线数据流 #

完整的训练与推理流水线遵循以下流程:

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

GPT-SoVITS WebUI Interface

安装与配置 #

硬件要求 #

ComponentMinimumRecommended
GPUNVIDIA GTX 1060 (6GB)RTX 4060 Ti or better
VRAM6 GB8+ GB (fp16)
RAM16 GB32 GB
Storage20 GB SSD50 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

基准测试 / 实际应用场景 #

推理速度基准 #

HardwareVersionRTF (Real-Time Factor)1400 Words Inference Time
RTX 4090V2 ProPlus0.0143.36s
RTX 4060 TiV2 ProPlus0.028~7s
Apple M4 (CPU)V2 ProPlus0.526~120s
NVIDIA H200 (half)V2 ProPlus<0.01<2s
RTX 4090XTTS v20.18~40s
RTX 4090Bark0.85~200s

RTF < 1 意味着生成速度快于实时播放。GPT-SoVITS V2 ProPlus 在 RTX 4090 上能在 3.36 秒内生成 4 分钟的语音——比实时快 70 倍以上

语音质量基准 #

ModelMOS (Mean Opinion Score)Training Data RequiredParameters
Human Speech4.5+N/AN/A
GPT-SoVITS V4~4.0 (estimated)5s zero-shot / 1min fine-tune407M total
XTTS v24.06s reference467M
Bark3.7Speaker prompt900M
F5-TTS4.15-15s reference336M

生产环境应用场景 #

  1. 有声书平台:从 1 分钟的样本中克隆播讲人的声音。在单块 GPU 上,30 分钟内生成一本 10 小时的有声书。

  2. 游戏开发:使用同一个语音参考,将角色配音本地化为 5 种语言。跨语言支持能在不同语言之间保留说话人的音色特征。

  3. 语音智能体:为客服机器人部署实时语音响应。消费级 GPU 上 0.014 的 RTF 意味着短回复能实现亚秒级延迟。

  4. 无障碍工具:为用户生成个性化的屏幕阅读器语音。MIT 许可证允许无限制的商业部署。

  5. 内容创作:批量生产视频内容的配音。API 集成让流水线可以结合 ffmpeg 后处理实现自动化。

训练耗时基准 #

Dataset SizeGPUStepsTraining Time (SoVITS)Training Time (GPT)
1 minuteRTX 4090300~5 min~10 min
5 minutesRTX 4090300~8 min~15 min
10 minutesRTX 4090300~12 min~20 min
1 minuteRTX 4060 Ti300~12 min~25 min

GPT-SoVITS HuggingFace Demo Space showing the live inference interface for testing voice cloning online

进阶用法 / 生产环境加固 #

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

生产环境安全清单 #

  1. API 鉴权:内置 API 没有身份验证机制。请将其放在带有 API key 验证的 nginx 反向代理之后。
  2. 输入净化:校验 ref_audio_path,防止路径遍历攻击。
  3. 资源限制:设置 ulimit 和 Docker 内存限制,防止 OOM 崩溃。
  4. 模型访问控制:将训练好的模型存放在权限受限的独立卷中。
  5. 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;
    }
}

与其他方案的对比 #

FeatureGPT-SoVITSCoqui XTTS v2BarkF5-TTS
LicenseMIT (commercial OK)CPML (non-commercial)MIT (commercial OK)CC-BY-NC 4.0
Stars57,500+4,200+37,000+10,800+
Parameters407M (GPT+SoVITS)467M900M336M
Zero-shot Cloning5-second reference6-second referenceSpeaker prompt5-15s reference
Few-shot Fine-tuning1 minute3-10 minutesNot supportedLimited
RTF (RTX 4090)0.0140.180.850.14
MOS Score~4.04.03.74.1
LanguagesEN, JA, KO, ZH, Cantonese17 languages~20 languagesEN, ZH
VRAM Required6-8 GB~4 GB~6 GB~4 GB
Cross-lingualYesYesLimitedYes
WebUI ToolsFull pipeline (UVR5, ASR, slicing)MinimalNoneMinimal
Community SizeVery large (96+ contributors)MediumLargeGrowing

该如何选择:

  • GPT-SoVITS:数据需求最少、整体最均衡的声音克隆方案。MIT 许可证允许商业使用,内置完整的 WebUI 工具链。
  • XTTS v2:适合快速原型验证,但 CPML 许可证禁止商业部署。
  • Bark:适合创意类音频(音乐、音效、笑声)。速度较慢,但表现力范围更广。
  • F5-TTS:学术表现出色,但非商业许可证限制了生产环境的使用。

局限性 / 诚实评估 #

以下场景 GPT-SoVITS 并不擅长:

  1. 低于 100ms 的实时流式传输:该模型需要先通过 HuBERT 处理参考音频并生成语义 token,然后再进行声码化。消费级硬件上无法实现低于 100ms 的流式传输。

  2. 不借助 RVC 的歌声合成:虽然 GPT-SoVITS 能处理口语文本,但高质量的歌声克隆需要搭配 RVC,或使用 DiffSinger 这类专门的模型。

  3. 精确的词级时序控制:与部分商业 TTS API 不同,GPT-SoVITS 没有暴露 SSML 或音素级的时序控制接口,无法实现精确同步。

  4. 无 GPU 的生产推理:CPU 推理(在 M4 上 RTF 为 0.526)适合原型验证,但对于生产负载来说太慢了。实际上必须配备 GPU。

  5. 无训练数据支持下的情感表现范围:基础模型能捕捉中等程度的情感变化,但要实现夸张的情感演绎(耳语、喊叫、哭泣),需要包含这些情感的训练数据。

  6. 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 年正在构建语音产品的团队来说,这是目前最实用的开源基础方案。

今天就能落地的行动清单:

  1. 克隆 https://github.com/RVC-Boss/GPT-SoVITS 并运行 Docker 配置
  2. 下载一个预训练模型(建议从速度最佳的 V2 ProPlus 开始)
  3. 录制一段 5 秒的参考音频,并通过 WebUI 测试零样本推理
  4. 用你自己的鉴权层封装 api_v2.py 接口
  5. 加入 dibi8.com Telegram 群组,获取部署支持并参与社区讨论

推荐的托管与基础设施 #

在将上述任何工具部署到生产环境之前,你都需要可靠的基础设施。以下是 dibi8 实际在用并推荐的两个选项:

  • DigitalOcean — 覆盖 14 个以上全球区域,60 天内 200 美元免费额度。是运行开源 AI 工具的独立开发者的默认之选。
  • HTStack — 从中国大陆访问延迟低的香港 VPS。这与托管 dibi8.com 的 IDC 是同一家——经过生产环境的实战检验。

附属链接——不会给你增加任何费用,同时也帮助维持 dibi8.com 的运营。

参考资料与延伸阅读 #

参考资料与来源 #

📦 出现在以下合集中

💬 留言讨论