模型概述
模型特點
模型能力
使用案例
🚀 MusicGen - 中等規模 - 15億參數模型
MusicGen 是一款文本轉音樂模型,能夠根據文本描述或音頻提示生成高質量的音樂樣本。它採用單階段自迴歸 Transformer 架構,基於 32kHz 的 EnCodec 分詞器進行訓練,擁有 4 個碼本,採樣頻率為 50Hz。與 MusicLM 等現有方法不同,MusicGen 無需自監督語義表示,且能一次性生成全部 4 個碼本。通過在碼本間引入小延遲,實現了碼本的並行預測,每秒音頻僅需 50 個自迴歸步驟。
MusicGen 由 Jade Copet、Felix Kreuk、Itai Gat、Tal Remez、David Kant、Gabriel Synnaeve、Yossi Adi、Alexandre Défossez 發表於論文 Simple and Controllable Music Generation。
目前發佈了四個檢查點:
🚀 快速開始
你可以親自體驗 MusicGen 的魅力!
- Audiocraft Colab:
- Hugging Face Colab:
- Hugging Face 演示:
✨ 主要特性
- 基於文本描述或音頻提示生成高質量音樂樣本。
- 單階段自迴歸 Transformer 架構,無需自監督語義表示。
- 一次性生成 4 個碼本,通過引入延遲實現並行預測。
📦 安裝指南
使用 🤗 Transformers 庫
你可以使用 🤗 Transformers 庫(版本 4.31.0 及以上)在本地運行 MusicGen。
- 首先安裝 🤗 Transformers 庫 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
使用 Audiocraft 庫
你也可以通過原始的 Audiocraft 庫 在本地運行 MusicGen。
- 首先安裝
audiocraft
庫:
pip install git+https://github.com/facebookresearch/audiocraft.git
- 確保安裝了
ffmpeg
:
apt-get install ffmpeg
💻 使用示例
基礎用法
使用 🤗 Transformers 庫的 Text-to-Audio
(TTA)管道進行推理
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-audio", "facebook/musicgen-medium")
music = synthesiser("帶有舒緩旋律的低保真音樂", forward_params={"do_sample": True})
scipy.io.wavfile.write("musicgen_out.wav", rate=music["sampling_rate"], data=music["audio"])
使用 Transformers 建模代碼進行推理
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-medium")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-medium")
inputs = processor(
text=["帶有低沉鼓點和合成器的 80 年代流行曲目", "帶有響亮吉他和沉重鼓點的 90 年代搖滾歌曲"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
在 Jupyter Notebook 中播放音頻樣本
from IPython.display import Audio
sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)
使用第三方庫(如 scipy
)將音頻保存為 .wav
文件
import scipy
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())
高級用法
使用 Audiocraft 庫運行推理
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained("medium")
model.set_generation_params(duration=8) # 生成 8 秒的音頻
descriptions = ["歡快的搖滾", "充滿活力的電子舞曲"]
wav = model.generate(descriptions) # 生成 2 個音頻樣本
for idx, one_wav in enumerate(wav):
# 將音頻保存為 {idx}.wav 文件,並進行 -14 db LUFS 的響度歸一化
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發組織 | Meta AI 的 FAIR 團隊 |
模型日期 | 2023 年 4 月至 5 月進行訓練 |
模型版本 | 版本 1 |
模型類型 | 由用於音頻分詞的 EnCodec 模型和基於 Transformer 架構的自迴歸語言模型組成,用於音樂建模。模型有不同大小(3 億、15 億和 33 億參數)和兩種變體(用於文本轉音樂生成任務的模型和用於旋律引導音樂生成的模型) |
更多信息資源 | 可參考論文 Simple and Controllable Music Generation |
引用詳情 | @misc{copet2023simple, title={Simple and Controllable Music Generation}, author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez}, year={2023}, eprint={2306.05284}, archivePrefix={arXiv}, primaryClass={cs.SD}} |
許可證 | 代碼採用 MIT 許可證發佈,模型權重採用 CC-BY-NC 4.0 許可證發佈 |
問題反饋途徑 | 可通過項目的 Github 倉庫 發送關於 MusicGen 的問題和建議,或提交 issue |
預期用途
- 主要預期用途:MusicGen 主要用於基於人工智能的音樂生成研究,包括探索和理解生成模型的侷限性以推動科學進步,以及讓機器學習愛好者通過文本或旋律引導生成音樂來了解生成式人工智能模型的當前能力。
- 主要預期用戶:音頻、機器學習和人工智能領域的研究人員,以及希望更好理解這些模型的愛好者。
- 超出適用範圍的用例:在未進行進一步風險評估和緩解措施之前,該模型不應用於下游應用。不得使用該模型故意創建或傳播會給人們帶來不良影響的音樂作品,包括生成令人不安、苦惱或冒犯性的音樂,以及傳播歷史或當前刻板印象的內容。
評估指標
- 模型性能指標:使用以下客觀指標在標準音樂基準上評估模型:
- 基於預訓練音頻分類器(VGGish)提取的特徵計算的 Fréchet 音頻距離。
- 基於預訓練音頻分類器(PaSST)提取的標籤分佈計算的 Kullback-Leibler 散度。
- 基於預訓練 CLAP 模型提取的音頻嵌入和文本嵌入計算的 CLAP 分數。
- 此外,還通過人類參與者進行了定性研究,從音樂樣本的整體質量、與輸入文本的相關性以及旋律引導音樂生成中對旋律的遵循程度等方面評估模型性能。
- 決策閾值:不適用。
評估數據集
模型在 MusicCaps 基準 和一個領域內保留評估集上進行了評估,評估集與訓練集無藝術家重疊。
訓練數據集
模型在以下授權數據源上進行訓練:Meta 音樂倡議聲音庫、Shutterstock 音樂庫 和 Pond5 音樂庫。更多關於訓練集和預處理的詳細信息可參考論文。
評估結果
以下是在 MusicCaps 基準上使用發佈的模型獲得的客觀指標:
模型 | Fréchet 音頻距離 | Kullback-Leibler 散度 | 文本一致性 | 色度餘弦相似度 |
---|---|---|---|---|
facebook/musicgen-small | 4.88 | 1.42 | 0.27 | - |
facebook/musicgen-medium | 5.14 | 1.38 | 0.28 | - |
facebook/musicgen-large | 5.48 | 1.37 | 0.28 | - |
facebook/musicgen-melody | 4.93 | 1.41 | 0.27 | 0.44 |
更多關於性能指標和人類研究的詳細信息可在論文中找到。
侷限性和偏差
- 數據方面:用於訓練模型的數據源由音樂專業人士創建,並與版權持有者簽訂了法律協議。模型在 20000 小時的數據上進行訓練,擴大訓練數據集規模有望進一步提升模型性能。
- 緩解措施:通過相應標籤去除數據源中的人聲,然後使用最先進的音樂源分離方法(開源的 Hybrid Transformer for Music Source Separation,即 HT-Demucs)進行處理。
- 侷限性:
- 無法生成逼真的人聲。
- 基於英文描述進行訓練,在其他語言上的表現不佳。
- 對所有音樂風格和文化的處理效果不一致。
- 有時會生成結尾為靜音的音頻。
- 難以確定哪種文本描述能產生最佳生成效果,可能需要進行提示工程以獲得滿意結果。
- 偏差:數據源可能缺乏多樣性,並非所有音樂文化都在數據集中得到平等體現。模型在各種音樂流派上的表現可能不一致,生成的音頻樣本會反映訓練數據中的偏差。未來的研究應採用平衡和公正的文化表示方法,例如擴大訓練數據的多樣性和包容性。
- 風險和危害:模型的偏差和侷限性可能導致生成有偏差、不適當或冒犯性的音頻樣本。提供可復現研究和訓練新模型的代碼有助於將應用擴展到更新、更具代表性的數據上。
- 使用場景:用戶必須瞭解模型的偏差、侷限性和風險。MusicGen 是為可控音樂生成的人工智能研究而開發的模型,在未進一步研究和緩解風險的情況下,不應將其用於下游應用。
引用信息
@misc{copet2023simple,
title={Simple and Controllable Music Generation},
author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez},
year={2023},
eprint={2306.05284},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
許可證
代碼採用 MIT 許可證發佈,模型權重採用 CC-BY-NC 4.0 許可證發佈。
問題反饋
你可以通過項目的 Github 倉庫 發送關於 MusicGen 的問題和建議,或提交 issue。







