GPT-SoVITS数据集制作全流程:UVR5人声分离、音频切片与ASR自动标注实战
【免费下载链接】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)工具,仅 1 分钟人声即可微调出高相似度模型。而微调效果好不好,80% 取决于数据集质量。本文将带你走通 GPT-SoVITS 数据集制作全流程:用 UVR5 完成人声分离、用自动切片工具切割音频、再用多语种 ASR 自动标注文字,最后校对生成训练用的 list 标注文件,新手也能一次做对。
一、为什么数据集是成功的关键
GPT-SoVITS 的核心卖点是"少样本":
- 零样本:5 秒参考音频即可直接合成;
- 少样本微调:1 分钟左右的干净人声,就能大幅提升音色相似度与真实感。
但这 1 分钟数据必须是纯人声、无背景音乐、无杂音、逐句切好且文字标注准确的片段。原始素材通常是带 BGM 的完整歌曲或长语音,直接喂给训练流程只会"学歪"。因此官方在 WebUI 中内置了一整套数据处理管线(见 README.md 的Finetune一节):
填写音频路径 → 切片 → 去噪(可选)→ ASR 转写 → 文本校对 → 进入下一标签页微调模型
下文就按这条管线逐步拆解。
二、第一步:UVR5 人声分离,先去掉背景音乐
如果你的素材是歌曲或带伴奏的录音,第一步必须把"人声轨"分离出来。
入口:主界面 webui.py 启动后,打开"UVR5 人声伴奏分离"标签页;对应源码为 tools/uvr5/webui.py。
操作要点:
- 选择模型:
uvr5_names列表会扫描 tools/uvr5/uvr5_weights 目录下所有.pth/.ckpt/ onnx 权重,按需选用(如 MDX-Net 分离、Roformer 分离、去混响 Dereverb 等)。若本地没有权重,安装时加--download-uvr5参数可自动下载; - 填入待处理音频目录:把原始歌曲/录音放入一个文件夹,在界面上指定该目录;
- 输出两个结果目录:分离后的人声(vocal)和伴奏(instrumental)会分别保存,我们要用的是人声目录;
- 等待批量处理完成,逐首试听人声轨,确认没有残留伴奏。
💡经验:若人声带混响(大厅感明显),建议额外跑一次去混响(Dereverb)模型再切片,效果更干净。
三、第二步:音频自动切片,把长音频切成短句
训练需要的是每句 3~10 秒左右的短片段。GPT-SoVITS 提供了基于能量(RMS)的静音检测切片器 tools/slicer2.py,核心逻辑是:扫描音量包络,在"低于阈值的静音段"处下刀切割。
入口:WebUI 中"训练集切割"标签页,或直接运行命令行版本 tools/slice_audio.py。
关键参数及推荐值(来自 slicer2.py 的Slicer默认配置):
| 参数 | 含义 | 默认值 | 调参建议 |
|---|---|---|---|
threshold | 低于该音量(dB)视作静音备选切割点 | -40 | 环境噪音大时调低(如 -45) |
min_length | 片段最短时长(ms) | 5000 | 保证每片信息量足够 |
min_interval | 两次切割的最小间隔(ms) | 300 | 避免切碎一个字 |
hop_size | 扫描步长(ms) | 20 | 一般不改 |
max_sil_kept | 每片保留的最长静音(ms) | 5000 | 控制片段首尾留白 |
💡经验:切完后抽听几个片段——如果一句常被从中间切断,调大min_interval;如果开头噪音多,调低threshold并适当调小max_sil_kept。
四、第三步(可选):去噪处理
对于有底噪、电流声的录音,可以在切片后使用内置去噪工具 tools/cmd-denoise.py(模型位于 tools/denoise-model 目录)。录制环境本来就比较干净的话,这一步可跳过。
五、第四步:ASR 自动标注,一键生成文字稿
切片完成后,GPT-SoVITS 内置的多语种语音识别(ASR)会逐段转写出文本,省去逐条手打。
相关源码:
- 中文/粤语:tools/asr/funasr_asr.py,集成 Fun-ASR-Nano(多方言)、SenseVoice(快速转写)与经典 FunASR(Paraformer/UniASR);
- 英日等语种:tools/asr/fasterwhisper_asr.py,基于 Faster Whisper,语言代码覆盖
zh、en、ja、ko、yue等数十种。
操作要点:
- 选择语种:与切片时的主语言一致(中文选 FunASR 系,英/日选 Whisper 系);
- 模型目录:识别模型统一放在 tools/asr/models,首次使用会自动下载,也可提前手动放入实现离线使用;
- 点击批量识别后,每条切片会对应生成一句文本,并汇总为标注数据(json/list)。
六、第五步:文本校对,生成训练 list 文件
ASR 转写不可能 100% 准确,专有名词、语气词最容易错。官方提供了文本校对界面 tools/subfix_webui.py:加载上一步的标注结果后,左侧播放音频、右侧逐条修改文本,按批次翻页核对,最后导出标注文件。
最终训练数据集采用.list格式,每行一条记录,以|分隔四段信息(格式定义见 README.md 的Dataset Format一节):
音频路径|说话人|语种|文本 例如: D:\GPT-SoVITS\dataset\0001.wav|myvoice|zh|今天天气真不错。其中语种代码:zh中文 /en英文 /ja日文 /ko韩文 /yue粤语。
⚠️校对三原则:
- 删掉没有实际内容的"嗯、啊"碎片片段(在界面中可直接删除);
- 文本与音频严格对应,宁缺勿错;
- 语种字段必须与片段实际语种一致,混合语段落可拆行标注。
七、常见坑与提速技巧
- 切出来的片段带伴奏残留:回到第一步换更强的分离模型(Roformer 系通常更干净),分离模型需与同名
.yaml配置一起放入 tools/uvr5/uvr5_weights; - 识别全是乱码:先确认语种选对了,再检查切片是否过短(<1 秒的片段识别质量差);
- 批量处理慢:在 config.py 中确认 GPU 设备与半精度(
is_half)已正确启用; - 数据量建议:1 分钟起步、5~10 分钟更稳;同一说话人的素材风格越统一(同样设备、同样语速),微调效果越好。
八、总结:五步产出高质量训练集
| 步骤 | 工具 | 核心文件 |
|---|---|---|
| 1. 人声分离 | UVR5 | tools/uvr5/webui.py |
| 2. 音频切片 | Slicer | tools/slicer2.py、tools/slice_audio.py |
| 3. 去噪(可选) | denoise | tools/cmd-denoise.py |
| 4. ASR 标注 | FunASR / Whisper | tools/asr/funasr_asr.py、tools/asr/fasterwhisper_asr.py |
| 5. 文本校对 | subfix | tools/subfix_webui.py |
完成以上五步,你就拥有了一份可以直接投入微调的 GPT-SoVITS 数据集。接下来回到 WebUI 的训练标签页,选择实验目录、指定.list文件,即可开始训练 GPT(s1)与 SoVITS(s2)模型,用 1 分钟声音复刻出属于你自己的 AI 音色。
【免费下载链接】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),仅供参考