¡Obtén la última versión de nn~! Asegúrese de descargar la versión correcta para su instalación.
Usuarios de Mac , deben descargar la versión arm64 si y solo si su Mac es M1-2 y su instalación de Max/MSP o PureData no utiliza Rosetta.
Usuarios de Windows , por ahora es necesario que todos los archivos .dll
del paquete nn~
se copien junto al ejecutable ˋMax.exeˋ.
Descomprima el archivo .tar.gz
en la carpeta Paquete de su instalación de Max, es decir, en Documents/Max 8/Packages/
.
Luego puede crear una instancia de un objeto nn~
. Dependiendo de su instalación, es posible que reciba una advertencia de cuarentena, como esta
En la mayoría de los casos, continuar con la eliminación desactivará esta advertencia hasta la próxima actualización de nn~
. Si MacOS continúa bloqueando el externo, es posible que tengas que compilarlo tú mismo.
Haga clic derecho en el objeto nn~
para abrir el parche de ayuda y siga las pestañas para obtener más información sobre este proyecto.
Descomprima el archivo .tar.gz
en la carpeta Paquete de su instalación de Pd, es decir, en Documents/Pd/externals/
. Luego puede agregar una nueva ruta en el menú Pd/File/Preferences/Path
apuntando a la carpeta nn_tilde
.
En MacOS, a diferencia de Max/MSP, PureData no incluye un procedimiento de eliminación automática de la cuarentena. Por tanto tenemos que hacerlo manualmente. Encienda una terminal y cd
a la carpeta nn_tilde
. El siguiente comando solucionará el problema.
xattr -r -d com.apple.quarantine .
En esencia, nn~
es una capa de traducción entre Max/MSP o PureData y la interfaz libtorch c++ para aprendizaje profundo. Por sí solo, nn~
es como un caparazón vacío y requiere modelos previamente entrenados para funcionar. Puede encontrar algunos modelos RAVE aquí o algunos modelos vschaos2 aquí.
El modelo previamente entrenado para nn~
son archivos torchscript , con una extensión .ts
. Cree una carpeta en algún lugar de su computadora, por ejemplo en
Documents/pretrained_models/
y agregue esta ruta a la ruta de inclusión Max o PureData (Max: Options/File Preferences
, PureData: File/Preferences/Path
).
Una vez hecho esto, puede cargar un modelo usando la siguiente sintaxis (aquí para cargar un modelo previamente entrenado ubicado en Documents/pretrained_models/decoder_only.ts
).
Máx./MSP | Datos puros |
---|---|
![]() | ![]() |
Tenga en cuenta que debe incluir la extensión .ts
en la versión PureData. Dependiendo del modelo cargado, habrá diferente número de entradas/salidas, correspondientes a las diferentes entradas y salidas del modelo.
Un modelo previamente entrenado determinado puede tener varios métodos diferentes, con diferentes efectos y usos. Por ejemplo, el modelo RAVE tiene tres métodos diferentes, correspondientes a diferentes subpartes del modelo. A modo de ejemplo, los describiremos en la siguiente tabla:
Nombre del método | Descripción | Entradas | Salidas |
---|---|---|---|
codificar | Codifica una señal de audio en una trayectoria latente. | señal de audio | múltiples trayectorias latentes |
descodificar | Decodifica una trayectoria latente en una señal de audio. | múltiples trayectorias latentes | señal de audio |
adelante (predeterminado) | Codifica y decodifica una señal de audio. | señal de audio | señal de audio |
El usuario puede cambiar entre métodos durante la instanciación agregando un segundo argumento a nn~
llamando al método deseado.
Máx./MSP | Datos puros |
---|---|
![]() | ![]() |
Es posible configurar modelos después de su inicialización usando atributos especiales, cuyo tipo y efecto está completamente definido por el modelo mismo, con la excepción del atributo enable
que se puede establecer en 0 o 1 para habilitar o deshabilitar el modelo, potencialmente ahorrando hasta el cálculo.
Los atributos del modelo se pueden configurar mediante mensajes , con la siguiente sintaxis:
set ATTRIBUTE_NAME ATTRIBUTE_VAL_1 ATTRIBUTE_VAL_2
Al usar objetos gráficos Max/MSP y PureData, esto puede conducir a una forma intuitiva de modificar el comportamiento del modelo, como se muestra a continuación, donde tenemos dos atributos del modelo (es decir, temperatura de generación y modo de generación) y el atributo enable
especial.
Máx./MSP | Datos puros |
---|---|
![]() | ![]() |
La lista de atributos y los valores nuevamente dependen del modelo y deben recuperarse en la documentación del modelo.
Internamente, nn~
tiene un mecanismo de búfer circular que ayuda a mantener una carga computacional razonable. Puede modificar su tamaño mediante el uso de un número entero adicional después de la declaración del método, como se muestra a continuación
Máx./MSP | Datos puros |
---|---|
![]() | ![]() |
La versión Max/MSP de nn~
incluye elementos externos adicionales, a saber, mc.nn~
y mcs.nn~
, lo que permite el uso de las capacidades multicanal de Max 8+ para simplificar el proceso de parcheo con nn~
y, opcionalmente, disminuir la carga computacional.
En los siguientes ejemplos, el mismo modelo codifica y luego decodifica dos archivos de audio en paralelo.
Este parche se puede mejorar tanto visual como computacionalmente usando mc.nn~
y usando operaciones por lotes.
Usando mc.nn~
construimos las señales multicanal en los diferentes lotes . En el ejemplo anterior, cada señal multicanal tendrá 2 canales diferentes. También proponemos el mcs.nn~
externo que construye señales multicanal en las diferentes dimensiones , como se muestra en el siguiente ejemplo.
En el ejemplo anterior, las dos señales multicanal generadas por el objeto nn~ rave encode 2
tienen 16 canales cada una, correspondientes a las 16 dimensiones latentes. Esto puede ayudar a aplicar parches, manteniendo al mismo tiempo las capacidades de procesamiento por lotes de mc.nn~
al crear una cantidad explícita de entradas/salidas correspondientes a la cantidad de ejemplos que queremos procesar en paralelo.
En resumen, el nn~
normal opera en un solo ejemplo y tiene tantas entradas/salidas como entradas/salidas tiene el modelo. El mc.nn~
externo es como nn~
, pero puede procesar varios ejemplos al mismo tiempo . La variante mcs.nn~
es un poco diferente y puede procesar varios ejemplos al mismo tiempo, pero tendrá una entrada/salida por ejemplo .
Habilite/Deshabilite el cálculo para guardar el cálculo sin eliminar el modelo. Similar a cómo funcionaría una función de derivación .
Recarga dinámicamente el modelo. Puede resultar útil si desea actualizar periódicamente el estado de un modelo durante un entrenamiento.
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
externo producido dentro de ~/Documents/Max 8/Packages/nn_tilde/externals/
Puede compilar nn~
para PureData agregando -DPUREDATA_INCLUDE_DIR=/Applications/Pd-X.XX-X.app/Contents/Resources/src/
a la llamada 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
Si bien nn~ se puede compilar y usar en Raspberry Pi, es posible que debas considerar el uso de modelos de aprendizaje profundo más livianos. Actualmente solo admitimos sistemas operativos de 64 bits.
Instale nn~ para PureData usando
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
Este trabajo está liderado en el IRCAM y ha sido financiado por los siguientes proyectos