MusicGen 是一個簡單且可控的音樂生成模型。它是一個單級自回歸 Transformer 模型,透過 32kHz EnCodec 分詞器進行訓練,並具有 4 個以 50 Hz 採樣的碼本。與 MusicLM 等現有方法不同,MusicGen 不需要自我監督的語意表示,而且它一次產生所有 4 個密碼本。透過在碼本之間引入一個小的延遲,作者表明他們可以並行預測它們,從而每秒音訊只有 50 個自回歸步驟。他們使用 20K 小時的授權音樂來訓練 MusicGen。具體來說,他們依賴 10K 高品質音樂曲目的內部資料集以及 ShutterStock 和 Pond5 音樂資料。
有關此模型的更多信息,請參見此處。
您可以在此處示範此模型或了解如何將其與 Replicate 的 API 一起使用。
Cog 是一種開源工具,它將機器學習模型打包在標準的生產就緒容器中。您可以將打包的模型部署到您自己的基礎設施或複製中,使用者可以透過 Web 介面或 API 與其進行互動。
齒輪。按照以下說明安裝 Cog,或直接運行:
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog
請注意,要使用 Cog,您還需要安裝 Docker。
git clone https://github.com/replicate/cog-musicgen-melody
要運行模型,您需要模型的 Docker 映像的本機副本。您可以透過在呼叫中指定圖像 ID 來滿足此要求以進行predict
,如下所示:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
有關更多信息,請參閱此處的 Cog 部分
或者,您可以透過執行cog build
或讓cog predict
隱式觸發建置過程來自行建置映像。例如,以下將觸發建置過程,然後執行預測:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
請注意,第一次執行cog predict
時,如果本機沒有模型權重和其他必要資源,則會下載它們。此下載只需執行一次。
如果您還沒有這樣做,您應該確保您的模型使用cog predict
在本地運行。這將保證所有資產均可存取。例如,運行:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
前往replicate.com/create 以建立複製模型。如果您想將模型保持私有,請確保指定「私有」。
複製支援在各種 CPU 和 GPU 配置上運行模型。為了獲得最佳效能,您需要在 A100 執行個體上執行此模型。
點擊型號頁面上的“設定”選項卡,向下捲動到“GPU 硬體”,然後選擇“A100”。然後點擊“儲存”。
登入複製:
cog login
使用您在步驟 1 中指定的模型名稱將目前目錄的內容推送到複製:
cog push r8.im/username/modelname
了解有關將模型推送到複製的更多資訊。
對 MusicGen 微調的支援正在開發中。目前,已經透過@chavez 的music_gen
訓練器的改編實現了最低限度的支援。
假設您已設定本機環境(即您已完成使用 Cog 執行下指定的步驟),您可以使用下列命令執行訓練:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog要求輸入資料是一個檔案;但是,我們的訓練腳本需要一個目錄。因此,在生產中,訓練資料應以格式正確的訓練資料目錄的 tarball 形式提供。但是,您可以透過將訓練資料目錄命名為./train_data
來繞過此要求。如果存在這樣的目錄,訓練腳本將嘗試從該目錄載入資料(請參閱train.py
中的第 140-147 行)。
目前,訓練僅支援帶有文字提示的音樂生成。
若要使用您自己的資料訓練模型,請依照下列步驟操作:
.txt
檔案。這些文字檔案應包含您想要與對應音訊檔案關聯的文字提示。例如,如果您有audio_1.wav
,則也必須有audio_1.txt
,且該文字檔案應包含audio_1.wav
的提示。./train_data
,那麼您可以簡單地執行訓練腳本,如下所示: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
不存在,您可以壓縮資料目錄並將壓縮包的路徑傳遞給cog train ...
。然後,訓練腳本將解壓縮您的資料並嘗試載入它。運行此命令以在單一剪輯上進行訓練:
mkdir ./train_data/
wget -P ./train_data/ https://github.com/facebookresearch/audiocraft/raw/main/assets/bach.mp3
echo bach > ./train_data/bach.txt
tar -cvzf train_data.tar.gz train_data/
cog train -i dataset_path=@./data.tar.gz -i epochs=10
然後,您可以像model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
一樣載入模型並產生如下:
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)