GPT-SoVITS 日语文档实战指南:Few-Shot TTS 环境搭建、Docker 部署与 WebUI 全流程解析
本篇基于 GPT-SoVITS 仓库的日语版 README(docs/ja/README.md)整理而成,面向希望在 Linux、Windows、macOS 及 Docker 环境下完成 Few-Shot 语音克隆 TTS 全流程的开发者。读完本文,你将掌握:GPT-SoVITS 的核心能力边界、install.sh 各参数的真实行为、Docker Compose 四个服务的取舍、预训练模型与 G2PW/UVR5/ASR 模型的落盘目录、数据集 .list 标注格式,以及 WebUI 微调六步流程与命令行离线工具的使用方法。
一、核心功能概览
GPT-SoVITS 是一个面向 Few-Shot 场景的语音合成(TTS)项目,官方定位是"1 分钟语音数据也能训练出不错的 TTS 模型"。日语文档中列出的四项核心能力为:
- Zero-Shot TTS:仅用 5 秒左右的参考音频,即可直接合成该音色文本,无需训练;
- Few-Shot TTS:约 1 分钟的训练数据即可微调出质量更高的个性化模型;
- 多语言支持:官方文档声明支持英语、日语、韩语、粤语、中文;
- 一体化 WebUI:内置人声/伴奏分离(UVR5)、训练集自动切片、ASR 转写标注等工具,降低训练集制作门槛。
从源码结构看,多语言能力落在文本前端:GPT_SoVITS/text/cleaner.py 中按版本维护语言模块映射,v2 起为 {"zh": "chinese2", "ja": "japanese", "en": "english", "ko": "korean", "yue": "cantonese"},分别对应 chinese2.py、japanese.py、english.py、korean.py、cantonese.py 等前端模块。
二、安装
2.1 测试过的环境矩阵
官方文档给出的环境组合如下,跨平台迁移时建议对齐此矩阵:
| Python Version | PyTorch Version | Device |
|---|---|---|
| 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 |
2.2 Linux
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]
阅读 install.sh 源码可知该脚本的实际职责远不止装依赖:
- 参数校验:
--device必须取CU126 / CU128 / ROCM / MPS / CPU之一,--source必须取HF / HF-Mirror / ModelScope之一,二者均缺省时打印帮助并退出(install.sh#L96-L174); - 构建工具:非 macOS 下检测系统 GCC,版本低于 11 时从 conda-forge 安装 GCC 11 与对应 sysroot;macOS 下自动触发 Xcode Command Line Tools 安装(install.sh#L186-L224);
- 模型下载:按
--source选择镜像,下载pretrained_models.zip解压到GPT_SoVITS/、G2PWModel.zip解压到GPT_SoVITS/text/;若已存在对应目录则跳过;--download-uvr5时追加下载 UVR5 权重到tools/uvr5/(install.sh#L234-L296); - PyTorch 安装:CU126 走
--index-url .../cu126,CU128 走.../cu128,ROCM 走rocm6.2,CPU/MPS 走.../cpu,并同时安装torchcodec(install.sh#L298-L344); - 文本前端资源:下载 NLTK 数据与 Open JTalk 日语词典并分别解压到 Python 前缀目录与
pyopenjtalk包目录——日语 TTS 依赖pyopenjtalk,这一步不可省略(install.sh#L356-L371)。
另外注意:--device CU126/CU128 若检测不到 nvidia-smi,脚本会告警并自动回退到 CPU 安装路径;ROCM 在 WSL2 下还会额外修补 torch 的 libhsa-runtime64.so(install.sh#L298-L324)。
2.3 Windows
Windows 10 以上推荐下载官方一体化整合包,解压后双击 go-webui.bat 即可启动(仓库根目录保留了启动脚本 go-webui.bat 与 go-webui.ps1)。
2.4 macOS
重要提示:官方文档明确建议 Mac 上尽量用 CPU 训练——在 Mac GPU 上训练出的模型质量会显著低于其他设备训练的模型。安装命令:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
bash install.sh --device <MPS|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]
从 install.sh 源码看,MPS 分支实际按 CPU wheel 安装 PyTorch(USE_CPU=true),即 MPS 模式主要依赖运行时回退,与"建议 CPU 训练"的提示一致。
2.5 手动安装
若希望完全掌控每一步:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt
随后安装 FFmpeg,各平台方式:
- Conda:
conda activate GPTSoVits && conda install ffmpeg - Ubuntu/Debian:
sudo apt install ffmpeg && sudo apt install libsox-dev - Windows:将
ffmpeg.exe与ffprobe.exe放到 GPT-SoVITS 根目录,并安装 Visual C++ 运行时(Visual Studio 2017 redistributable) - macOS:
brew install ffmpeg
三、使用 Docker 运行
3.1 镜像选择
代码更新频率高于镜像发布频率,使用前需注意:
- 到 Docker Hub 确认最新镜像标签并选择匹配环境的标签;
- Lite 镜像不包含 ASR 模型与 UVR5 模型:UVR5 需自行下载到宿主机,ASR 模型则按需由程序自动下载;
- Docker Compose 会挂载当前目录下的全部文件,因此务必先
cd到项目根目录并确保代码是最新版本再启动; - 可选择用仓库提供的 Dockerfile 在本地构建,以获得最新变更。
3.2 环境变量与共享内存
is_half:控制是否启用 fp16 半精度。GPU 支持时可设为true以降低显存占用。从源码看,config.py#L127-L128 通过os.environ.get("is_half", "True")读取该变量,并在 config.py#L149-L195 的get_device_dtype_sm中结合 GPU 计算能力(SM 版本、显存大小)自动决定推理设备与精度——显存不足 4GB 或 SM < 5.3 的卡会回退到 CPU + fp32;- Windows (Docker Desktop) 默认共享内存偏小,可能导致异常行为,建议在 Compose 文件中将
shm_size调大(例如16g)。
3.3 服务选择与运行命令
docker-compose.yaml 定义了四个服务:
| 服务名 | 说明 | 镜像 |
|---|---|---|
GPT-SoVITS-CU126 |
含全部功能完整版 | xxxxrt666/gpt-sovits:latest-cu126 |
GPT-SoVITS-CU126-Lite |
精简依赖轻量版 | xxxxrt666/gpt-sovits:latest-cu126-lite |
GPT-SoVITS-CU128 |
完整版 | xxxxrt666/gpt-sovits:latest-cu128 |
GPT-SoVITS-CU128-Lite |
轻量版 | xxxxrt666/gpt-sovits:latest-cu128-lite |
各服务映射了五个端口(与 config.py#L140-L145 中的端口常量一一对应):
9871SubFix 音频标注 WebUI(webui_port_subfix)9872TTS 推理 WebUI(webui_port_infer_tts)9873UVR5 人声分离 WebUI(webui_port_uvr5)9874主 WebUI(webui_port_main)9880API 服务(api_port)
Lite 服务额外挂载了 tools/asr/models 与 tools/uvr5/uvr5_weights 两个卷,用于把宿主机上的模型目录注入镜像(docker-compose.yaml#L22-L41)。运行指定服务:
docker compose run --service-ports <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128>
3.4 本地构建镜像
bash docker_build.sh --cuda <12.6|12.8> [--lite]
docker_build.sh 会检测本机架构自动选择 linux/amd64 或 linux/arm64 作为 TARGETPLATFORM,--lite 时以 lite 基础镜像构建。
3.5 进入运行中的容器
docker exec -it <GPT-SoVITS-CU126-Lite|GPT-SoVITS-CU128-Lite|GPT-SoVITS-CU126|GPT-SoVITS-CU128> bash
四、预训练模型布局
若 install.sh 已成功执行,可跳过前 3 项。
- 主预训练模型:放置到
GPT_SoVITS/pretrained_models/。从 config.py#L12-L28 可以看到各版本实际引用的文件:- v1:
s2G488k.pth+s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt - v2:
gsv-v2final-pretrained/s2G2333k.pth+gsv-v2final-pretrained/s1bert25hz-5kh-longer-...ckpt - v3:
s2Gv3.pth+s1v3.ckpt(另需models--nvidia--bigvgan_v2_24khz_100band_256xvocoder 目录) - v4:
gsv-v4-pretrained/s2Gv4.pth+s1v3.ckpt - v2Pro / v2ProPlus:
v2Pro/s2Gv2Pro.pth、v2Pro/s2Gv2ProPlus.pth+s1v3.ckpt
- v1:
- G2PW 模型(仅中文 TTS 需要):下载
G2PWModel.zip,解压后重命名为G2PWModel放入GPT_SoVITS/text/。install.sh#L270-L281 会检查GPT_SoVITS/text/G2PWModel目录是否存在来决定是否下载; - UVR5 权重(可选,人声/伴奏分离与混响去除):放到
tools/uvr5/uvr5_weights/。使用bs_roformer或mel_band_roformer时需注意:- 模型文件与配套 yaml 配置须同名(不含扩展名),且名称中必须包含 "roformer" 才会被识别为 roformer 类模型;
- 推荐在模型名中直接体现类型,例如
mel_mand_roformer、bs_roformer;否则程序会从配置内容反推模型类型。例如bs_roformer_ep_368_sdr_12.9628.ckpt与其同名.yaml配对,kim_mel_band_roformer.ckpt与其同名.yaml配对;
- 中文 ASR(可选):Damo ASR、Damo VAD、Damo Punc 三个模型放入
tools/asr/models/; - 英/日等多语种 ASR(可选):Faster Whisper Large V3(或其他小尺寸模型)放入
tools/asr/models/。从 tools/asr/config.py 看,当前仓库的 ASR 选择已扩展为 Fun-ASR-Nano、SenseVoice、达摩 ASR 与 Faster Whisper 四个入口,Whisper 尺寸支持medium / medium.en / large-v2 / large-v3 / large-v3-turbo。
五、数据集格式
TTS 标注 .list 文件每行一个样本:
vocal_path|speaker_name|language|text
官方文档声明的语言字典为:zh(中文)、ja(日语)、en(英语)。示例:
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
结合文本前端源码可以补充:v2 及以上版本的 language_module_map 中实际还识别 ko(韩语)与 yue(粤语)两个标签(GPT_SoVITS/text/cleaner.py#L26-L29),因此在多语言数据集中标注这两个值同样有效。
六、WebUI 启动与微调流程
6.1 打开主 WebUI
- 整合包用户:双击
go-webui.bat或运行go-webui.ps1;切回 V1 则使用go-webui-v1.bat/go-webui-v1.ps1; - 源码用户:
python webui.py <语言(可选)>
# 切换到 V1:
python webui.py v1 <语言(可选)>
语言参数会写入环境变量 language 并驱动 i18n(webui.py#L66-L68),不传时默认 Auto 自动检测。注意 webui.py#L4 中 os.environ["version"] = "v2Pro" 表明当前主干默认走 v2Pro 版本分支;WebUI 内也可手动切换版本。
6.2 微调六步流程
文档给出的"路径自动补全"工作流为:
- 输入音频路径;
- 将长音频切分为小片段;
- 降噪(可选);
- ASR 转写;
- 校正 ASR 结果;
- 进入训练标签页微调 GPT/SoVITS 模型。
从 webui.py 源码可确认每一步对应的实际子进程命令,便于命令行复现:
- 切分:
tools/slice_audio.py(由open_slice调用,支持按 GPU 数n_parts并行); - 降噪:
tools/cmd-denoise.py -i <输入> -o <输出> -p float16/float32; - ASR:
tools/asr/<模型入口> -i <输入目录> -o <输出目录> -s <尺寸> -l <语言> -p <精度>(open_asr,webui.py#L371-L395); - 特征提取三段流水线:GPT_SoVITS/prepare_datasets/1-get-text.py(文本分词)→ 2-get-hubert-wav32k.py(HuBERT 特征)→ 3-get-semantic.py(语义 token)。
训练阶段(open1Ba / open1Bb)会先加载版本对应配置——v1/v2 用 GPT_SoVITS/configs/s2.json、v2Pro/v2ProPlus 用 s2v2Pro.json/s2v2ProPlus.json,GPT 侧用 s1longer.yaml / s1longer-v2.yaml——再按 WebUI 表单覆写 batch_size、epochs、预训练权重路径等字段写入 TEMP/tmp_s2.json(或 tmp_s1.yaml),最后拉起 GPT_SoVITS/s2_train.py(v1/v2/v2Pro 系)或 GPT_SoVITS/s2_train_v3_lora.py(v3/v4)。默认 epoch 与保存频率由 set_default() 按 GPU 显存自动计算(webui.py#L104-L136)。
6.3 推理 WebUI
python GPT_SoVITS/inference_webui.py <语言(可选)>
或先启动 python webui.py,在 1-GPT-SoVITS-TTS/1C-inference 页签打开推理界面。主 WebUI 中开启推理时,若勾选批量加速模式会改用 GPT_SoVITS/inference_webui_fast.py(webui.py#L331-L336)。
七、各版本 Release 要点与迁移方法
V2
新增:韩语与粤语支持;优化文本前端;预训练语料从 2 千小时扩展到 5 千小时;提升低质量参考音频下的合成品质。从 V1 迁移:pip install -r requirements.txt 更新包 → 拉取最新代码 → 下载 V2 预训练模型至 GPT_SoVITS/pretrained_models/gsv-v2final-pretrained/;中文 V2 另需 G2PW 模型。
V3
新增:音色相似度提升(无微调直推底模时改善明显);GPT 更稳定,重复/漏字减少,更易生成富情感语音。从 V2 迁移:更新依赖 → 拉最新代码 → 下载 s1v3.ckpt、s2Gv3.pth 及 models--nvidia--bigvgan_v2_24khz_100band_256x 目录至 GPT_SoVITS/pretrained_models/。可选追加语音超分模型(见 tools/AP_BWE_main/24kto48k/ 目录的说明)。
V4
V4 修复了 V3 非整数倍上采样引入的"金属音"问题,并原生输出 48kHz 音频(V3 仅原生 24kHz),官方推荐将 V4 作为 V3 的直接替代(仍需自行验证)。迁移方式:更新依赖 → 拉最新代码 → 下载 gsv-v4-pretrained/s2v4.ckpt 与 gsv-v4-pretrained/vocoder.pth 至 GPT_SoVITS/pretrained_models/。
V2Pro
内存占用略高于 V2,但硬件成本与推理速度持平的情况下,性能与音质优于 V4。 文档同时给出选型参考:训练集平均音质偏低时,V1/V2/V2Pro 往往比 V3/V4 更稳;且 V3/V4 的合成音色更贴近参考音频而非整个训练集的平均音色。迁移方式:更新依赖 → 拉最新代码 → 下载 v2Pro/s2Dv2Pro.pth、v2Pro/s2Gv2Pro.pth、v2Pro/s2Dv2ProPlus.pth、v2Pro/s2Gv2ProPlus.pth 及 sv/pretrained_eres2netv2w24s4ep4.ckpt 至 GPT_SoVITS/pretrained_models/(与 webui.py#L865 中 sv_path 的默认引用一致)。
八、命令行工具速查
除 WebUI 外,各工具均可命令行直跑:
UVR5 人声分离 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 ...(阈值控制音量曲线判定、min_length 为最短片段时长、min_interval 为相邻片段最短间隔、hop_size 为音量曲线步长)。当前仓库中切分工具位于 tools/ 目录(slice_audio.py、slicer2.py),WebUI 内部实际调用的是 tools/slice_audio.py,以仓库内文件为准。
ASR 标注:
# 达摩系中文 ASR
python tools/asr/funasr_asr.py -i <input> -o <output>
# Faster Whisper(非中文场景),-l 语言,-p 精度
python ./tools/asr/fasterwhisper_asr.py -i <input> -o <output> -l <language> -p <precision>
Faster Whisper 路径无进度条显示,且可能因 GPU 性能出现延迟。两个脚本的参数定义分别见 tools/asr/funasr_asr.py#L153-L163 与 tools/asr/fasterwhisper_asr.py#L153-L170。
九、致谢与延伸阅读
日语 README 末尾列出了项目的上游技术来源:理论上参考 ar-vits、SoundStorm、VITS、hifi-gan、fish-speech、f5-TTS、shortcut flow matching 等;预训练模型涉及中文语音预训练、Chinese-Roberta-WWM-Ext-Large、BigVGAN、ERes2NetV2;文本前端基于 PaddleSpeech zh_normalization、g2pW、pypinyin-g2pW、split-lang;工具链则复用 UVR5、audio-slicer、SubFix、FFmpeg、Gradio、faster-whisper、FunASR、AP-BWE。
更多文档可参考仓库内的其他语言版本与更新日志:简体中文、韩语、土耳其语、English,以及日语/英文更新历史 docs/ja/Changelog_JA.md、docs/en/Changelog_EN.md。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00