一个面向 GPT-SoVITS 等 TTS 训练流程的本地语音数据集构建工具。
它可以把 本地音频 / 视频文件、YouTube 链接、Bilibili 链接 自动处理为干净的人声训练片段,并生成 GPT-SoVITS 可直接使用的数据清单。
项目同时提供:
- 桌面 GUI:适合日常使用,支持输入路径 / URL、模型管理、阶段进度、错误提示与任务续接;
- CLI:适合调试、批量处理和自动化脚本。
当前默认假设:单个素材中主要只有一个目标说话人,可自动去除 BGM,但暂不具备多说话人分轨识别提取。
本项目旨在大幅消减训练时寻找、整理、构建数据的时间成本和人力成本;鼓励使用者传播或者按需对其进行特化改造,但是!请勿进行商用、诈骗等用途。
本项目只是提供了一个快速批量构建voice clone等text-to-speech(tts) 任务训练数据的小工具;无法对任何使用者的任何行为有约束力,因此不对任何负面甚至非法行为和相应后果负任何责任。
- 本地音频 / 视频文件导入
- YouTube / Bilibili 音频获取
- Demucs 人声分离
- FFmpeg 音频标准化
- faster-whisper 多语言 ASR
- 自动生成适合 TTS 的短语音片段
- ASR 置信度与时长过滤
- GPT-SoVITS
dataset.list导出 - 中断恢复与阶段缓存
- GUI 模型缓存目录配置
- NVIDIA CUDA 加速;无 NVIDIA GPU 时可使用 CPU 模式
典型处理流程:
Audio / Video / URL
↓
Source acquisition
↓
Vocal separation
↓
Audio normalization
↓
ASR transcription
↓
Segmentation & filtering
↓
clips / transcript / manifest / dataset.list
.
├── voice_dataset_builder.py # GUI 入口
├── build_dataset.py # CLI 入口
├── requirements.txt
├── requirements-gui.txt
├── requirements-build.txt
├── VoiceDatasetBuilder.spec
├── scripts/
│ └── build_windows.ps1
├── vendor/
│ └── ffmpeg/
├── assets/
├── tts_builder/
│ ├── pipeline.py
│ ├── separator.py
│ ├── transcriber.py
│ ├── segmenter.py
│ ├── dataset.py
│ ├── cache.py
│ ├── sources/
│ └── gui/
└── tests/
推荐环境:
Windows 10 / 11
Python 3.12
NVIDIA GPU + CUDA(推荐,但不是必须)
FFmpeg
CPU 模式也可以运行,但 Demucs 和 ASR 会明显更慢。
推荐使用 uv。
安装 uv:
winget install --id=astral-sh.uv -e进入项目目录后创建环境:
uv venv --python 3.12激活环境:
.venv\Scripts\Activate.ps1安装核心依赖:
uv pip install -r requirements.txt安装 GUI 依赖:
uv pip install -r requirements-gui.txt如果你已经有兼容的 GPT-SoVITS / PyTorch 环境,也可以直接复用现有虚拟环境。
Windows 推荐:
winget install --id Gyan.FFmpeg -e安装后重新打开终端并确认:
ffmpeg -version
ffprobe -version只要这两个命令能正常输出版本信息,开发态就不需要手动复制 ffmpeg.exe。
启动:
python voice_dataset_builder.py首次启动只进行本机环境检查,不会立即联网下载模型。
GUI 中可以设置:
- 输入文件 / URL
- Speaker 名称
- Language
- ASR Model
- 当前任务输出目录
- 默认输出目录
- 模型存储根目录
开始任务后,界面会展示:
Prepare
Source
Vocal Separation
Normalize
ASR
Segment
Export
各阶段会显示运行中、已完成、缓存命中或失败状态。
GUI 中的 Model storage root 是模型总目录,例如:
D:\AI_Cache\VoiceDatasetBuilder
程序内部会使用:
D:\AI_Cache\VoiceDatasetBuilder\huggingface
D:\AI_Cache\VoiceDatasetBuilder\torch
其中:
- Hugging Face:faster-whisper 模型
- Torch:Demucs 模型
第一次真正使用模型时才会下载。
下载过程中如果网络中断,已有缓存会保留,重新 Retry 时不会主动删除已下载内容。
CLI 入口:
python build_dataset.py -hpython build_dataset.py input.m4a --speaker target --language japython build_dataset.py "https://www.youtube.com/watch?v=..." --speaker target --language japython build_dataset.py "https://www.bilibili.com/video/BV..." --speaker target --language ja可跳过 Demucs:
python build_dataset.py vocals.wav --speaker target --language ja --skip-separation默认 ASR 模型:
large-v3-turbo
调试时可改为:
--asr-model small工具会自动保留可复用阶段结果。
任务失败或停止后,重新执行同一个 source 时,会尽量从最近可复用阶段继续,而不是从头处理。
运行过程中可能保留:
source audio
separated vocals
normalized audio
ASR result
state information
任务成功后会自动执行 compact 清理:
保留:
source audio
ASR JSON
state JSON
final clips
manifest.jsonl
dataset.list
删除体积较大的临时中间文件,例如:
separated vocals
normalized full-length WAV
如需强制重新处理某个 source:
--fresh调试时希望保留全部中间文件:
--keep-temp默认会生成:
clips/
transcripts/
manifest.jsonl
dataset.list
最终用于训练的短语音片段。
默认切片目标:
推荐:4 ~ 8 秒
硬限制:3 ~ 12 秒
通用数据格式,例如:
{"audio":"clips/sample_0001.wav","speaker":"target","language":"ja","text":"今日はいい天気ですね。","confidence":0.93}GPT-SoVITS 格式:
ABSOLUTE_WAV_PATH|target|ja|今日はいい天気ですね。
检测到 NVIDIA CUDA 时,程序会优先使用 GPU。
推荐正式构建使用:
large-v3-turbo
无 NVIDIA GPU 时可以使用 CPU 模式。
如果 Demucs 显存不足,可使用:
--separator-device cpu如果 ASR 需要使用 CPU:
--asr-device cpu项目采用 PyInstaller onedir 方式发布 Windows 桌面程序。
最终用户只需要启动:
VoiceDatasetBuilder.exe
依赖文件会放在同一发布目录中,而不是强行压缩成单文件 EXE。
uv pip install -r requirements-build.txt将 Windows 版文件放入:
vendor/ffmpeg/ffmpeg.exe
vendor/ffmpeg/ffprobe.exe
开发态不需要做这一步;这里只是为了让最终发布包不依赖用户系统安装 FFmpeg。
powershell -ExecutionPolicy Bypass -File scripts/build_windows.ps1生成目录:
dist/VoiceDatasetBuilder/
主程序:
dist/VoiceDatasetBuilder/VoiceDatasetBuilder.exe
Windows EXE 必须在 Windows 环境构建。PyInstaller 不支持从 Linux/macOS 直接交叉生成 Windows EXE。
当前版本不处理:
- 多说话人 diarization
- 自动判断谁是目标说话人
- Bilibili 会员 / 登录限制内容的自动认证
- 自动读取浏览器 Cookie
- LLM 文本纠错
- 手工音频编辑 / 波形剪辑
当前具备初级分辨主说话人的能力,但是如果素材中多人频繁交替说话,建议先单独整理目标说话人的素材,再导入本工具。
欢迎大家下载下来自己根据需求魔改,待开发玩法应该还是挺多的!
