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
GPT-SoVITS 是一个开源的少样本语音克隆与文本转语音(TTS)项目,核心价值在于:你只需提供 5 秒的干净人声样本,它就能以对方的音色朗读任意文本(零样本语音克隆);如果再提供 1 分钟左右的录音做微调,音色相似度和自然度还能进一步提升。全程通过 WebUI 点选即可完成,本文带你从零把它跑起来。
🎯 快速了解:GPT-SoVITS 能做什么
先看功能清单,明确它能解决什么问题:
| 能力 | 说明 | 你需要准备 |
|---|---|---|
| 零样本语音克隆 | 输入 5 秒参考人声,即刻以该音色合成语音 | 一段干净录音 |
| 少样本微调 | 用约 1 分钟训练数据微调模型,音色更像本人 | 1 分钟以上录音 |
| 跨语言合成 | 推理文本可与训练集不同语言,支持中文、英文、日文、韩文、粤语 | 对应语言文本 |
| 一体化 WebUI 工具 | 内置人声伴奏分离(UVR5)、音频自动切片、多语种语音识别(ASR)、文本标注校对 | 无 |
与同类 TTS 项目相比,它的差异点在于:底模经过大规模数据预训练(v2 底模已扩展至 5k 小时),所以"不训练直接推底模"也能得到可用的音色克隆效果,而微调只是锦上添花。官方给出的推理速度(RTF,即合成耗时与音频时长的比值)数据:v2 ProPlus 底模在 RTX 4090 上约 0.014(1400 字≈4 分钟音频,合成耗时 3.36 秒),RTX 4060 Ti 约 0.028,M4 CPU 约 0.526。
🛠️ 环境准备:GPT-SoVITS 一键安装步骤
官方测试通过的环境组合如下,安装脚本会自动处理 PyTorch、Gradio 界面和音频处理依赖:
| Python 版本 | PyTorch 版本 | 运行设备 |
|---|---|---|
| 3.10 / 3.11 | 2.5.1 | CUDA 12.4 |
| 3.11 / 3.9 | 2.7.0 / 2.8.0dev | CUDA 12.8 |
| 3.9 / 3.11 | 2.5.1 / 2.7.0 | Apple silicon |
| 3.9 | 2.2.2 | CPU |
Linux / macOS 一键安装(macOS 因 GPU 训练质量偏低,官方暂时用 CPU/MPS 训练):
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 HF--device可选CU126 | CU128 | ROCM | CPU(macOS 为MPS | CPU)--source可选HF | HF-Mirror | ModelScope,国内网络建议用ModelScope- 加
--download-uvr5可顺带下载人声分离模型
Windows 用户:最简单的方式是下载官方整合包,解压后双击go-webui.bat直接启动,无需任何命令行操作。
install.sh运行成功后,预训练模型、G2PW 中文文本处理模型等都已就位,可跳过手动下载步骤。若手动安装,核心依赖只需两行:
pip install -r extra-req.txt --no-deps pip install -r requirements.txt另外务必安装 FFmpeg(conda install ffmpeg或sudo apt install ffmpeg),否则音频读写会报错。
🚀 最小闭环:跑通你的第一个语音克隆
按编号走完这 5 步,你就能听到第一句用克隆音色合成的话:
启动主界面(项目根目录执行):
python webui.py浏览器会自动打开 WebUI。也可以单独启动推理界面:
python GPT_SoVITS/inference_webui.py。零样本试音(无需任何训练):进入
1-GPT-SoVITS-TTS→1C-推理页签,模型选"不训练直接推 v2Pro 底模",上传一段 5 秒左右的参考音频,填入这段音频对应的话(prompt 文本),再输入要合成的目标文本,点击合成。这样就能立刻得到目标音色的语音。准备微调数据:进入微调页签,填入训练音频的目录路径。
自动处理流水线:依次点击"切割音频 →(可选)降噪 → ASR 语音识别 → 校对标注"。系统会把长音频切成适合训练的短片段并自动生成文本标注,你只需在标注界面改掉识别错的字。训练集格式为
音频路径|说话人|语言|文本(语言码:zh中文 /en英文 /ja日文 /ko韩文 /yue粤语)。训练并推理:切到训练窗口点击"训练"(先训 GPT 再训 SoVITS,各几十秒到几分钟不等),训练产物保存在
GPT_weights、SoVITS_weights等目录。回到1C-推理选中新训练的权重,即可体验比零样本更像本人的效果。
⚙️ 核心机制剖析:为什么 5 秒声音就能克隆
GPT-SoVITS 把合成拆成两级,理解这条链路你就明白了它"为什么这么工作":
- 文本前端:把输入文本做规范化和分词,按语种拆分成中文、英文、日文等片段(支持中英日混合),分别转成拼音/音素序列。相关代码在 GPT_SoVITS/text/,中文依赖 G2PW 多音字模型。
- s1(GPT 语义模型):一个自回归语言模型,以文本音素 + BERT 语义特征为输入,逐 token 生成一段"语义 token"——它是内容的离散表示,不含音色。参考音频则通过说话人向量(Eres2Net)和自身语义 token 注入音色条件。正因为音色与内容在这里解耦,5 秒音频携带的音色信息就足以驱动任意长度的新文本。
- s2(SoVITS 声码器):把语义 token 还原成梅尔频谱再转为波形。v3 起采用流匹配解码器,v3/v4 的声码器为 BigVGAN(GPT_SoVITS/BigVGAN/)。
微调为什么有效:零样本靠条件注入"猜"音色,微调(含 LoRA 轻量微调,见 GPT_SoVITS/s2_train_v3_lora.py)则是让 s1、s2 两个模型的参数真正记住这个人的音色细节,所以 1 分钟数据就能显著提升相似度。各阶段代码分别在 GPT_SoVITS/AR/models/(s1)、GPT_SoVITS/module/(s2)、GPT_SoVITS/TTS_infer_pack/(推理封装)。训练/推理的默认超参数定义在 GPT_SoVITS/configs/(如s1big2.yaml默认 epochs 300、batch_size 12、16-mixed 混合精度)。
🩺 问题排查:高频现象—原因—解决方案
现象:启动或训练时报显存不足(OOM)。原因:单精度运行或批次过大。解决方案:在 GPT_SoVITS/configs/tts_infer.yaml 中把
is_half设为true(Docker 场景设环境变量is_half);训练时调小s1big2.yaml中的batch_size;显存紧张优先选 v2 系列版本。现象:合成音频发闷或有金属音。原因:v3 原生输出 24kHz,且非整数倍上采样会引入金属感。解决方案:换用 v4(原生 48kHz 输出,官方视为 v3 的直接替代);或保留 v3 并开启超分(
super_sampling参数,基于 AP-BWE 的 24k→48k 模型,见 tools/AP_BWE_main/24kto48k/)。现象:合成结果漏字、重复字。原因:自回归采样偶发循环,或参考音频质量差。解决方案:通过 API 参数调节
repetition_penalty(默认 1.35)、top_k、temperature;v3/v4 底模本身重复漏字更少;参考音频尽量用 5 秒以上的干净人声。现象:报错 FFmpeg 找不到,或路径报错。原因:未安装 FFmpeg;路径含特殊字符(官方注明日文训练要求根目录不含特殊字符)。解决方案:安装 FFmpeg;项目与音频统一放在纯英文路径下。
现象:中文 TTS 读错多音字。原因:G2PW 模型未就位。解决方案:确认
GPT_SoVITS/text/G2PWModel目录存在(install.sh正常跑完会自动处理)。
🔧 进阶玩法:参数调优与版本选择
版本怎么选(基于官方发布说明):
| 版本 | 特点 | 适用场景 |
|---|---|---|
| v1 | 最早版本,资源占用最低 | 低配设备兜底 |
| v2 | 底模扩至 5k 小时,对低音质参考音频容忍度高 | 训练集音质一般时首选 |
| v2Pro / v2ProPlus | 音质超过 v4,速度保持 v2 水平,显存略高于 v2 | 追求音质但显存有限 |
| v3 | 音色相似度更高、漏字更少、情感更丰富;原生 24kHz | 需要最像本人的效果 |
| v4 | 修复 v3 金属音,原生 48kHz | 追求高音质,v3 的直接替代 |
注意官方结论:训练集平均音质较低时 v1/v2/v2Pro 效果更好,v3/v4 则更适合高质量数据且合成音色更贴近参考音频。
API 服务:需要程序化调用时,用 api_v2.py 起一个 HTTP 服务,/tts接口一次可控制十余个参数:
python api_v2.py -a 127.0.0.1 -p 9880 -c GPT_SoVITS/configs/tts_infer.yamlPOST 请求中值得关注的参数:top_k/top_p/temperature(控制发音稳定性与随机性)、speed_factor(语速)、seed(复现结果)、sample_steps(v3 流匹配步数)、streaming_mode(流式返回音频分片,0~3 档,数字越大延迟越低)、batch_size与parallel_infer(批量合成提速)。
其他优化点:
- CPU 推理会自动强制单精度,半精度不兼容的显卡也会自动降级,无需手动干预
- Docker 部署可选 Lite 镜像(不含 UVR5/ASR 模型),Windows 下记得在
docker-compose.yaml把shm_size调大到16g - 无本地显卡时,可直接用仓库里的 Colab-WebUI.ipynb 在云端训练
📦 实际应用场景
- 个人有声内容:录 1 分钟自己的声音,为播客、有声笔记固定一个"标准音轨";零样本模式适合快速验证某段文案的听感。
- 多语言内容制作:利用跨语言推理,同一份参考音频可产出中、英、日、韩、粤多语言版本,适合出海短剧、多语言教学材料的配音。
- 游戏与互动产品:为 NPC 批量生成台词。多说话人场景可通过 API 的
aux_ref_audio_paths参数融合多个参考音频的音色特征。
📚 生态与资源
- 官方文档:docs/cn/README.md(中文完整说明)、docs/en/Changelog_EN.md 及日文/韩文/土耳其文变更日志
- 关键源码路径:
- 文本前端:GPT_SoVITS/text/
- s1 语义模型:GPT_SoVITS/AR/models/
- s2 声码器与特征提取:GPT_SoVITS/module/、GPT_SoVITS/feature_extractor/
- 推理入口:GPT_SoVITS/inference_webui.py、api_v2.py
- 训练脚本:GPT_SoVITS/s1_train.py、GPT_SoVITS/s2_train.py、特征预处理 GPT_SoVITS/prepare_datasets/
- 配套工具:人声分离 tools/uvr5/、语音识别 tools/asr/(Fun-ASR-Nano / SenseVoice / FunASR / Faster Whisper)、切片 tools/slice_audio.py、音频超分 tools/audio_sr.py
- 预训练模型目录:GPT_SoVITS/pretrained_models/
- 社区渠道:项目 Issues 页(问题反馈与功能请求)、Colab 在线体验脚本
✍️ 收尾:现在就动手试两个任务
- 零样本体验:找一段 5 秒的干净人声(自己或朋友),在
1C-推理页签用"不训练直接推 v2Pro 底模"合成一段 100 字文案,再切一次跨语言组合(中文参考音频 + 英文文本)。 - 微调闭环:录 1 分钟自己的说话素材,走一遍"切片 → ASR → 校对 → 训练 → 推理",对比训练前后同一段文本的音色差异。
提示:参考音频的干净程度直接决定克隆效果上限——安静环境、单声道、无背景音,5 秒就够。先零样本跑通、再微调加深,是这条路上最省时的顺序。
【免费下载链接】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),仅供参考