RAVE 的正式实现:Antoine Caillon 和 Philippe Esling 的用于快速、高质量神经音频合成的变分自动编码器(文章链接)。
如果您使用 RAVE 作为音乐表演或安装的一部分,请务必引用此存储库或文章!
如果您想分享/讨论/询问有关 RAVE 的事情,您可以在我们的 Discord 服务器中进行!
请在发布问题之前查看常见问题解答!
RAVE VST适用于 Windows、Mac 和 Linux 的 RAVE VST 在相应的 Forum IRCAM 网页上以测试版形式提供。对于问题,请在此处或论坛 IRCAM 讨论页面上写下问题。
教程:IRCAM 论坛网页上提供了新教程,视频版本即将推出!
RAVE 模型的原始实现可以使用恢复
git checkout v1
使用以下命令安装 RAVE
pip install acids-rave
警告强烈建议在acids-rave
之前安装torch
和torchaudio
,以便您可以在图书馆网站上选择合适的 torch 版本。为了将来与新设备(和现代 Python 环境)的兼容性, rave-acids
不再强制执行 torch==1.13。
您的计算机上需要ffmpeg 。您可以使用以下命令在虚拟环境中本地安装它
conda install ffmpeg
感谢 hexorcismos,现在可以使用训练 RAVEv2 的合作实验室了!
训练 RAVE 模型通常涉及 3 个独立的步骤,即数据集准备、训练和导出。
您可以知道使用两种方法准备数据集:常规方法和惰性方法。延迟预处理允许直接在原始文件(即 mp3、ogg)上训练 RAVE,而无需先转换它们。警告:延迟数据集加载会在训练期间大幅增加 CPU 负载,尤其是在 Windows 上。然而,当对大型音频语料库进行训练时,这可能很有用,而大型音频语料库在未压缩时不适合硬盘驱动器。无论如何,请使用以下方法准备数据集
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 有许多不同的配置。 v1 的改进版本称为v2
,因此可以使用
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
我们还提供离散配置,类似于 SoundStream 或 EnCodec
rave train --config discrete ...
默认情况下,RAVE 是使用非因果卷积构建的。如果你想让模型具有因果性(从而降低模型的整体延迟),可以使用因果模式
rave train --config discrete --config causal ...
2.3 中的新增功能还可以通过数据增强来提高模型在低数据情况下的泛化能力。您可以通过使用--augment
关键字添加扩充配置文件来添加数据扩充
rave train --config v2 --augment mute --augment compress
许多其他配置文件在rave/configs
中可用并且可以组合。以下是所有可用配置和增强功能的列表:
类型 | 姓名 | 描述 |
---|---|---|
建筑学 | v1 | 原始连续模型(最小GPU内存:8Go) |
v2 | 改进的连续模型(更快、更高质量)(最小 GPU 内存:16Go) | |
v2_小 | v2 具有更小的感受野、经过调整的对抗训练和噪声生成器,适用于静态信号的音色传输(最小 GPU 内存:8Go) | |
v2_nopqmf | (实验)生成器中没有 pqmf 的 v2(对于弯曲目的更有效)(最小 GPU 内存:16Go) | |
v3 | v2 具有 Snake 激活、描述判别器和用于真实风格传输的自适应实例归一化(最小 GPU 内存:32Go) | |
离散的 | 离散模型(类似于SoundStream或EnCodec)(最小GPU内存:18Go) | |
奥恩克斯 | 用于 onnx 使用的 Noiseless v1 配置(最小 GPU 内存:6Go) | |
覆盆子 | 轻量级配置,兼容实时 RaspberryPi 4 推理(最低 GPU 内存:5Go) | |
正则化(仅限 v2) | 默认 | 变分自动编码器目标 (ELBO) |
瓦瑟施泰因 | Wasserstein 自动编码器目标 (MMD) | |
球形 | 球形自动编码器物镜 | |
鉴别器 | 光谱鉴别器 | 使用 EnCodec 的 MultiScale 鉴别器。 |
其他的 | 因果关系 | 使用因果卷积 |
噪音 | 启用噪声合成器 V2 | |
杂交种 | 启用梅尔谱图输入 | |
增强 | 沉默的 | 随机静音数据批次(默认概率:0.1)。强制模型学习沉默 |
压缩 | 随机压缩波形(相当于批次的光非线性放大) | |
获得 | 对波形应用随机增益(默认范围:[-6, 3]) |
训练完成后,使用以下命令将模型导出到 torchscript 文件
rave export --run /path/to/your/run (--streaming)
设置--streaming
标志将启用缓存卷积,使模型与实时处理兼容。如果您忘记使用流模式并尝试在 Max 中加载模型,您将听到咔嗒声。
对于离散模型,我们将用户重定向到此处的msprior
库。然而,由于该库仍处于实验阶段,因此版本 1.x 中的先前版本已在 v2.3 中重新集成。
要训练预训练 RAVE 模型的先验:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
这将在预训练模型path/to/your/run
的潜在变量上训练先验,并将模型和张量板日志保存到文件夹/path/to/output
。
要编写先验和 RAVE 模型的脚本,请通过向预训练的先验提供--prior
关键字来导出模型:
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
这里提供了几种预训练的流模型。我们将不断更新新型号的列表。
本节介绍如何将 RAVE 加载到nn~
中,以便与 Max/MSP 或 PureData 一起实时使用。
可以使用以下语法将计算机上名为darbouka.gin
的预训练 RAVE 模型加载到nn~
中,其中默认方法设置为前向(即编码然后解码)
这与以下补丁的作用相同,但速度稍快一些。
显式访问 RAVE 生成的潜在表示允许我们使用 Max/MSP 或 PureData 信号处理工具与表示进行交互:
默认情况下,RAVE可以用作风格迁移工具,基于模型的大压缩比。我们最近添加了一项受 StyleGAN 启发的技术,将自适应实例归一化纳入重建过程,有效地允许使用nn~
的属性系统直接在 Max/MSP 或 PureData 内部定义源和目标样式。
其他属性,例如enable
或gpu
可以启用/禁用计算,或使用 GPU 来加速(仍处于实验阶段)。
v2.3 中发布了批量生成脚本,允许转换大量文件
rave generate model_path path_1 path_2 --out out_path
其中model_path
是经过训练的模型(原始或脚本化)的路径, path_X
是音频文件或目录的列表, out_path
是各代的输出目录。
如果您有疑问,想要分享您使用 RAVE 的经验或分享使用模型完成的音乐作品,您可以使用“讨论”选项卡!
演示您可以使用 RAVE 和 nn~ external for maxmsp 做什么!
使用nn~进行puredata,RAVE可以在嵌入式平台上实时使用!
问题:我的预处理卡住了,显示0it[00:00, ?it/s]
答案:这意味着数据集中的音频文件太短,无法为 RAVE 提供足够的时间范围。尝试使用带有preprocess
--num_signal XXX(samples)
来减小信号窗口,之后不要忘记添加带有train
--n_signal XXX(samples)
问题:在训练期间,我遇到类似ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
异常
答案:这意味着您的数据集没有足够的数据批次来计算实习潜在 PCA,这需要至少 128 个示例(然后是批次)。
这项工作由 IRCAM 领导,并得到以下项目的资助