GPT-SoVITS完整指南:用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
GPT-SoVITS 是一个少样本语音克隆 TTS 项目。它解决的问题很具体:你手里只有几分钟甚至几秒的某个人声音素材,但想把这个声音变成一个可以输入文本、输出语音的模型。5 秒参考音频就能零样本合成,1 分钟音频可以微调出专属音色模型。
🎯 先说结论:值不值得用
值得。它覆盖了从音频切片、降噪、ASR 标注到模型训练、推理的完整流程,全在 WebUI 里点完。零样本模式下 5 秒音频即可出语音,少样本模式下 1 分钟干净音频就能训出相似度不错的个人模型。适合播客作者、独立开发者、内容创作者。上手成本是几行 conda 命令加一个安装脚本,有 NVIDIA 显卡的话,从克隆仓库到第一次合成成功大约 20 分钟。
📦 从零到出效果:第一次合成走查
第1步:克隆仓库并准备环境
git clone https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS cd GPT-SoVITS conda create -n GPTSoVits python=3.10 conda activate GPTSoVits bash install.sh --device CU128 --source ModelScope --download-uvr5install.sh 一条命令会装好 ffmpeg、cmake、对应 CUDA 版本的 PyTorch 和全部 Python 依赖,并自动下载预训练模型到GPT_SoVITS/pretrained_models、G2PW 中文多音字模型到GPT_SoVITS/text。Windows 用户把脚本换成install.ps1,或者直接下载官方整合包双击go-webui.bat就行。
第2步:启动 WebUI
python webui.py浏览器打开后,界面分成数据准备(1A)、模型训练(1B)、推理(1C)等 Tab,推理 Tab 会再开一个独立页面,默认端口 9872。
第3步:零样本合成第一条语音
打开1-GPT-SoVITS-TTS/1C-推理页面,SoVITS 和 GPT 下拉框里直接选预训练底模(无需训练)。上传一段 5 秒左右的参考音频,填写这段音频对应的参考文本,再输入你要合成的目标文本并选择文本语言,点合成。几秒钟后就能得到用参考音色读出的语音。
第4步:第一次微调
把训练音频放进一个目录,在数据准备 Tab 按顺序执行:填音频路径 → 切割音频(按音量把长音频切成小段)→ 降噪(可选)→ ASR 自动转写 → 校对标注。标注完成后进入训练 Tab,依次跑 1a 文本分词与特征提取、1b 语音自监督特征提取、1c 语义 Token 提取,然后点 GPT 训练、SoVITS 训练。训练完的权重会出现在下拉框里,切到推理页面选上它,输入同样的文本即可对比微调前后的效果。
🎙️ 能力拆解:三个核心功能
零样本合成:5秒音频即可出语音
原理是把参考音频和参考文本作为提示,配合预训练底模直接生成。文本侧有完整的前端做规范化和音素转换,中文多音字由 G2PW 模型处理。效果边界在参考音频:5 秒音频能定下音色基调,但语速和情绪会跟着参考音频走;参考音频里如果混着 BGM 或回声,合成质量会明显下降,先过一遍 UVR5 人声分离和降噪再拿去当参考会稳很多。它支持跨语言,参考音频用中文,目标文本可以写英文、日文、韩文、粤语。
少样本微调:1分钟数据训个人模型
训练分两段:GPT(s1)负责把文本映射成语义 token 序列,SoVITS(s2)负责把 token 变成波形,后者用的是 BigVGAN 声码器。相当于 GPT 先学"说什么",SoVITS 再学"怎么听起来像这个人"。效果边界有两点:一是训练集质量决定上限,官方说明里明确 v1/v2/v2Pro 系列对平均音质较低的训练集更宽容,v3/v4 则要求更干净的数据;二是 v4 原生输出 48kHz 音频,v3 只有 24kHz,听感上 v3 会更闷。
推理速度:官方给出的参考数据
README 里给了 v2 ProPlus 版本的 RTF:RTX 4060Ti 上 0.028,4090 上 0.014(1400 词约 4 分钟语音,实际推理耗时 3.36 秒),M4 CPU 上 0.526。换算下来,8GB 级别的消费级显卡就能做到边合成边听的体验,CPU 能跑但明显慢。
🧩 真实用法
一个做技术播客的作者,每期节目开头都是他自己的口播。他用 WebUI 的人声分离把一期节目里的 BGM 去掉,再把 5 分钟音频切片、降噪、ASR 自动转写,校对掉几个识别错的多音字,凑出约 1 分钟的训练集,训了一个自己的 GPT-SoVITS 模型。之后每期节目的口播、片尾和社群通知,都是模型用他自己的声音念出来的,语速和情绪通过换参考音频来微调。
一个独立游戏开发者要给 20 个 NPC 写语音,预算里没有配音费。他先用零样本模式,拿演员朋友手机录的 10 秒干声当参考,把全部台词过了一遍,筛选掉读错的段落;对主角这一个角色,他让对方在安静房间补录了 1 分钟素材做了微调,主角音色明显比零样本更稳,NPC 们则继续用零样本加不同参考音频区分开来。
一个做内部工具的后端开发者,想让团队的客服工单系统支持语音播报。他没有重新造轮子,而是直接调用仓库里的 api.py 起一个本地推理服务,工单状态变化时把文本 POST 过去,返回的合成音频直接推给前端播放,参考音频固定用团队选定的一个声音,整个服务跑在一台 12GB 显存的服务器上。
⚠️ 踩坑实录
Q1:训练时显存不够,报 OOM 怎么办?
先把 batch_size 减半。WebUI 的默认 batch size 是按显存大小推算的(v3/v4 默认按 显存GB/8 给),显存紧张时手动调小是最直接的。同时确认走的是半精度训练,v3/v4 的 SoVITS 训练 epoch 默认只有 2,最多 16,别为了"多训一点"把参数往上堆。
Q2:中文合成时个别字读音奇怪,像日语发音?
十有八九是 G2PW 模型没放对位置。把它解压后重命名为G2PWModel,放到GPT_SoVITS/text目录下,重启 WebUI。install.sh 成功跑完的话这一步已经帮你做好了,手动装环境的人最容易漏。
Q3:合成出来的声音发闷,或者有金属音?
这是版本混用的典型症状。v3 原生输出 24kHz 音频,v4 为了修掉 v3 非整数倍上采样导致的金属音、改成原生 48kHz,官方定位 v4 直接替代 v3。推理时不要混用不同版本的底模和微调权重:LoRA 权重加载时如果对应底模缺失,界面会直接报"底模缺失,无法加载相应 LoRA 权重",看到这条提示就去GPT_SoVITS/pretrained_models补下载对应版本的底模。
Q4:服务器断网,ASR 用不了?
FunASR 系列模型默认在首次使用时自动下载。离线机器上,把 ASR 模型、VAD 模型、标点模型预先下到tools/asr/models目录(模型来源见 README 的"预训练模型"一节);需要英语或日语转写的话,把 faster-whisper-large-v3 放到同一目录。UVR5 人声分离的权重放tools/uvr5/uvr5_weights。
Q5:CPU 上能凑合用吗?
能跑,但要有预期。官方数据 M4 CPU 的 RTF 是 0.526,合成 4 分钟语音大约要花 2 分钟,批量干活不现实。想快就用 GPU,或者在 WebUI 里开启 batched 推理,它会自动切换到 inference_webui_fast.py,长文本合成速度会好一截。
结尾
现在就可以克隆仓库、跑一遍 install.sh,先拿 5 秒音频体验零样本,再录 1 分钟素材训一个自己的模型。
克隆地址:https://gitcode.com/GitHub_Trending/gp/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),仅供参考