取得最新版本的 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 領導,並由以下項目資助