RAVE 的正式實現:Antoine Caillon 和 Philippe Esling 的用於快速、高品質神經音訊合成的變分自動編碼器(文章連結)。
如果您使用 RAVE 作為音樂表演或安裝的一部分,請務必引用此儲存庫或文章!
如果您想分享/討論/詢問有關 RAVE 的事情,您可以在我們的 Discord 伺服器中進行!
請在發布問題之前查看常見問題!
RAVE VST適用於 Windows、Mac 和 Linux 的 RAVE VST 在對應的 Forum IRCAM 網頁上以測試版形式提供。對於問題,請在此處或論壇 IRCAM 討論頁面上寫下問題。
教學:IRCAM 論壇網頁上提供了新教學課程,影片版本即將推出!
RAVE 模型的原始實作可以使用恢復
git checkout v1
使用以下指令安裝 RAVE
pip install acids-rave
警告強烈建議在acids-rave
之前安裝torch
和torchaudio
,以便您可以在圖書館網站上選擇合適的 torch 版本。為了將來與新設備(和現代 Python 環境)的兼容性, rave-acids
不再強制執行 torch==1.13。
您的電腦上需要ffmpeg 。您可以使用以下命令在虛擬環境中本機安裝它
conda install ffmpeg
感謝 hexorcismos,現在可以使用訓練 RAVEv2 的合作實驗室了!
訓練 RAVE 模型通常涉及 3 個獨立的步驟,即資料集準備、訓練和匯出。
您可以知道使用兩種方法來準備資料集:常規方法和惰性方法。延遲預處理允許直接在原始檔案(即 mp3、ogg)上訓練 RAVE,而無需先轉換它們。警告:延遲資料集載入會在訓練期間大幅增加 CPU 負載,尤其是在 Windows 上。然而,當對大型音訊語料庫進行訓練時,這可能很有用,而大型音訊語料庫在未壓縮時不適合硬碟。無論如何,請使用以下方法準備資料集
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 有許多不同的配置。 v1 的改進版本稱為v2
,因此可以使用
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
我們也提供離散配置,類似於 SoundStream 或 EnCodec
rave train --config discrete ...
預設情況下,RAVE 是使用非因果卷積建構的。如果你想讓模型具有因果性(從而降低模型的整體延遲),可以使用因果模式
rave train --config discrete --config causal ...
2.3 中的新增功能還可以透過資料增強來提高模型在低資料情況下的泛化能力。您可以透過使用--augment
關鍵字新增擴充設定檔來新增資料擴充
rave train --config v2 --augment mute --augment compress
許多其他設定檔在rave/configs
中可用且可以組合。以下是所有可用配置和增強功能的清單:
類型 | 姓名 | 描述 |
---|---|---|
建築學 | v1 | 原始連續模型(最小GPU記憶體:8Go) |
v2 | 改進的連續模型(更快、更高品質)(最小 GPU 記憶體:16Go) | |
v2_小 | v2 具有較小的感受野、經過調整的對抗訓練和雜訊產生器,適用於靜態訊號的音色傳輸(最小 GPU 記憶體:8Go) | |
v2_nopqmf | (實驗)產生器中沒有 pqmf 的 v2(對於彎曲目的更有效)(最小 GPU 記憶體:16Go) | |
v3 | v2 具有 Snake 啟動、描述判別器和用於真實風格傳輸的自適應實例歸一化(最小 GPU 記憶體:32Go) | |
離散的 | 離散模型(類似SoundStream或EnCodec)(最小GPU記憶體:18Go) | |
奧恩克斯 | 用於 onnx 使用的 Noiseless v1 配置(最小 GPU 記憶體:6Go) | |
覆盆子 | 輕量級配置,相容於即時 RaspberryPi 4 推理(最低 GPU 記憶體:5Go) | |
正則化(僅限 v2) | 預設 | 變分自動編碼器目標 (ELBO) |
瓦瑟施泰因 | Wasserstein 自動編碼器目標 (MMD) | |
球形 | 球形自動編碼器物鏡 | |
鑑別器 | 光譜鑑別器 | 使用 EnCodec 的 MultiScale 鑑別器。 |
其他的 | 因果關係 | 使用因果卷積 |
噪音 | 啟用噪音合成器 V2 | |
雜交種 | 啟用梅爾譜圖輸入 | |
增強 | 沉默的 | 隨機靜音資料批次(預設機率:0.1)。強制模型學習沉默 |
壓縮 | 隨機壓縮波形(相當於批次的光非線性放大) | |
獲得 | 對波形套用隨機增益(預設範圍:[-6, 3]) |
訓練完成後,使用以下命令將模型匯出到 torchscript 文件
rave export --run /path/to/your/run (--streaming)
設定--streaming
標誌將啟用快取卷積,使模型與即時處理相容。如果您忘記使用串流模式並嘗試在 Max 中載入模型,您將聽到咔嗒聲。
對於離散模型,我們將使用者重定向到此處的msprior
庫。然而,由於該庫仍處於實驗階段,因此版本 1.x 中的先前版本已在 v2.3 中重新整合。
要訓練預訓練 RAVE 模型的先驗:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
這將在預訓練模型path/to/your/run
的潛在變數上訓練先驗,並將模型和張量板日誌保存到資料夾/path/to/output
。
要編寫先驗和 RAVE 模型的腳本,請透過向預訓練的先驗提供--prior
關鍵字來匯出模型:
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
這裡提供了幾種預先訓練的流模型。我們將不斷更新新型號的清單。
本節介紹如何將 RAVE 載入到nn~
中,以便與 Max/MSP 或 PureData 一起即時使用。
可以使用以下語法將電腦上名為darbouka.gin
的預訓練 RAVE 模型載入到nn~
中,其中預設方法設定為前向(即編碼然後解碼)
這與以下補丁的作用相同,但速度稍快一些。
明確存取 RAVE 產生的潛在表示允許我們使用 Max/MSP 或 PureData 訊號處理工具與表示進行互動:
預設情況下,RAVE可以用作風格遷移工具,基於模型的大壓縮比。我們最近新增了一項受 StyleGAN 啟發的技術,將自適應實例歸一化納入重建過程,有效地允許使用nn~
的屬性系統直接在 Max/MSP 或 PureData 內部定義來源和目標樣式。
其他屬性,例如enable
或gpu
可以啟用/停用運算,或使用 GPU 來加速(仍處於實驗階段)。
v2.3 中發布了批量生成腳本,允許轉換大量文件
rave generate model_path path_1 path_2 --out out_path
其中model_path
是經過訓練的模型(原始或腳本化)的路徑, path_X
是音訊檔案或目錄的列表, out_path
是各代的輸出目錄。
如果您有疑問,想要分享您使用 RAVE 的經驗或分享使用模型完成的音樂作品,您可以使用「討論」標籤!
示範您可以使用 RAVE 和 nn~ external for maxmsp 做什麼!
使用nn~進行puredata,RAVE可以在嵌入式平台上即時使用!
問題:我的預處理卡住了,顯示0it[00:00, ?it/s]
答:這意味著資料集中的音訊檔案太短,無法為 RAVE 提供足夠的時間範圍。嘗試使用帶有preprocess
--num_signal XXX(samples)
來減小信號窗口,之後不要忘記添加帶有train
--n_signal XXX(samples)
問題:在訓練期間,我遇到類似ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
異常
答:這意味著您的資料集沒有足夠的資料批次來計算實習潛在 PCA,這需要至少 128 個範例(然後是批次)。
這項工作由 IRCAM 領導,並獲得以下項目的資助