Procurez-vous la dernière version de nn~ ! Assurez-vous de télécharger la version correcte pour votre installation.
Utilisateurs Mac , vous devez télécharger la version arm64 si et seulement si votre Mac est un M1-2, et que votre installation de Max/MSP ou PureData n'utilise pas Rosetta !
Utilisateurs Windows , pour l'instant, il est nécessaire que tous les fichiers .dll
du package nn~
soient copiés à côté de l'exécutable ˋMax.exeˋ.
Décompressez le fichier .tar.gz
dans le dossier Package de votre installation Max, c'est à dire dans Documents/Max 8/Packages/
.
Vous pouvez alors instancier un objet nn~
. En fonction de votre installation, vous pourriez recevoir un avertissement de quarantaine, comme celui-ci
Dans la plupart des cas, procéder à la suppression désactivera cet avertissement jusqu'à la prochaine mise à jour de nn~
. Si MacOS continue de bloquer l'externe, vous devrez peut-être le compiler vous-même.
Faites un clic droit sur l'objet nn~
pour ouvrir le patch d'aide et suivez les onglets pour en savoir plus sur ce projet.
Décompressez le fichier .tar.gz
dans le dossier Package de votre installation Pd, c'est à dire dans Documents/Pd/externals/
. Vous pouvez ensuite ajouter un nouveau chemin dans le menu Pd/File/Preferences/Path
pointant vers le dossier nn_tilde
.
Sur MacOS, contrairement à Max/MSP, PureData n'inclut pas de procédure de suppression automatique de la quarantaine. Nous devons donc le faire manuellement. Lancez un terminal et cd
au dossier nn_tilde
. La commande suivante résoudra le problème
xattr -r -d com.apple.quarantine .
À la base, nn~
est une couche de traduction entre Max/MSP ou PureData et l'interface libtorch c++ pour l'apprentissage en profondeur. Seul, nn~
est comme une coquille vide et nécessite des modèles pré-entraînés pour fonctionner. Vous pouvez trouver quelques modèles RAVE ici, ou quelques modèles vschaos2 ici.
Les modèles pré-entraînés pour nn~
sont des fichiers torchscript , avec une extension .ts
. Créez un dossier quelque part sur votre ordinateur, par exemple dans
Documents/pretrained_models/
et ajoutez ce chemin au chemin d'inclusion Max ou PureData (Max: Options/File Preferences
, PureData: File/Preferences/Path
).
Une fois cela fait, vous pouvez charger un modèle en utilisant la syntaxe suivante (ici pour charger un modèle pré-entraîné situé dans Documents/pretrained_models/decoder_only.ts
)
Max / MSP | PureData |
---|---|
![]() | ![]() |
Notez que vous devez inclure l'extension .ts
dans la version PureData. Selon le modèle chargé, il y aura un nombre d'entrées/sorties différent, correspondant aux différentes entrées et sorties du modèle.
Un modèle pré-entraîné donné peut avoir plusieurs méthodes différentes, avec des effets et des utilisations différents. Par exemple, le modèle RAVE comporte trois méthodes différentes, correspondant à différentes sous-parties du modèle. À titre d’exemple, nous les décrirons dans le tableau suivant :
Nom de la méthode | Description | Entrées | Sorties |
---|---|---|---|
encoder | Encode un signal audio dans une trajectoire latente | signal sonore | plusieurs trajectoires latentes |
décoder | Décode une trajectoire latente en un signal audio | plusieurs trajectoires latentes | signal sonore |
avancer (par défaut) | Encode et décode un signal audio | signal sonore | signal sonore |
L'utilisateur peut basculer entre les méthodes pendant l'instanciation en ajoutant un deuxième argument à nn~
appelant la méthode souhaitée.
Max / MSP | PureData |
---|---|
![]() | ![]() |
Il est possible de configurer les modèles après leur initialisation à l'aide d'attributs spéciaux, dont le type et l'effet sont entièrement définis par le modèle lui-même, à l'exception de l'attribut enable
qui peut être défini sur 0 ou 1 pour activer ou désactiver le modèle, économisant ainsi potentiellement jusqu'au calcul.
Les attributs du modèle peuvent être définis à l'aide de messages , avec la syntaxe suivante :
set ATTRIBUTE_NAME ATTRIBUTE_VAL_1 ATTRIBUTE_VAL_2
En utilisant les objets graphiques Max/MSP et PureData, cela peut conduire à une manière intuitive de modifier le comportement du modèle, comme indiqué ci-dessous où nous avons deux attributs de modèle (c'est-à-dire la température de génération et le mode de génération) et l'attribut spécial enable
.
Max / MSP | PureData |
---|---|
![]() | ![]() |
La liste d'attributs et les valeurs dépendent à nouveau du modèle et doivent être récupérées dans la documentation du modèle.
En interne, nn~
dispose d'un mécanisme de tampon circulaire qui permet de maintenir une charge de calcul raisonnable. Vous pouvez modifier sa taille en utilisant un entier supplémentaire après la déclaration de la méthode, comme indiqué ci-dessous
Max / MSP | PureData |
---|---|
![]() | ![]() |
La version Max/MSP de nn~
inclut des externes supplémentaires, à savoir mc.nn~
et mcs.nn~
, permettant l'utilisation des capacités multicanaux de Max 8+ pour simplifier le processus de mise à jour des correctifs avec nn~
et éventuellement réduire la charge de calcul.
Dans les exemples suivants, deux fichiers audio sont encodés puis décodés par le même modèle en parallèle
Ce patch peut être amélioré à la fois visuellement et informatiquement en utilisant mc.nn~
et en utilisant des opérations par lots
En utilisant mc.nn~
nous construisons les signaux multicanaux sur les différents lots . Dans l'exemple ci-dessus, chaque signal multicanal aura 2 canaux différents. Nous proposons également le mcs.nn~
external qui construit des signaux multicanaux sur les différentes dimensions , comme le montre l'exemple ci-dessous.
Dans l'exemple ci-dessus, les deux signaux multicanaux produits par l'objet nn~ rave encode 2
ont chacun 16 canaux, correspondant aux 16 dimensions latentes. Cela peut aider à patcher, tout en conservant les capacités de batching de mc.nn~
en créant un nombre explicite d'entrées/sorties correspondant au nombre d'exemples que nous souhaitons traiter en parallèle.
Pour récapituler, le nn~
régulier fonctionne sur un seul exemple, et possède autant d'entrées/sorties que le modèle a d'entrées/sorties. Le mc.nn~
external est comme nn~
, mais peut traiter plusieurs exemples en même temps . La variante mcs.nn~
est un peu différente et peut traiter plusieurs exemples en même temps, mais aura une entrée/sortie par exemple .
Activer/Désactiver le calcul pour enregistrer le calcul sans supprimer le modèle. Semblable à la façon dont fonctionnerait une fonction de contournement .
Recharge dynamiquement le modèle. Peut être utile si vous souhaitez mettre à jour périodiquement l'état d'un modèle lors d'un entraînement.
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
externe produit dans ~/Documents/Max 8/Packages/nn_tilde/externals/
Vous pouvez créer nn~
pour PureData en ajoutant -DPUREDATA_INCLUDE_DIR=/Applications/Pd-X.XX-X.app/Contents/Resources/src/
à l'appel cmake.
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
Bien que nn~ puisse être compilé et utilisé sur Raspberry Pi, vous devrez peut-être envisager d'utiliser des modèles d'apprentissage profond plus légers. Nous ne prenons actuellement en charge que les systèmes d'exploitation 64 bits.
Installez nn~ pour PureData en utilisant
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
Ce travail est mené à l'Ircam, et a été financé par les projets suivants