🚀 MusicGen - Medium - 1.5B
MusicGenは、テキスト記述やオーディオプロンプトを条件として、高品質な音楽サンプルを生成できるテキストから音楽への変換モデルです。このモデルは、32kHzのEnCodecトークナイザーを使用し、50Hzでサンプリングされた4つのコードブックを持つ単一ステージの自己回帰型Transformerモデルです。既存の手法(MusicLMなど)とは異なり、MusicGenは自己教師付きの意味表現を必要とせず、一度にすべての4つのコードブックを生成します。コードブック間に小さな遅延を導入することで、並列に予測できることを示し、1秒のオーディオにつきわずか50回の自己回帰ステップで済むようになりまし。
🚀 クイックスタート
MusicGenは、テキスト記述やオーディオプロンプトに基づいて高品質な音楽サンプルを生成することができます。以下に、いくつかの使用方法を紹介します。
✨ 主な機能
- テキスト記述やオーディオプロンプトに基づいて音楽を生成します。
- 単一ステージの自己回帰型Transformerモデルで、4つのコードブックを一度に生成します。
- 自己教師付きの意味表現を必要としません。
📦 インストール
🤗 Transformersライブラリを使用する場合
- まず、🤗 Transformersライブラリ と
scipy
をインストールします。
pip install --upgrade pip
pip install --upgrade transformers scipy
audiocraft
ライブラリを使用する場合
pip install git+https://github.com/facebookresearch/audiocraft.git
ffmpeg
をインストールします。
apt-get install ffmpeg
💻 使用例
🤗 Transformersライブラリを使用する場合
基本的な使用法
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-audio", "facebook/musicgen-medium")
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"])
高度な使用法
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-medium")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-medium")
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())
🤗 Transformersライブラリを使用してMusicGenモデルを推論する詳細については、MusicGenドキュメント を参照してください。
Audiocraftライブラリを使用する場合
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 |
モデルのタイプ |
音声トークン化に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で公開されています |
| モデルに関する質問やコメントの送信先 | 質問やコメントは、プロジェクトのGithubリポジトリ を通じて、またはissueを開いて送信できます |
想定される使用目的
- 主な想定使用目的:MusicGenの主な使用目的は、AIベースの音楽生成に関する研究です。これには、生成モデルの限界を調査し、科学の現状をさらに改善するための研究努力や、機械学習の愛好家が生成AIモデルの現在の能力を理解するためのテキストまたはメロディーによる音楽生成が含まれます。
- 主な想定ユーザー:このモデルの主な想定ユーザーは、オーディオ、機械学習、人工知能の研究者、およびこれらのモデルをより深く理解しようとする愛好家です。
- 想定外の使用例:このモデルは、さらなるリスク評価と軽減策を行わずに下流のアプリケーションで使用すべきではありません。また、人々に敵対的または疎外感を与える音楽作品を意図的に作成または拡散するために使用すべきではありません。これには、人々が不快、苦痛、または不快と感じる可能性のある音楽や、歴史的または現在のステレオタイプを広めるコンテンツの生成が含まれます。
評価指標
- モデルの性能測定:標準的な音楽ベンチマークでモデルを評価するために、以下の客観的な測定値を使用しました。
- 事前学習されたオーディオ分類器(VGGish)から抽出された特徴量で計算されたFrechet Audio Distance
- 事前学習されたオーディオ分類器(PaSST)から抽出されたラベル分布のKullback - Leibler Divergence
- 事前学習されたCLAPモデルから抽出されたオーディオ埋め込みとテキスト埋め込み間のCLAP Score
さらに、人間の参加者を対象に定性的な調査を行い、以下の軸でモデルの性能を評価しました。
- 音楽サンプルの全体的な品質
- 提供されたテキスト入力に対するテキストの関連性
- メロディーガイド付き音楽生成におけるメロディーへの忠実度
性能測定と人間による調査の詳細は、論文に記載されています。
- 決定閾値:該当なし
評価データセット
モデルは、MusicCapsベンチマーク と、学習セットとアーティストが重複しないドメイン内のホールドアウト評価セットで評価されました。
学習データセット
モデルは、以下のソースからのライセンス付きデータで学習されました。Meta Music Initiative Sound Collection、Shutterstock music collection、Pond5 music collection。学習セットと対応する前処理の詳細については、論文を参照してください。
評価結果
公開されたモデルをMusicCapsで評価した客観的な指標を以下に示します。公開されたモデルについては、すべてのデータセットを最先端の音楽ソース分離手法、具体的にはオープンソースのHybrid Transformer for Music Source Separation (HT - Demucs) を使用して処理し、楽器部分のみを残しました。これが、論文で使用されたモデルと客観的な指標に差がある理由です。
モデル |
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 |
詳細な情報は、論文 Simple and Controllable Music Generation の結果セクションを参照してください。
制限とバイアス
- データ:モデルの学習に使用されるデータソースは音楽専門家によって作成され、権利者との法的契約に基づいています。モデルは20,000時間のデータで学習されており、より大きなデータセットでモデルを拡張することで、モデルの性能をさらに向上させることができると考えています。
- 軽減策:データソースからは、対応するタグを使用してボーカルが削除され、その後最先端の音楽ソース分離手法、具体的にはオープンソースのHybrid Transformer for Music Source Separation (HT - Demucs) を使用して処理されています。
- 制限:
- モデルは現実的なボーカルを生成することができません。
- モデルは英語の記述で学習されており、他の言語では性能が低下します。
- モデルはすべての音楽スタイルや文化に対して同じように良好な性能を発揮しません。
- モデルは時々曲の終わりを生成し、無音になることがあります。
- どのようなタイプのテキスト記述が最良の生成結果をもたらすかを評価することは困難な場合があります。満足のいく結果を得るためには、プロンプトエンジニアリングが必要になることがあります。
- バイアス:データのソースは多様性に欠ける可能性があり、すべての音楽文化がデータセットに均等に表されているわけではありません。モデルは、存在する幅広い音楽ジャンルに対して同じように良好な性能を発揮しない可能性があります。モデルから生成されるサンプルは、学習データからのバイアスを反映します。このモデルに関するさらなる研究では、例えば学習データを多様かつ包括的にすることで、文化のバランスの取れた公正な表現方法を含めるべきです。
- リスクと害:モデルのバイアスと制限により、偏った、不適切な、または不快なと感じられるサンプルが生成される可能性があります。研究を再現し、新しいモデルを学習するためのコードを提供することで、新しい、より代表的なデータへの応用範囲を広げることができると考えています。
- 使用例:ユーザーは、モデルのバイアス、制限、およびリスクを認識している必要があります。MusicGenは、制御可能な音楽生成に関する人工知能研究用に開発されたモデルです。したがって、リスクのさらなる調査と軽減策を行わずに下流のアプリケーションで使用すべきではありません。
サンプルの試用
自分でMusicGenを試してみましょう!
- Audiocraft Colab:
- Hugging Face Colab:
- Hugging Face Demo: