获取最新版本的 nn~!请务必下载适合您安装的正确版本。
Mac 用户,当且仅当您的 Mac 是 M1-2,并且您安装的 Max/MSP 或 PureData 不使用 Rosetta 时,您才应该下载 arm64 版本!
Windows 用户,目前需要将nn~
包中的所有.dll
文件复制到“Max.exe”可执行文件旁边。
解压 Max 安装的 Package 文件夹中的.tar.gz
文件,即Documents/Max 8/Packages/
中。
然后您可以实例化一个nn~
对象。根据您的安装情况,您可能会收到隔离警告,例如此警告
在大多数情况下,继续删除将禁用此警告,直到下次更新nn~
。如果 MacOS 继续阻止外部,您可能必须自己编译。
右键单击nn~
对象打开帮助补丁,然后按照选项卡了解有关该项目的更多信息。
解压缩 Pd 安装的 Package 文件夹中的.tar.gz
文件,即Documents/Pd/externals/
中。然后,您可以在Pd/File/Preferences/Path
菜单中添加指向nn_tilde
文件夹的新路径。
在 MacOS 上,与 Max/MSP 不同,PureData 不包含自动隔离删除过程。因此我们必须手动完成。启动终端,然后cd
到nn_tilde
文件夹。以下命令将解决该问题
xattr -r -d com.apple.quarantine .
nn~
的核心是 Max/MSP 或 PureData 与用于深度学习的 libtorch c++ 接口之间的转换层。单独而言, nn~
就像一个空壳,需要预先训练的模型才能运行。您可以在这里找到一些 RAVE 模型,或者在这里找到一些 vschaos2 模型。
nn~
的预训练模型是torchscript 文件,扩展名为.ts
。在计算机上的某个位置创建一个文件夹,例如
Documents/pretrained_models/
并将此路径添加到 Max 或 PureData 包含路径(Max: Options/File Preferences
, PureData: File/Preferences/Path
)。
完成此操作后,您可以使用以下语法加载模型(此处加载位于Documents/pretrained_models/decoder_only.ts
中的预训练模型)
最大/MSP | 纯数据 |
---|---|
请注意,您必须在 PureData 版本中包含.ts
扩展名。根据加载的模型,会有不同数量的入口/出口,对应模型的不同输入和输出。
给定的预训练模型可能有几种不同的方法,具有不同的效果和用途。例如,RAVE模型具有三种不同的方法,对应于模型的不同子部分。为了举例,我们将在下表中描述它们:
方法名称 | 描述 | 输入 | 输出 |
---|---|---|---|
编码 | 将音频信号编码为潜在轨迹 | 音频信号 | 多个潜在轨迹 |
解码 | 将潜在轨迹解码为音频信号 | 多个潜在轨迹 | 音频信号 |
向前(默认) | 对音频信号进行编码和解码 | 音频信号 | 音频信号 |
用户可以通过向nn~
添加第二个参数来调用所需的方法,从而在实例化期间在方法之间进行切换。
最大/MSP | 纯数据 |
---|---|
可以在初始化后使用特殊属性来配置模型,其类型和效果完全由模型本身定义,但enable
属性除外,可以将其设置为 0 或 1 来启用或禁用模型,从而可能节省上计算。
可以使用messages设置模型属性,语法如下:
set ATTRIBUTE_NAME ATTRIBUTE_VAL_1 ATTRIBUTE_VAL_2
使用 Max/MSP 和 PureData 图形对象,这可以提供一种直观的方式来修改模型的行为,如下所示,其中我们有两个模型属性(即生成温度和生成模式)以及特殊的enable
属性。
最大/MSP | 纯数据 |
---|---|
属性列表和值同样与模型相关,应在模型文档中检索。
在内部, nn~
有一个循环缓冲机制,有助于维持合理的计算负载。您可以通过在方法声明后使用附加整数来修改其大小,如下所示
最大/MSP | 纯数据 |
---|---|
nn~
的 Max/MSP 版本包括额外的外部组件,即mc.nn~
和mcs.nn~
,允许使用 Max 8+ 的多通道功能来简化nn~
的修补过程,并可选择减少计算负载。
在以下示例中,两个音频文件由同一模型并行编码和解码
通过使用mc.nn~
和批处理操作,可以在视觉上和计算上改进该补丁
使用mc.nn~
我们在不同批次上构建多通道信号。在上面的示例中,每个多运河信号将有 2 个不同的运河。我们还提出了mcs.nn~
external在不同维度上构建多通道信号,如下例所示
在上面的示例中,由nn~ rave encode 2
对象生成的两个多运河信号各有 16 个运河,对应于 16 个潜在维度。这可以帮助修补,同时通过创建与我们想要并行处理的示例数量相对应的明确数量的入口/出口来保持mc.nn~
的批处理能力。
回顾一下,常规nn~
在单个示例上运行,并且具有与模型输入/输出一样多的入口/出口。 mc.nn~
外部与nn~
类似,但可以同时处理多个示例。 mcs.nn~
变体有点不同,可以同时处理多个示例,但每个示例都有一个入口/出口。
启用/禁用计算以节省计算而不删除模型。类似于旁路功能的工作原理。
动态重新加载模型。如果您想在训练期间定期更新模型的状态,这会很有用。
git clone https://github.com/acids-ircam/nn_tilde --recursive
cd nn_tilde
mkdir build
cd build
cmake ../src/ -DCMAKE_PREFIX_PATH=/path/to/libtorch -DCMAKE_BUILD_TYPE=Release
make
.mxo
external 复制到~/Documents/Max 8/Packages/nn_tilde/externals/
中您可以通过将-DPUREDATA_INCLUDE_DIR=/Applications/Pd-X.XX-X.app/Contents/Resources/src/
添加到 cmake 调用来为 PureData 构建nn~
。
git clone https://github.com/acids-ircam/nn_tilde --recurse-submodules
cd nn_tilde
mkdir build
cd build
cmake .. s rc -A x64 -DCMAKE_PREFIX_PATH= " <unzipped libtorch directory> " -DPUREDATA_INCLUDE_DIR= " <path-to-pd/src> " -DPUREDATA_BIN_DIR= " <path-to-pd/bin> "
cmake --build . --config Release
虽然 nn~ 可以在 Raspberry Pi 上编译和使用,但您可能必须考虑使用更轻的深度学习模型。我们目前仅支持 64 位操作系统。
使用 PureData 安装 nn~
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
这项工作由 IRCAM 领导,并由以下项目资助