Pegue o último lançamento de nn~! Certifique-se de baixar a versão correta para sua instalação.
Usuários de Mac , vocês devem baixar a versão arm64 se e somente se o seu Mac for M1-2 e sua instalação do Max/MSP ou PureData não estiver usando Rosetta!
Usuários do Windows , por enquanto é necessário que todos os arquivos .dll
do pacote nn~
sejam copiados ao lado do executável ˋMax.exeˋ.
Descompacte o arquivo .tar.gz
na pasta Package da sua instalação do Max, ou seja, em Documents/Max 8/Packages/
.
Você pode então instanciar um objeto nn~
. Dependendo da sua instalação, você poderá receber um aviso de quarentena, como este
Na maioria dos casos, prosseguir com a remoção desativará esse aviso até a próxima atualização do nn~
. Se o MacOS continuar bloqueando o externo, talvez seja necessário compilá-lo sozinho.
Clique com o botão direito no objeto nn~
para abrir o patch de ajuda e siga as guias para saber mais sobre este projeto.
Descompacte o arquivo .tar.gz
na pasta Package da instalação do Pd, ou seja, em Documents/Pd/externals/
. Você pode então adicionar um novo caminho no menu Pd/File/Preferences/Path
apontando para a pasta nn_tilde
.
No MacOS, diferentemente do Max/MSP, o PureData não inclui um procedimento automático de remoção de quarentena. Portanto, temos que fazer isso manualmente. Abra um terminal e cd
para a pasta nn_tilde
. O comando a seguir corrigirá o problema
xattr -r -d com.apple.quarantine .
Em sua essência, nn~
é uma camada de tradução entre Max/MSP ou PureData e a interface libtorch c++ para aprendizado profundo. Sozinho, nn~
é como uma concha vazia e requer modelos pré-treinados para funcionar. Você pode encontrar alguns modelos RAVE aqui ou alguns modelos vschaos2 aqui.
O modelo pré-treinado para nn~
são arquivos torchscript , com extensão .ts
. Crie uma pasta em algum lugar do seu computador, por exemplo, em
Documents/pretrained_models/
e adicione este caminho ao caminho de inclusão Max ou PureData (Max: Options/File Preferences
, PureData: File/Preferences/Path
).
Feito isso, você pode carregar um modelo usando a seguinte sintaxe (aqui para carregar um modelo pré-treinado localizado em Documents/pretrained_models/decoder_only.ts
)
Máx/MSP | PureData |
---|---|
Observe que você deve incluir a extensão .ts
na versão PureData. Dependendo do modelo carregado, haverá um número diferente de entradas/saídas, correspondendo às diferentes entradas e saídas do modelo.
Um determinado modelo pré-treinado pode ter vários métodos diferentes, com efeitos e usos diferentes. Por exemplo, o modelo RAVE possui três métodos diferentes, correspondendo a diferentes subpartes do modelo. A título de exemplo, iremos descrevê-los na tabela a seguir:
Nome do método | Descrição | Entradas | Resultados |
---|---|---|---|
codificar | Codifica um sinal de áudio em uma trajetória latente | sinal de áudio | múltiplas trajetórias latentes |
decodificar | Decodifica uma trajetória latente em um sinal de áudio | múltiplas trajetórias latentes | sinal de áudio |
avançar (padrão) | Codifica e decodifica um sinal de áudio | sinal de áudio | sinal de áudio |
O usuário pode alternar entre métodos durante a instanciação adicionando um segundo argumento a nn~
chamando o método desejado.
Máx/MSP | PureData |
---|---|
É possível configurar modelos após sua inicialização utilizando atributos especiais, cujo tipo e efeito são inteiramente definidos pelo próprio modelo, com exceção do atributo enable
que pode ser definido como 0 ou 1 para habilitar ou desabilitar o modelo, potencialmente salvando acima da computação.
Os atributos do modelo podem ser definidos usando mensagens , com a seguinte sintaxe:
set ATTRIBUTE_NAME ATTRIBUTE_VAL_1 ATTRIBUTE_VAL_2
Usando objetos gráficos Max/MSP e PureData, isso pode levar a uma maneira intuitiva de modificar o comportamento do modelo, conforme mostrado abaixo, onde temos dois atributos do modelo (ou seja, temperatura de geração e modo de geração) e o atributo especial enable
.
Máx/MSP | PureData |
---|---|
A lista de atributos e os valores dependem novamente do modelo e devem ser recuperados na documentação do modelo.
Internamente, nn~
possui um mecanismo de buffer circular que ajuda a manter uma carga computacional razoável. Você pode modificar seu tamanho usando um número inteiro adicional após a declaração do método, conforme mostrado abaixo
Máx/MSP | PureData |
---|---|
A versão Max/MSP do nn~
inclui recursos externos adicionais, nomeadamente mc.nn~
e mcs.nn~
, permitindo o uso das habilidades multicanais do Max 8+ para simplificar o processo de correção com nn~
e opcionalmente diminuir a carga computacional.
Nos exemplos a seguir, dois arquivos de áudio estão sendo codificados e depois decodificados pelo mesmo modelo em paralelo
Este patch pode ser melhorado tanto visualmente quanto computacionalmente falando usando mc.nn~
e operações em lote
Usando mc.nn~
construímos os sinais multicanais nos diferentes lotes . No exemplo acima, cada sinal multicanal terá 2 canais diferentes. Propomos também o mcs.nn~
externo que constrói sinais multicanais nas diferentes dimensões , conforme mostrado no exemplo abaixo
No exemplo acima, os dois sinais multicanais produzidos pelo objeto nn~ rave encode 2
possuem 16 canais cada, correspondendo às 16 dimensões latentes. Isso pode ajudar no patch, ao mesmo tempo que mantém as habilidades de processamento em lote do mc.nn~
, criando um número explícito de entradas/saídas correspondente ao número de exemplos que queremos processar em paralelo.
Para recapitular, o nn~
regular opera em um único exemplo e possui tantas entradas/saídas quanto o modelo possui entradas/saídas. O mc.nn~
externo é como nn~
, mas pode processar vários exemplos ao mesmo tempo . A variante mcs.nn~
é um pouco diferente e pode processar vários exemplos ao mesmo tempo, mas terá uma entrada/saída por exemplo .
Ative/desative a computação para economizar computação sem excluir o modelo. Semelhante a como uma função de bypass funcionaria.
Recarrega dinamicamente o modelo. Pode ser útil se você quiser atualizar periodicamente o estado de um modelo durante um treinamento.
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 produzido dentro de ~/Documents/Max 8/Packages/nn_tilde/externals/
Você pode construir nn~
para PureData adicionando -DPUREDATA_INCLUDE_DIR=/Applications/Pd-X.XX-X.app/Contents/Resources/src/
à chamada 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
Embora nn~ possa ser compilado e usado no Raspberry Pi, talvez seja necessário considerar o uso de modelos mais leves de aprendizado profundo. Atualmente, oferecemos suporte apenas a sistemas operacionais de 64 bits.
Instale nn~ para PureData usando
curl -s https://raw.githubusercontent.com/acids-ircam/nn_tilde/master/install/raspberrypi.sh | bash
Este trabalho é liderado no IRCAM e foi financiado pelos seguintes projetos