ITADN
yxlllc/DDSP-SVC
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Language: English 简体中文

DDSP-SVC

0. 简介

DDSP-SVC 是一个开源的歌声转换项目,致力于开发可在个人电脑上普及的免费 AI 变声软件。

与著名的 SO-VITS-SVC 相比,其训练和合成对计算机硬件的要求低得多,训练时间可以缩短几个数量级,接近 RVC 的训练速度。

此外,在进行实时变声时,本项目的硬件资源消耗显著低于 SO-VITS-SVC,但可能略高于 RVC 的最新版本。

尽管 DDSP 的原始合成质量并不理想,但在使用基于预训练声码器的增强器(旧版本)、浅层扩散模型(后续版本)或整流流模型(当前版本)增强音质后,对于某些数据集,它可以达到不低于 SOVITS-SVC 和 RVC 的合成质量。

免责声明:请确保仅使用合法获取的授权数据训练 DDSP-SVC 模型,并且不要将这些模型及其合成的任何音频用于非法目的。本仓库的作者不对使用这些模型检查点和音频造成的任何侵权、欺诈及其他非法行为负责。

更新日志:我太懒了,懒得翻译,请查看中文版 readme。

1. 安装依赖

我们建议首先从官方网站安装 PyTorch,然后运行:

pip install -r requirements.txt

python 3.11 (windows) + cuda 13.0 + torch 2.9.1 + torchaudio 2.9.1 可用。

2. 配置预训练模型

  • 特征编码器(仅选择一个):

(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/ 文件夹中。

3. 预处理

将所有训练数据集(.wav 格式的音频片段)放入以下目录:data/train/audio。将所有验证数据集(.wav 格式的音频片段)放入以下目录:data/val/audio。您也可以运行

python draw.py

帮助您选择验证数据(您可以调整 draw.py 中的参数以修改提取的文件数量及其他参数)

然后运行预处理器:

python preprocess.py -c configs/reflow.yaml -j <number of processes>

NOTE 1: 默认配置适用于使用 RTX-4060 显卡训练 44.1kHz 高采样率合成器。

NOTE 2: 请确保所有音频片段的采样率与 yaml 配置文件中的采样率保持一致!如果不一致,程序可以安全运行,但预处理期间的重采样会非常慢。

NOTE 3: 训练数据集中的音频片段总数建议约为 1000 个,特别是长音频片段可以切割成短片段,这将加快训练速度,但所有音频片段的时长不应少于 2 秒。如果音频片段过多,您需要大容量内存或在配置文件中将 'cache_all_data' 选项设置为 false。

NOTE 4: 验证数据集中的音频片段总数建议约为 10 个,请不要放入过多,否则验证过程会非常慢。

NOTE 5: 如果您的数据集质量不高,请在配置文件中将 'f0_extractor' 设置为 'rmvpe'。

NOTE 6: 现在支持多说话人训练。配置文件中的 'n_spk' 参数控制是否为多说话人模型。如果您想训练一个多说话人模型,音频文件夹需要以不大于 'n_spk' 的正整数命名以表示说话人 ID,目录结构如下:

# training dataset
# the 1st speaker
data/train/audio/1/aaa.wav
data/train/audio/1/bbb.wav
...
# the 2nd speaker
data/train/audio/2/ccc.wav
data/train/audio/2/ddd.wav
...

# validation dataset
# the 1st speaker
data/val/audio/1/eee.wav
data/val/audio/1/fff.wav
...
# the 2nd speaker
data/val/audio/2/ggg.wav
data/val/audio/2/hhh.wav
...

如果 'n_spk' = 1,则仍支持 single speaker 模型的目录结构,如下所示:

# training dataset
data/train/audio/aaa.wav
data/train/audio/bbb.wav
...
# validation dataset
data/val/audio/ccc.wav
data/val/audio/ddd.wav
...

4. 训练

python train_reflow.py -c configs/reflow.yaml

训练开始后,每隔 'interval_val' 步会临时保存一次权重,每隔 'interval_force_save' 步会永久保存一次权重。这两个配置项可以根据实际情况进行修改。

您可以安全地中断训练,然后运行相同的命令行以恢复训练。

如果您先中断训练,然后重新预处理新数据集或更改训练参数(batchsize、lr 等),再运行相同的命令行,也可以对模型进行微调。

5. 可视化

# check the training status using tensorboard
tensorboard --logdir=exp

首次验证后,测试音频样本将在 TensorBoard 中可见。

6. Non-real-time VC

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" 选项来设计自己的音色,以下是一个示例:

# Mix the timbre of 1st and 2nd speaker in a 0.5 to 0.5 ratio
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

7. 实时 VC

使用以下命令启动一个简单的 GUI:

python gui_reflow.py

前端采用了滑动窗口、交叉淡化、基于 SOLA 的拼接以及上下文语义引用等技术,能够在低延迟和低资源占用的情况下,实现接近非实时合成的音质。

8. 致谢