零样本 TTS:输入一段5秒的语音样本,即可实时进行文本到语音转换。
少样本 TTS:仅需1分钟的训练数据对模型进行微调,即可显著提升音色相似度和真实感。
跨语言支持:支持在不同于训练数据集的语言上进行推理,目前已支持英语、日语、韩语、粤语和中文。
WebUI 集成工具:集成了人声伴奏分离、自动训练集切分、中文ASR和文本标注等工具,帮助初学者轻松创建训练数据集和GPT/SoVITS模型。
多版本模型:提供v1、v2、v2Pro、v2ProPlus、v3、v4等多个版本,满足不同场景需求。
查看我们的 演示视频!
如果你是 Windows 用户(测试版本 win≥10),可以直接 下载集成包,解压后双击 go-webui.bat 即可启动 GPT-SoVITS-WebUI。
中国用户可 在此下载。
如果你已经安装 Docker,可以使用以下命令快速体验:
# 拉取最新镜像
docker pull xxxxrt666/gpt-sovits:latest
# 运行容器(完整版)
docker-compose run --service-ports GPT-SoVITS-CU128
详细 Docker 使用说明请见 Docker 部署 章节。
GPT-SoVITS
├── 📁 GPT_SoVITS/ # 核心算法实现
│ ├── AR/ # 自回归模型(GPT部分)
│ ├── BigVGAN/ # 声码器(v3使用)
│ ├── module/ # 模型定义和训练组件
│ ├── feature_extractor/ # 特征提取(HuBERT、Whisper)
│ ├── text/ # 多语言文本处理前端
│ ├── TTS_infer_pack/ # 推理管道封装
│ └── configs/ # 训练和推理配置
├── 📁 tools/ # 辅助工具
│ ├── uvr5/ # 人声分离
│ ├── asr/ # 自动语音识别
│ ├── audio_sr.py # 音频超分辨率
│ └── slice_audio.py # 音频切片
├── 📁 SoVITS_weights*/ # SoVITS 模型权重(各版本)
├── 📁 GPT_weights*/ # GPT 模型权重(各版本)
├── api.py # 传统API(简单直接)
├── api_v2.py # 增强API(功能丰富)
├── webui.py # Gradio Web界面
└── config.py # 全局配置文件
GPT-SoVITS 采用两阶段架构:
该系统通过参考音频提取音色特征,结合文本输入生成具有目标音色的语音。
| Python 版本 | PyTorch 版本 | 设备 |
|---|---|---|
| Python 3.10 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.5.1 | CUDA 12.4 |
| Python 3.11 | PyTorch 2.7.0 | CUDA 12.8 |
| Python 3.9 | PyTorch 2.8.0dev | CUDA 12.8 |
| Python 3.9 | PyTorch 2.5.1 | Apple silicon |
| Python 3.11 | PyTorch 2.7.0 | Apple silicon |
| Python 3.9 | PyTorch 2.2.2 | CPU |
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 --Device <CU126|CU128|CPU> --Source <HF|HF-Mirror|ModelScope> [--DownloadUVR5]
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt
conda install ffmpeg
sudo apt install ffmpeg
sudo apt install libsox-dev
下载 ffmpeg.exe 和 ffprobe.exe 并放置于 GPT-SoVITS 根目录。
brew install ffmpeg
由于代码库更新迅速而 Docker 镜像发布周期较长,请:
Lite 表示 Docker 镜像不包含 ASR 模型和 UVR5 模型is_half: 控制是否启用半精度(fp16)。如果 GPU 支持,设置为 true 以减少内存使用。在 Windows (Docker Desktop) 上,默认共享内存大小较小,可能导致意外行为。根据可用系统内存增加 shm_size(例如增加到 16g)。
docker-compose.yaml 定义了两个服务:
GPT-SoVITS-CU126 & GPT-SoVITS-CU128: 完整版,包含所有功能。GPT-SoVITS-CU126-Lite & GPT-SoVITS-CU128-Lite: 轻量版,依赖和功能较少。运行特定服务:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>
bash docker_build.sh --cuda <12.6|12.8> [--lite]
GPT-SoVITS 提供两套 API 接口,满足不同使用场景:
api.py)特点:简单直接,适合快速集成。
python api.py -dr "参考音频.wav" -dt "参考文本" -dl "zh"
| 参数 | 说明 |
|---|---|
-s, --sovits_path |
SoVITS 模型路径 |
-g, --gpt_path |
GPT 模型路径 |
-dr, --default_refer_path |
默认参考音频路径 |
-dt, --default_refer_text |
默认参考音频文本 |
-dl, --default_refer_language |
默认参考音频语种 |
-d, --device |
推理设备,“cuda” 或 “cpu” |
-a, --bind_addr |
绑定地址,默认 “127.0.0.1” |
-p, --port |
绑定端口,默认 9880 |
-fp, --full_precision |
使用全精度 |
-hp, --half_precision |
使用半精度 |
-sm, --stream_mode |
流式返回模式,“close”/“normal”/“keepalive” |
GET 请求:
http://127.0.0.1:9880?text=要合成的文本&text_language=zh
POST 请求:
{
"text": "要合成的文本",
"text_language": "zh"
}
指定参考音频:
{
"refer_wav_path": "参考音频.wav",
"prompt_text": "参考文本",
"prompt_language": "zh",
"text": "要合成的文本",
"text_language": "zh"
}
api_v2.py)特点:功能丰富,支持流式传输和更多参数。
python api_v2.py -a 127.0.0.1 -p 9880 -c GPT_SoVITS/configs/tts_infer.yaml
GET/POST /tts: 文本转语音GET /control: 控制命令(restart/exit)GET /set_gpt_weights: 切换 GPT 模型GET /set_sovits_weights: 切换 SoVITS 模型GET /set_refer_audio: 设置参考音频| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
text |
str | 必填 | 要合成的文本 |
text_lang |
str | 必填 | 文本语言(zh/en/ja/ko/yue) |
ref_audio_path |
str | 必填 | 参考音频路径 |
prompt_lang |
str | 必填 | 提示文本语言 |
prompt_text |
str | “” | 提示文本 |
top_k |
int | 5 | top-k 采样 |
top_p |
float | 1.0 | top-p 采样 |
temperature |
float | 1.0 | 温度参数 |
speed_factor |
float | 1.0 | 语速控制 |
streaming_mode |
int/bool | 0 | 流式模式:0-关闭,1-最佳质量,2-中等质量,3-最快速度 |
media_type |
str | “wav” | 音频格式:wav/ogg/aac/raw |
sample_steps |
int | 32 | VITS v3/v4 采样步数 |
super_sampling |
bool | false | 是否启用超采样(v3) |
GET 请求:
http://127.0.0.1:9880/tts?text=先帝创业未半而中道崩殂&text_lang=zh&ref_audio_path=ref.wav&prompt_lang=zh&prompt_text=我是参考文本&streaming_mode=2
Python 示例:
import requests
url = "http://127.0.0.1:9880/tts"
payload = {
"text": "要合成的文本",
"text_lang": "zh",
"ref_audio_path": "/path/to/ref.wav",
"prompt_text": "参考文本",
"prompt_lang": "zh",
"streaming_mode": 2,
"media_type": "wav"
}
response = requests.post(url, json=payload)
with open("output.wav", "wb") as f:
f.write(response.content)
| 版本 | 特点 | 适用场景 | 硬件要求 |
|---|---|---|---|
| v1 | 初始版本,基础功能 | 实验性使用 | 低 |
| v2 | 优化文本前端,5k小时预训练 | 通用场景,音频质量一般 | 中 |
| v2Pro | 性能超越v4,v2的硬件成本 | 高质量需求,硬件有限 | 中 |
| v2ProPlus | v2Pro的增强版 | 专业级质量 | 中高 |
| v3 | 音色相似度更高,情感丰富 | 高质量参考音频 | 高 |
| v4 | 修复v3金属伪影,原生48k输出 | 专业级,替代v3 | 高 |
如果 install.sh 运行成功,可跳过第1-3步。
中国用户可 在此下载所有模型。
从 GPT-SoVITS Models 下载预训练模型,放置于 GPT_SoVITS/pretrained_models。
下载 G2PW 模型 G2PWModel.zip,解压并重命名为 G2PWModel,放置于 GPT_SoVITS/text。(仅中文TTS需要)
UVR5(人声伴奏分离 & 去混响,附加功能)模型下载自 UVR5 Weights,放置于 tools/uvr5/uvr5_weights。
中文ASR(附加功能)模型下载自 Damo ASR Model、Damo VAD Model 和 Damo Punc Model,放置于 tools/asr/models。
英文或日文ASR(附加功能)下载 Faster Whisper Large V3 放置于 tools/asr/models。
TTS 标注 .list 文件格式:
vocal_path|speaker_name|language|text
语言字典:
示例:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
集成包用户:
双击 go-webui.bat 或使用 go-webui.ps1
其他用户:
python webui.py <语言(可选)>
切换到 V1 版本:
python webui.py v1 <语言(可选)>
集成包用户:
双击 go-webui-v2.bat 或使用 go-webui-v2.ps1,然后在 1-GPT-SoVITS-TTS/1C-inference 打开推理 WebUI
其他用户:
python GPT_SoVITS/inference_webui.py <语言(可选)>
或
python webui.py
然后在 1-GPT-SoVITS-TTS/1C-inference 打开推理 WebUI
python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5>
python audio_slicer.py \
--input_path "<原始音频文件或目录路径>" \
--output_root "<保存细分音频片段的目录>" \
--threshold <音量阈值> \
--min_length <每个子片段的最短持续时间> \
--min_interval <相邻子片段之间的最短时间间隔> \
--hop_size <计算音量曲线的步长>
python tools/asr/funasr_asr.py -i <输入> -o <输出>
python ./tools/asr/fasterwhisper_asr.py -i <输入> -o <输出> -l <语言> -p <精度>
GPT_SoVITS/)AR/: 自回归文本到语义模型
models/t2s_lightning_module.py: GPT 模型定义text_processing/: 文本处理工具BigVGAN/: NVIDIA BigVGAN 声码器(v3使用)
bigvgan.py: 声码器模型inference.py: 推理接口module/: 模型组件
models.py: SoVITS 模型定义attentions.py: 注意力机制mel_processing.py: Mel 频谱处理feature_extractor/: 特征提取
cnhubert.py: 中文 HuBERT 特征提取whisper_enc.py: Whisper 编码器text/: 多语言文本处理
cleaner.py: 文本清洗symbols.py: 音素符号表TTS_infer_pack/: 推理管道
TTS.py: TTS 主类TextPreprocessor.py: 文本预处理text_segmentation_method.py: 文本切分方法tools/)uvr5/: 人声分离
webui.py: UVR5 Web界面vr.py: 人声分离核心逻辑asr/: 自动语音识别
funasr_asr.py: FunASR 接口(中文)fasterwhisper_asr.py: Faster-Whisper 接口audio_sr.py: 音频超分辨率
slice_audio.py: 音频切片工具
slicer2.py: 改进版音频切片
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
conda create -n gptsovits-dev python=3.10
conda activate gptsovits-dev
pip install -r requirements.txt
pip install -r extra-req.txt --no-deps
v2ProPlus 的 RTF(推理速度):
优化建议:
is_half=true)batch_size 参数batch_sizeis_half=true)top_k、top_p、temperature 参数super_sampling=true,仅 v3)text_lang 和 prompt_lang 参数auto 模式shm_size: 16g)docker logs <容器名>特别感谢以下项目和贡献者:
感谢 @Naozumi520 提供粤语训练集和粤语相关知识指导。
更新日志: English | 简体中文 | 日本語 | 한국어 | Türkçe
许可证: MIT License