GPT-SoVITS语音克隆实战:从5秒试音到1分钟定音
【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS
手里只有一段 40 秒的目标人物录音,能不能让 AI 用这个声音念稿?GPT-SoVITS 就是为这类场景做的:5 秒参考音频即可零样本试音,1 分钟素材做少样本语音合成微调后锁定目标音色,还支持跨语言推理。下面不讲原理,只走四个决策节点:跑起来、喂数据、训音色、部署。
能力地图:10 秒判断是否适合你
| 维度 | 情况 |
|---|---|
| 核心能力 | 零样本 TTS(5 秒音频)、少样本微调(1 分钟)、跨语言推理 |
| 语言覆盖 | zh 中文 / en 英语 / ja 日语 / ko 韩语 / yue 粤语 |
| 适合谁 | 会 Python、能看 README 的开发者,无需语音管线背景 |
| 硬件门槛 | NVIDIA GPU + CUDA 12.6/12.8;也支持 CPU、ROCm、Apple 芯片 |
| 数据门槛 | 1 分钟清晰音频可得可用音色 |
| 推理速度 | RTF 0.014(4090)、0.526(M4 CPU),v2ProPlus 实测 |
先跑起来:最短路径启动 WebUI
这节只回答一个问题:最少敲几条命令让模型出声。
最短路径。Linux / macOS 上克隆仓库后执行 install.sh,它会一次完成环境、PyTorch 与预训练模型的安装:
git clone https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS cd GPT-SoVITS bash install.sh --device CU126 --source HF-Mirror --download-uvr5--device取 CU126 / CU128 / ROCM / CPU,--source取 HF / HF-Mirror / ModelScope,--download-uvr5附带人声分离模型。装完直接启动主 WebUI:
python webui.py zh_CN浏览器会自动打开 0.0.0.0:9874 的主界面,集成数据处理、训练、推理全部标签页。Windows 用户可直接下载集成包双击go-webui.bat;手动安装则用install.ps1 --Device CU126 --Source HF-Mirror。
📷 建议此处插入:GPT-SoVITS WebUI 主界面截图(端口 9874)
进阶选项。① Docker:docker-compose.yaml里Lite服务不含 ASR 与 UVR5 模型、体积更小,完整版功能齐全:
docker compose run --service-ports GPT-SoVITS-CU126环境变量is_half=true开启 fp16 省显存;Windows 的 Docker Desktop 记得把shm_size调到 16g,否则可能行为异常。② 手动安装:pip install -r extra-req.txt --no-deps接pip install -r requirements.txt,另需 ffmpeg(Ubuntu/Debian:apt install ffmpeg libsox-dev)。③ macOS 的 Apple 芯片目前建议--device CPU,官方说明 GPU 训练质量明显低于其他设备。已测环境参考:Python 3.10 + PyTorch 2.5.1(CUDA 12.4)、Python 3.11 + PyTorch 2.7.0(CUDA 12.8)、Python 3.9 + PyTorch 2.2.2(CPU)。
喂数据:切片、自动标注与清洗
这节解决:把一段长录音变成能训练的语料。
最短路径(WebUI 一条龙)。主 WebUI 的数据处理页里填入原始音频路径,按流程走:切片 → 降噪(可选)→ ASR 自动转写 → 人工校对 → 切到训练页。ASR 默认 Fun-ASR-Nano(支持中、英、日、韩及自动检测),粤语走经典 FunASR;也可选 faster-whisper,模型首次使用自动下载。
📷 建议此处插入:WebUI 数据处理页截图(切片、ASR、校对流程)
进阶选项(命令行切分)。切片脚本是tools/slicer2.py,默认静默阈值 -40 dB、最短片段 5000 ms。短句语料多时把min_length压到 2000 ms,避免切分后大量丢弃:
python tools/slicer2.py "raw.wav" --out sliced --db_thresh -40 --min_length 2000 --min_interval 300 --hop_size 10| 参数 | 默认值 | 说明 |
|---|---|---|
| --db_thresh | -40 | 静默判定阈值(dB),切太碎调高、切不够调低 |
| --min_length | 5000 | 每段最小时长(ms),短句语料设 2000 |
| --min_interval | 300 | 触发切分所需的最短静默(ms) |
| --max_sil_kept | 500 | 每段首尾保留的静默(ms) |
标注用.list文件,每行四段:
音频路径|说话人名|语言|文本语言代码取 zh / en / ja / ko / yue。带 BGM 的录音先过人声分离:python tools/uvr5/webui.py(端口 9873),分离质量直接决定音色相似度。训练数据统一转成 16 kHz WAV,每段建议 1-10 秒。
训出音色:两段式微调与关键超参
这节解决:数据量多少、轮数多少、先动哪个参数。
数据量。5 秒只用于零样本试音(不训练);1 分钟可做可用少样本音色;10 分钟以上结果才稳定。参考音频与训练音频不是同一人,音色会漂移,先保证一致性再谈其他。
最短路径。WebUI 训练页内一次完成:S1 训练 GPT(文本 → 语义 token),S2 训练 SoVITS(语义 token → 波形)。默认配置 S1 跑 300 轮、S2 跑 100 轮,通常无需改参数就能出结果;训练中每隔几轮试听一次,音色已锁定就提前停,不必跑满。
进阶选项(命令行与调参)。入口是GPT_SoVITS/s1_train.py与GPT_SoVITS/s2_train.py,参数在GPT_SoVITS/configs/的 s1.yaml 与 s2.json 里改:
python GPT_SoVITS/s1_train.py python GPT_SoVITS/s2_train.py| 项 | 默认值 | 何时动 |
|---|---|---|
| S1 epochs | 300 | s1.yaml,batch_size 8 + gradient_accumulation 4 |
| S1 lr | 0.01(从 1e-5 warmup) | 不建议动 |
| S2 learning_rate | 1e-4 | 数据 < 10 min 且过拟合时降到 5e-5 |
| S2 batch_size | 32 | 显存不足减半 |
| 精度 | fp16 | s2.json 的 fp16_run 默认开启 |
显存紧张可用GPT_SoVITS/s2_train_v3_lora.py走 LoRA 微调,占用更小。loss 曲线看 TensorBoard;loss 平了但音色不似,先查数据质量,再谈调参。
调出来与部署:WebUI、CLI 与 API
这节解决:训好的模型怎么消费。
最短路径。独立推理 WebUI 一条命令:
python GPT_SoVITS/inference_webui.py上传 5 秒参考音频 + 参考文本,粘贴目标文本即可;推理语言与训练语言不同时跨语言推理也有效。命令行批处理用python GPT_SoVITS/inference_cli.py。需要对外服务时,根目录api.py、api_v2.py是现成 HTTP 入口,多说话人、语速控制都能带上。
进阶选项(提速)。RTF 实测(v2ProPlus):4060Ti 为 0.028,4090 为 0.014(约 4 分钟音频合成耗时 3.36 秒),M4 CPU 为 0.526。优化顺序:确认is_half=true(GPU 支持时开 fp16);用GPT_SoVITS/onnx_export.py导出 ONNX 再推理;纯 CPU 场景考虑 CPU 优化推理版本。
📷 建议此处插入:推理 WebUI 合成结果界面截图
版本脉络:V1 到 V2Pro 选型表
这节解决:装环境时该选哪套预训练模型。
| 版本 | 主要变化 | 特点 |
|---|---|---|
| V1 | 基线,中/英/日 | 成本最低 |
| V2 | 新增韩语/粤语,文本前端优化,预训练 2k→5k 小时 | 低质量参考音频更稳 |
| V3 | 音色相似度更高,GPT 更稳(少重复/遗漏),情感更足 | 原生输出 24k |
| V4 | 修复 V3 金属音,原生输出 48k | 可直接替代 V3 |
| V2Pro | 性能超 V4,保持 V2 的硬件成本与速度 | 显存略高于 V2 |
v1/v2/v2Pro 是一组特性,v3/v4 是另一组:训练集音质一般时,v1/v2/v2Pro 能出像样结果而 v3/v4 不能;v3/v4 的音色更贴参考音频而非训练集整体。选型就一句:数据质量一般选 v2Pro,数据干净且显存足选 v4,老显卡选 v2。
踩坑实录:四个高频问题怎么修
这节把最常被问的四个问题各拆成现象、定位、修法三步。
显存溢出。现象:S2 训练或合成时 CUDA OOM。定位:s2.json 的 batch_size 默认 32,对小显存过大。修法:降到 16,S1 保持 gradient_accumulation 4,并确认 fp16_run 为 true。
torch 用不上 CUDA。现象:torch.cuda.is_available()返回 False 或直接报错。定位:nvidia-smi显示驱动支持的 CUDA 上限,对照 torch 安装版本。修法:重装 cu126 或 cu128 对应 wheel;install.sh 在找不到驱动时会自动回退 CPU。
合成有金属音。现象:输出带金属质感的 ringing。定位:在用 v3 权重,其非整数倍上采样 + 24k 原生输出是根因。修法:换 v4 预训练模型(s2v4.pth + vocoder.pth),输出直接是 48k,声音也更亮。
推理速度不达标。现象:RTF 明显高于 GPU 基线(4090 应到 0.014)。定位:is_half 未开,或实际跑在 CPU 上。修法:设 is_half 为 true;或导出 ONNX 后加载;纯 CPU 部署先评估是否可接受 0.526 的 RTF。
落地场景
给客服录音换声音
收集 1 分钟原说话人干净录音做微调,整段文案即可用该音色重新配音;跨语言推理意味着中文语料也能念英文,适合多语种物料。先拿 5 秒零样本试音验一版,效果合适再投入 1 分钟微调。
做多说话人 TTS 服务
.list标注里给不同说话人填不同 speaker_name,同一个模型即可承载多音色。根目录 api_v2.py 提供现成 HTTP 接口,配合 Docker 部署可直接接外部合成请求。
1 分钟的数据门槛把语音克隆的门槛从棚录拉低到了手机录一嗓子。跑通之后,剩下的事就是选对版本,再调 batch_size 和 learning_rate 两个数。
- 5 秒音频零样本试音
- 1 分钟微调锁定音色
- 五语种加跨语言推理
- WebUI/CLI/API 现成
- Docker 完整部署
【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考