Musicgen Stereo Small
模型概述
模型特點
模型能力
使用案例
🚀 MusicGen - 立體聲 - 小型 - 300M
MusicGen 是一個文本到音樂的模型,能夠根據文本描述或音頻提示生成高質量的音樂樣本。本項目發佈了一組支持立體聲的模型,為音樂生成研究提供了更多可能。
🚀 快速開始
你可以使用 🤗 Transformers 庫從 main
分支開始本地運行 MusicGen 立體聲模型。以下是具體步驟:
- 首先安裝 🤗 Transformers 庫 和 scipy:
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git scipy
- 通過
Text-to-Audio
(TTA) 管道運行推理。你可以使用幾行代碼通過 TTA 管道推理 MusicGen 模型!
import torch
import soundfile as sf
from transformers import pipeline
synthesiser = pipeline("text-to-audio", "facebook/musicgen-stereo-small", device="cuda:0", torch_dtype=torch.float16)
music = synthesiser("lo-fi music with a soothing melody", forward_params={"max_new_tokens": 256})
sf.write("musicgen_out.wav", music["audio"][0].T, music["sampling_rate"])
- 通過 Transformers 建模代碼運行推理。你可以使用處理器 + 生成代碼將文本轉換為單聲道 32 kHz 音頻波形,以實現更精細的控制。
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-stereo-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-stereo-small").to("cuda")
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",
).to("cuda")
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].cpu().numpy(), rate=sampling_rate)
或者使用第三方庫(如 soundfile
)將它們保存為 .wav
文件:
import soundfile as sf
sampling_rate = model.config.audio_encoder.sampling_rate
audio_values = audio_values.cpu().numpy()
sf.write("musicgen_out.wav", audio_values[0].T, sampling_rate)
更多關於使用 🤗 Transformers 庫進行 MusicGen 模型推理的詳細信息,請參考 MusicGen 文檔。
✨ 主要特性
- 立體聲支持:發佈了一組支持立體聲的模型,從單聲道模型開始微調 200k 次更新。立體聲通過從 EnCodec 模型獲取 2 個令牌流,並使用延遲模式交錯這些令牌來實現。
- 高質量音樂生成:能夠根據文本描述或音頻提示生成高質量的音樂樣本。
- 單階段自迴歸:MusicGen 是一個單階段自迴歸 Transformer 模型,在 32kHz EnCodec 分詞器上進行訓練,具有 4 個碼本,採樣率為 50 Hz。與現有方法不同,它不需要自監督語義表示,並且可以一次性生成所有 4 個碼本。
- 簡單 API 和多模型支持:提供簡單的 API 和 10 個預訓練模型,包括不同大小和功能的模型。
📦 安裝指南
使用 🤗 Transformers 庫
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git scipy
使用 Audiocraft 庫
pip install git+https://github.com/facebookresearch/audiocraft.git
確保安裝 ffmpeg
:
apt get install ffmpeg
💻 使用示例
基礎用法
通過 Text-to-Audio
(TTA) 管道運行推理:
import torch
import soundfile as sf
from transformers import pipeline
synthesiser = pipeline("text-to-audio", "facebook/musicgen-stereo-small", device="cuda:0", torch_dtype=torch.float16)
music = synthesiser("lo-fi music with a soothing melody", forward_params={"max_new_tokens": 256})
sf.write("musicgen_out.wav", music["audio"][0].T, music["sampling_rate"])
高級用法
通過 Transformers 建模代碼運行推理:
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-stereo-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-stereo-small").to("cuda")
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",
).to("cuda")
audio_values = model.generate(**inputs, max_new_tokens=256)
📚 詳細文檔
模型詳情
屬性 | 詳情 |
---|---|
開發組織 | 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 上獲得的客觀指標:
模型 | 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 |
侷限性和偏差
- 數據方面:用於訓練模型的數據源由音樂專業人士創建,並與權利持有者簽訂了法律協議。模型在 20K 小時的數據上進行訓練,擴大數據集規模可能會進一步提高模型性能。
- 緩解措施:使用相應標籤和最先進的音樂源分離方法(開源的 Hybrid Transformer for Music Source Separation (HT - Demucs))從數據源中去除人聲。
- 侷限性:模型無法生成逼真的人聲;以英語描述進行訓練,在其他語言中的表現不佳;對所有音樂風格和文化的表現不一致;有時會生成歌曲結尾並陷入沉默;有時難以確定哪種文本描述能產生最佳生成效果,可能需要進行提示工程。
- 偏差:數據源可能缺乏多樣性,並非所有音樂文化在數據集中都得到平等代表。模型在各種音樂流派上的表現可能不一致,生成的樣本會反映訓練數據的偏差。
- 風險和危害:模型的偏差和侷限性可能導致生成被認為有偏差、不適當或冒犯性的樣本。
- 使用建議:用戶必須瞭解模型的偏差、侷限性和風險。MusicGen 是為可控音樂生成的人工智能研究而開發的模型,在未進行進一步調查和風險緩解的情況下,不應將其用於下游應用。
🔧 技術細節
MusicGen 是一個單階段自迴歸 Transformer 模型,在 32kHz EnCodec 分詞器上進行訓練,具有 4 個碼本,採樣率為 50 Hz。與現有方法(如 MusicLM)不同,它不需要自監督語義表示,並且可以一次性生成所有 4 個碼本。通過在碼本之間引入小的延遲,可以並行預測它們,從而每秒音頻僅需 50 個自迴歸步驟。
立體聲模型通過從 EnCodec 模型獲取 2 個令牌流,並使用延遲模式交錯這些令牌來實現。立體聲是一種用於重現具有深度和方向感的聲音的技術,使用兩個獨立的音頻通道通過揚聲器或耳機播放,使聽眾感覺從不同角度聆聽。
📄 許可證
代碼遵循 MIT 許可證,模型權重遵循 CC - BY - NC 4.0 許可證。







