模型概述
模型特點
模型能力
使用案例
🚀 MusicGen - Large - 3.3B
MusicGen是一個文本到音樂的模型,能夠根據文本描述或音頻提示生成高質量的音樂樣本。它基於Transformer架構,為音樂生成研究和應用提供了強大的支持。
🚀 快速開始
你可以通過以下方式體驗MusicGen:
✨ 主要特性
- 單階段自迴歸模型:MusicGen是一個單階段自迴歸Transformer模型,基於32kHz EnCodec分詞器進行訓練,擁有4個碼本,採樣頻率為50Hz。
- 無需自監督語義表示:與MusicLM等現有方法不同,MusicGen不需要自監督語義表示,並且可以一次性生成所有4個碼本。
- 並行預測碼本:通過在碼本之間引入小的延遲,可以並行預測碼本,每秒音頻僅需50個自迴歸步驟。
📦 安裝指南
使用🤗 Transformers庫
你可以使用🤗 Transformers庫(版本4.31.0及以上)在本地運行MusicGen:
pip install --upgrade pip
pip install --upgrade transformers scipy
使用Audiocraft庫
也可以通過原始的Audiocraft庫在本地運行MusicGen:
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-large")
music = synthesiser("lo-fi music with a soothing melody", forward_params={"do_sample": True})
scipy.io.wavfile.write("musicgen_out.wav", rate=music["sampling_rate"], data=music["audio"])
高級用法
使用處理器 + 生成代碼將文本轉換為單聲道32kHz音頻波形,以實現更精細的控制:
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-large")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-large")
inputs = processor(
text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
播放或保存音頻
在ipynb筆記本中播放音頻:
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("large")
model.set_generation_params(duration=8) # generate 8 seconds.
descriptions = ["happy rock", "energetic EDM"]
wav = model.generate(descriptions) # generates 2 samples.
for idx, one_wav in enumerate(wav):
# Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發組織 | Meta AI的FAIR團隊 |
模型日期 | 2023年4月至2023年5月進行訓練 |
模型版本 | 版本1 |
模型類型 | 由用於音頻分詞的EnCodec模型和基於Transformer架構的自迴歸語言模型組成,用於音樂建模。模型有不同大小:300M、1.5B和3.3B參數;有兩種變體:用於文本到音樂生成任務的模型和用於旋律引導音樂生成的模型 |
更多信息資源 | 可在論文 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倉庫發送問題和評論,或創建issue |
預期用途
- 主要預期用途:MusicGen主要用於基於人工智能的音樂生成研究,包括探索和理解生成模型的侷限性以改進科學水平,以及讓機器學習愛好者通過文本或旋律引導生成音樂來了解生成式AI模型的能力。
- 主要預期用戶:音頻、機器學習和人工智能領域的研究人員,以及希望更好理解這些模型的愛好者。
- 非預期使用場景:在沒有進一步風險評估和緩解措施的情況下,不應將該模型用於下游應用。不得使用該模型故意創建或傳播會給人們帶來不良環境的音樂作品,包括生成令人不安、痛苦或冒犯性的音樂,或傳播歷史或當前刻板印象的內容。
評估指標
- 模型性能指標:使用以下客觀指標在標準音樂基準上評估模型:
- 基於預訓練音頻分類器(VGGish)提取的特徵計算的Frechet音頻距離
- 基於預訓練音頻分類器(PaSST)提取的標籤分佈的Kullback - Leibler散度
- 基於預訓練CLAP模型提取的音頻嵌入和文本嵌入的CLAP分數
- 定性研究:通過人類參與者進行定性研究,從以下方面評估模型性能:
- 音樂樣本的整體質量
- 與提供的文本輸入的相關性
- 旋律引導音樂生成中對旋律的遵循程度
評估數據集
模型在MusicCaps基準和一個領域內保留評估集上進行評估,評估集與訓練集無藝術家重疊。
訓練數據集
模型在許可數據上進行訓練,數據來源包括:Meta Music Initiative Sound Collection、Shutterstock音樂庫和Pond5音樂庫。更多關於訓練集和預處理的細節可參考論文。
評估結果
以下是發佈的模型在MusicCaps上獲得的客觀指標。對於公開發布的模型,所有數據集都經過了最先進的音樂源分離方法處理,即使用開源的Hybrid Transformer for Music Source Separation (HT - Demucs),以僅保留樂器部分。這解釋了與論文中使用的模型在客觀指標上的差異。
模型 | Frechet音頻距離 | KLD | 文本一致性 | 色度餘弦相似度 |
---|---|---|---|---|
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是為可控音樂生成的人工智能研究而開發的模型,在沒有進一步調查和風險緩解的情況下,不應將其用於下游應用。
⚠️ 重要提示
模型存在一定的侷限性和偏差,在使用時需謹慎評估風險。
💡 使用建議
若要獲得更好的生成效果,可嘗試進行提示工程;在使用模型進行下游應用前,務必進行充分的風險評估和緩解。







