GPT-SoVITS 云端语音克隆完全指南:在 Colab 免费 GPU 上微调你的专属音色
【免费下载链接】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
GPT-SoVITS 是一个主打"少样本"的开源语音合成项目:给它一分钟左右的人声录音,就能微调出一个音色接近本人的 TTS 模型,再用任意文本生成语音。本地训练最怕的两件事——显存不够、依赖打架——搬到 Colab 上就迎刃而解了:免费 GPU 显存通常够跑默认批量,conda 环境在云端隔离干净,一条安装脚本把 CUDA 依赖和预训练权重全部就位。
这份指南不按"从头到尾流水线"的顺序讲,而是把读者分成三条轨道:只想快速试听克隆效果的、打算用自己的录音微调音色的、准备把模型导出部署的。每条轨道只讲你需要的事,互相独立,可以只读其中一节。
环境准备:Colab 里一条命令装齐全部依赖
无论走哪条轨道,环境都是同一个搭法。
先拿到代码。Colab 的终端里执行(也可以直接用仓库自带的 Colab-WebUI.ipynb 模板,它会自动完成大部分初始化):
git clone https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS cd GPT-SoVITS然后建一个隔离的 Python 环境,避免依赖和其他 Notebook 冲突:
conda create -n gptsovits python=3.10 -y conda activate gptsovits最后运行仓库自带的安装脚本:
bash install.sh --device CU126 --source HF --download-uvr5这个脚本会做三件事:装好 ffmpeg、torch 等依赖;从你选的源下载预训练模型到GPT_SoVITS/pretrained_models/;--download-uvr5追加下载人声分离用的 UVR5 权重。参数怎么定:
--device选你运行环境的 CUDA 版本,可选CU126、CU128、ROCM、MPS、CPU。Colab 的默认镜像一般是 CUDA 12.x,拿不准就先试CU126;--source决定模型从哪个站拉,支持HF、HF-Mirror、ModelScope三种,网络不顺就换源重试。
装完检查GPT_SoVITS/pretrained_models/下是否已有chinese-hubert-base、gsv-v2final-pretrained等目录,有就说明环境通了。
硬件方面,免费档 GPU(8 GB 级显存)跑默认配置没问题,磁盘留 15 GB 以上,内存 12 GB 左右即可。你真正要自己准备的只有一样东西:干净的录音素材。
轨道 A:用预训练模型直接克隆一个音色试听
不想训练的人可以直接进这条路:GPT-SoVITS 的预训练权重本身就支持"参考音频 + 参考文本 → 合成"的零样本音色迁移。
启动 WebUI:
export is_share=True python webui.py 中文is_share环境变量会让 Gradio 生成一个临时公网链接(代码里由 config.py 读取),浏览器打开即可。结尾的中文参数切换界面语言,不传则默认自动识别。
进去后展开1-GPT-SoVITS-TTS面板,选"推理"页签,填入:
- 参考音频:上传一段 3~10 秒、只含目标说话人声音的 wav;
- 参考文本:这段音频的逐字转写;
- 目标文本:你想让它读的话;
- 语言、切分方式按需选择,点合成即可试听。
此时 GPT 权重和 SoVITS 权重下拉框里选中的是GPT_SoVITS/pretrained_models/下的官方预训练文件(v2 默认是s1bert25hz-5kh-longer系列 ckpt 配s2G2333k.pth,路径定义在 GPT_SoVITS/configs/tts_infer.yaml)。生成的声音会继承参考音频的音色特征,但稳定度和相似度有限——想要"更像、更稳",就进轨道 B 做微调。
轨道 B:用一分钟录音微调自己的音色
微调的核心是把一段长录音加工成"短句 + 逐句转写",然后分别训练 GPT(语义侧)和 SoVITS(声学侧)两个模型。全部操作可以在 WebUI 里点按钮完成,下面按工序说明。
第 1 步:把录音洗干净
原始录音通常带噪声和背景音乐,先处理两遍:
带 BGM 的先做人声分离。启动 UVR5 面板:
python tools/uvr5/webui.py cuda 0 8530对应源码在 tools/uvr5/webui.py,参数分别是设备、是否半精度、端口。把人声轨导出到一个文件夹备用。
再对纯人声降噪。tools/cmd-denoise.py 接受一个输入目录和一个输出目录:
python tools/cmd-denoise.py -i raw_wavs/ -o denoised_wavs/第 2 步:切片与标注
用 tools/slice_audio.py 把长音频按静音切成 3~10 秒的短句,它内置了阈值、最短时长、最大静音保持等参数,默认值对多数播客、朗读类录音够用,WebUI 的"05B-语音切分"面板只是它的图形化入口。
切片完成后写标注文件:每行一条,格式是文件名|转写文本。这一步是整个流程里最值钱的环节——错字会直接变成错音,多音字("行""重")读错大多也是标注的锅。建议逐句听写,别图快。
第 3 步:提取训练特征
WebUI 的09-训练区域提供三步按钮,背后分别对应:
| 工序 | 脚本 | 产物 |
|---|---|---|
| 文本分词 | GPT_SoVITS/prepare_datasets/1-get-text.py | 音素序列 |
| 自监督特征 | GPT_SoVITS/prepare_datasets/2-get-hubert-wav32k.py | HuBERT 特征(32k 重采样) |
| 语义 Token | GPT_SoVITS/prepare_datasets/3-get-semantic.py | 离散语义 token |
中文音素转换由 GPT_SoVITS/text/chinese.py 和 GPT_SoVITS/text/zh_normalization/ 下的归一化模块负责,遇到个别字持续读错时,可以从这条链路查词典命中逻辑。
第 4 步:训练两个模型
GPT 侧训练脚本是 GPT_SoVITS/s1_train.py,接收一个-c配置参数:
python GPT_SoVITS/s1_train.py -c GPT_SoVITS/configs/s1longer.yaml走 WebUI 的话不用手动改配置——训练页里填的 batch_size、epochs 会被写进临时 yaml 再传给脚本;不走 WebUI 则要确保配置里的train_semantic_path、train_phoneme_path、output_dir指向你第 3 步的产物目录。默认配置 GPT_SoVITS/configs/s1longer.yaml 里train.batch_size: 8、train.epochs: 20,是一分钟量级素材的稳妥起点。
GPT 训完再训 SoVITS 侧(GPT_SoVITS/s2_train.py,默认参数见 GPT_SoVITS/configs/s2.json),同样推荐在 WebUI 训练页完成。训练日志里的 loss 平稳下降即正常,产出权重按实验名落在logs_s1/、SoVITS_weights/一类目录下。
轨道 C:把训好的模型用起来、带出去
微调完成后你会拿到一对文件:GPT 侧的.ckpt和 SoVITS 侧的.pth。放在GPT_weights/、SoVITS_weights/下后,WebUI 下拉框会自动列出,选它们替换掉预训练权重即可用新音色合成。
命令行批量合成
脚本化生产时用 GPT_SoVITS/inference_cli.py,文本以文件形式传入,八个参数缺一不可:
python GPT_SoVITS/inference_cli.py \ --gpt_model GPT_weights/my-voice-e15.ckpt \ --sovits_model SoVITS_weights/my-voice.pth \ --ref_audio ref.wav --ref_text ref.txt \ --ref_language 中文 \ --target_text target.txt --target_language 中文 \ --output_path out/--target_language除了单语还支持中英混合、多语种混合等取值,参考音频建议挑一段你满意音色表现的成片。
脱离 PyTorch 环境部署
如果目标是放进独立应用里跑,仓库提供两条导出路径:
TorchScript 导出,GPT_SoVITS/export_torch_script.py 需要显式给模型和参考素材:
python GPT_SoVITS/export_torch_script.py \ --gpt_model GPT_weights/my-voice-e15.ckpt \ --sovits_model SoVITS_weights/my-voice.pth \ --ref_audio ref.wav --ref_text ref.txt \ --output_path torchscript_out/ONNX 导出由 GPT_SoVITS/onnx_export.py 完成,它直接读取GPT_weights/与SoVITS_weights/下的权重文件,产物落到onnx/目录并附带推理用的 json 描述文件。
两者导出的都是自包含模型,不依赖训练环境,适合塞进自己的后端服务。
训练中卡住了:三个最常见的问题
显存报 OOM。免费 GPU 上最有效的办法就是把 batch_size 从 8 一路降到 4 甚至 2,重新开训;S2 阶段还可以打开配置里的梯度检查点选项,用额外计算时间换显存。批量减半意味着时间翻倍,但免费机器上时间本来就不稀缺。
会话掉线,训练中断。重连 Notebook 后先conda activate gptsovits恢复环境。训练日志和检查点都写在本地磁盘(logs_s1/等目录),文件还在,重新拉起对应训练脚本即可,不用从头再来。所以长任务期间定期看一眼输出目录里 ckpt 是否在增长,心里就有底。
个别字读错、声调发飘。按顺序自查:标注里有没有错字 → 多音字上下文是否足够 → 是否词典没命中。前两条改完标注后重跑特征提取就行;第三条可以顺着 GPT_SoVITS/text/chinese2.py 的分词链去看这个词实际被转成了什么音素,再决定是改标注绕开还是补词典。
下一步可以玩什么
三条轨道都跑通之后,这套环境还能继续扩展:
- 换更长、更干净的素材重训,对比不同
epochs下音色稳定度的差异; - 用
api.py/api_v2.py起一个 HTTP 接口,把微调好的音色挂进自己的应用; - 轨道 C 的 TorchScript 产物接到无 GPU 的机器上做纯推理验证。
从克隆代码到导出部署,每一环都是独立脚本:坏了哪段修哪段,不用推倒重来。GPT-SoVITS 在云端跑起来的门槛,比大多数人想象的要低——真正决定效果上限的,是那一分钟录音干不干净、标注准不准。
【免费下载链接】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),仅供参考