🚀 MusicGen - Stereo - Medium - 1.5B
MusicGenは、テキスト記述やオーディオプロンプトを条件として、高品質な音楽サンプルを生成できるテキスト→音楽変換モデルです。今回は、ステレオ音声に対応したモデルを公開しています。
🚀 クイックスタート
MusicGenを自分で試してみましょう!
- Audiocraft Colab:
- Hugging Face Colab:
- Hugging Face Demo:
✨ 主な機能
- テキスト記述やオーディオプロンプトを条件として、高品質な音楽サンプルを生成できます。
- 単一ステージの自己回帰型Transformerモデルで、32kHzのEnCodecトークナイザーを使用して訓練されています。
- 既存の方法とは異なり、自己教師付きの意味表現を必要とせず、一度に4つのコードブックを生成します。
📦 インストール
🤗 Transformersを使用する場合
- まず、🤗 Transformersライブラリ とscipyをインストールします。
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git scipy
Text-to-Audio
(TTA) パイプラインを介して推論を実行します。
import torch
import soundfile as sf
from transformers import pipeline
synthesiser = pipeline("text-to-audio", "facebook/musicgen-stereo-medium", 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-medium")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-stereo-medium").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ノートブックで以下のコードを実行するか、
soundfile
などのサードパーティライブラリを使用して .wav
ファイルとして保存します。
from IPython.display import Audio
sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].cpu().numpy(), rate=sampling_rate)
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)
Audiocraftを使用する場合
- まず、
audiocraft
ライブラリ をインストールします。
pip install git+https://github.com/facebookresearch/audiocraft.git
ffmpeg
がインストールされていることを確認します。
apt get install ffmpeg
- 以下のPythonコードを実行します。
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained("medium")
model.set_generation_params(duration=8)
descriptions = ["happy rock", "energetic EDM"]
wav = model.generate(descriptions)
for idx, one_wav in enumerate(wav):
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
📚 ドキュメント
モデルの詳細
属性 |
详情 |
開発組織 |
Meta AIのFAIRチーム |
モデルの日付 |
2023年4月から5月の間に訓練されました。 |
モデルのバージョン |
これはモデルのバージョン1です。 |
モデルのタイプ |
MusicGenは、オーディオトークン化用のEnCodecモデルと、音楽モデリング用のTransformerアーキテクチャに基づく自己回帰型言語モデルで構成されています。モデルには、300M、1.5B、3.3Bパラメータの異なるサイズがあり、テキスト→音楽生成タスク用に訓練されたモデルと、メロディーガイド付き音楽生成用に訓練されたモデルの2つのバリエーションがあります。 |
詳細情報の論文またはリソース |
詳細情報は、論文 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で公開されています。 |
| 質問やコメントの送信先 | MusicGenに関する質問やコメントは、プロジェクトのGithubリポジトリ を介して送信するか、イシューを開いてください。 |
想定される使用方法
- 主な想定使用目的:MusicGenの主な使用目的は、AIベースの音楽生成に関する研究です。
- 主な想定ユーザー:このモデルの主な想定ユーザーは、オーディオ、機械学習、人工知能の研究者、およびこれらのモデルをより深く理解しようとするアマチュアです。
- 想定外の使用例:このモデルは、リスク評価と軽減策をさらに行わない限り、下流のアプリケーションで使用しないでください。また、人々に敵対的または疎外感を与える音楽作品を意図的に作成または拡散するために使用しないでください。
評価指標
- モデルの性能評価指標:標準的な音楽ベンチマークでモデルを評価するために、以下の客観的な指標を使用しました。
- 事前学習されたオーディオ分類器 (VGGish) から抽出された特徴量に対して計算されたFrechet Audio Distance
- 事前学習されたオーディオ分類器 (PaSST) から抽出されたラベル分布に対するKullback-Leibler Divergence
- 事前学習されたCLAPモデルから抽出されたオーディオ埋め込みとテキスト埋め込みの間のCLAPスコア
- 人間による定性的評価:人間の参加者を対象に定性的な研究を行い、以下の軸でモデルの性能を評価しました。
- 音楽サンプルの全体的な品質
- 提供されたテキスト入力に対するテキストの関連性
- メロディーガイド付き音楽生成におけるメロディーの忠実度
評価データセット
モデルは、MusicCapsベンチマーク と、訓練セットとアーティストが重複しないドメイン内のホールドアウト評価セットで評価されました。
訓練データセット
モデルは、以下のソースから取得したライセンス付きデータで訓練されました。
評価結果
以下は、公開されたモデルでMusicCapsで得られた客観的な指標です。
モデル |
Frechet Audio Distance |
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 |
制限事項とバイアス
- データ:このモデルの訓練に使用されたデータソースは、音楽専門家によって作成され、権利者との法的契約の対象となっています。モデルは20,000時間のデータで訓練されていますが、より大きなデータセットでモデルを拡張することで、モデルの性能をさらに向上させることができると考えています。
- 軽減策:データソースからボーカルを対応するタグを使用して削除し、その後、最先端の音楽ソース分離方法を使用して、オープンソースのHybrid Transformer for Music Source Separation (HT-Demucs) を使用しています。
- 制限事項:
- このモデルは、リアルなボーカルを生成することができません。
- このモデルは英語の記述で訓練されており、他の言語では性能が低下します。
- このモデルは、すべての音楽スタイルや文化に対して同じように機能しません。
- このモデルは、時々曲の終わりを生成し、無音になることがあります。
- どのようなタイプのテキスト記述が最良の生成結果をもたらすかを評価することは、時々困難です。満足のいく結果を得るためには、プロンプトエンジニアリングが必要になる場合があります。
- バイアス:データのソースは多様性に欠ける可能性があり、すべての音楽文化がデータセットに均等に表されているわけではありません。このモデルは、存在する様々な音楽ジャンルに対して同じように機能しない可能性があります。
- リスクと害:このモデルのバイアスと制限により、偏見、不適切または不快と見なされるサンプルが生成される可能性があります。
🔧 技術詳細
ステレオ対応モデルは、モノラルモデルから始めて20万回の更新で微調整されました。それ以外の訓練データは同一で、基本モードと機能や制限事項を共有しています。ステレオモデルは、EnCodecモデルから2つのトークンストリームを取得し、遅延パターンを使用してそれらをインターリーブすることで動作します。
ステレオ音声は、奥行きと方向を持った音を再生するために使用される技術です。2つの独立したオーディオチャンネルをスピーカー(またはヘッドフォン)を介して再生することで、複数の方向から音が来る印象を与えます。
📄 ライセンス
コードはMITライセンスで公開され、モデルの重みはCC-BY-NC 4.0で公開されています。