DDSP-SVC 是一个新的开源歌声转换项目,致力于开发可以在个人电脑上普及的自由 AI 变声器软件。
DDSP-SVC 是一个新的开源歌声转换项目,致力于开发可以在个人电脑上普及的自由 AI 变声器软件。
相比于著名的 SO-VITS-SVC, 它训练和合成对电脑硬件的要求要低的多,并且训练时长有数量级的缩短,和 RVC 的训练速度接近。
另外在进行实时变声时,本项目的硬件资源消耗显著低于 SO-VITS-SVC , 但可能略高于 RVC 最新版本。
虽然 DDSP 的原始合成质量不是很理想(训练时在 tensorboard 中可以听到原始输出),但在使用基于预训练声码器的增强器(老版本)或使用浅扩散模型(新版本)增强音质后,对于部分数据集可以达到不亚于 SOVITS-SVC 和 RVC 的合成质量。
老版本的模型仍然是兼容的,以章节是老版本的使用说明。新版本部分操作是相同的,见之前章节。
免责声明:请确保仅使用合法获得的授权数据训练 DDSP-SVC 模型,不要将这些模型及其合成的任何音频用于非法目的。 本库作者不对因使用这些模型检查点和音频而造成的任何侵权,诈骗等违法行为负责。
1.1 更新:支持多说话人和音色混合。
2.0 更新:开始支持实时 vst 插件,并优化了 combsub 模型, 训练速度极大提升。旧的 combsub 模型仍然兼容,可用 combsub-old.yaml 训练,sins 模型不受影响,但由于训练速度远慢于 combsub, 目前版本已经不推荐使用。
3.0 更新:由于作者删库 vst 插件取消支持,转为使用独立的实时变声前端;支持多种编码器,并将 contentvec768l12 作为默认编码器;引入浅扩散模型,合成质量极大提升。
4.0 更新:支持最先进的 RMVPE 音高提取器,联合训练 DDSP 与扩散模型,提升推理与训练速度,进一步提升合成质量。
5.0 更新:支持更快速的 FCPE 音高提取器,改进 DDSP 模型与扩散模型,提升推理与训练速度,进一步提升合成质量。
6.2 更新:改进 DDSP 模型, 并采用整流流(Rectified-Flow)模型替换扩散模型,进一步提升合成质量,旧模型不再兼容
pip install -r requirements.txt
python 3.8 (windows) + cuda 11.8 + torch 2.4.1 + torchaudio 2.4.1 可以运行
(1) 下载预训练 ContentVec 编码器并将其放到 pretrain/contentvec 文件夹。
(2) 下载预训练 HubertSoft 编码器并将其放到 pretrain/hubert 文件夹,同时修改配置文件。
下载并解压预训练 NSF-HiFiGAN 声码器
或者使用 https://github.com/openvpi/SingingVocoders 微调声码器以获得更高音质。
然后重命名权重文件并放置在配置文件中 'vocoder.ckpt' 参数指定的位置,默认值是 pretrain/nsf_hifigan/model。
声码器的 'config.json' 需要在同目录,比如 pretrain/nsf_hifigan/config.json。
下载预训练 RMVPE 提取器并解压至 pretrain/ 文件夹
将所有的训练集数据 (.wav 格式音频切片) 放到 data/train/audio。
将所有的验证集数据 (.wav 格式音频切片) 放到 data/val/audio。
运行python draw.py,程序将帮助你挑选验证集数据(可以调整 draw.py 中的参数修改抽取文件的数量等参数)。
data
├─ train
│ ├─ audio
│ │ ├─ aaa.wav
│ │ ├─ bbb.wav
│ │ └─ ....wav
├─ val
│ ├─ audio
│ │ ├─ eee.wav
│ │ ├─ fff.wav
│ │ └─ ....wav
data
├─ train
│ ├─ audio
│ │ ├─ 1
│ │ │ ├─ aaa.wav
│ │ │ ├─ bbb.wav
│ │ │ └─ ....wav
│ │ ├─ 2
│ │ │ ├─ ccc.wav
│ │ │ ├─ ddd.wav
│ │ │ └─ ....wav
│ │ └─ ...
|
├─ val
| ├─ audio
│ │ ├─ 1
│ │ │ ├─ eee.wav
│ │ │ ├─ fff.wav
│ │ │ └─ ....wav
│ │ ├─ 2
│ │ │ ├─ ggg.wav
│ │ │ ├─ hhh.wav
│ │ │ └─ ....wav
│ │ └─ ...
python preprocess.py -c configs/reflow.yaml
cache_all_data 选项设置为 false 可以解决此问题。python train_reflow.py -c configs/reflow.yaml
# 使用tensorboard检查训练状态
tensorboard --logdir=exp
第一次验证 (validation) 后,在 TensorBoard 中可以看到合成的测试音频。
python main_reflow.py -i <input.wav> -m <model_ckpt.pt> -o <output.wav> -k <keychange (semitones)> -id <speaker_id> -step <infer_step> -method <method> -ts <t_start>
'infer_step' 为 rectified-flow ODE 的采样步数,'method' 为 'euler' 或 'rk4','t_start' 为 ODE 的起始时间点,需要大于或等于配置文件中的 t_start,建议保持相等(默认为 0.0)。
如果要使用混合说话人(捏音色)功能,增添 “-mix” 选项来设计音色,下面是个例子:
# 将1号说话人和2号说话人的音色按照 0.5:0.5 的比例混合
python main_reflow.py -i <input.wav> -m <model_file.pt> -o <output.wav> -k <keychange (semitones)> -mix "{1:0.5, 2:0.5}"
关于 f0 提取器、响应阈值及其他参数,参见:
python main_reflow.py -h
用以下命令启动简易操作界面:
python gui_reflow.py
该前端使用了滑动窗口,交叉淡化,基于 SOLA 的拼接和上下文语义参考等技术,在低延迟和资源占用的情况下可以达到接近非实时合成的音质。