🚀 MusicGen - Stereo - Large - 3.3B
MusicGenは、テキスト記述やオーディオプロンプトを条件として、高品質な音楽サンプルを生成できるテキストから音楽への変換モデルです。今回は、ステレオ音声に対応したモデルを公開しています。
🚀 クイックスタート
MusicGenを使って音楽を生成する方法を紹介します。以下の手順に従って、音楽生成を試してみましょう。
✨ 主な機能
- テキスト記述やオーディオプロンプトを条件として、高品質な音楽サンプルを生成できます。
- ステレオ音声に対応したモデルを提供しています。
- 簡単なAPIと10種類の事前学習済みモデルを提供しています。
📦 インストール
🤗 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-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-large")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-stereo-large").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)
- 音声サンプルを聴くか、
.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("large")
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アーキテクチャに基づく自己回帰言語モデル |
詳細情報の論文やリソース |
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を開くことで送信できます |
想定される使用方法
- 主な想定使用目的:AIによる音楽生成の研究です。テキストやメロディによる音楽生成の研究や、生成AIモデルの能力の理解などに使用されます。
- 主な想定ユーザー:オーディオ、機械学習、人工知能の研究者や、これらのモデルを理解しようとするアマチュアです。
- 想定外の使用事例:リスク評価と軽減策を行わずに下流のアプリケーションで使用しないでください。また、人にとって敵対的または疎外感を与える音楽を意図的に作成または拡散しないでください。
評価指標
- モデルの性能評価指標:標準的な音楽ベンチマークでモデルを評価するために、以下の客観的な指標を使用しました。
- 事前学習されたオーディオ分類器(VGGish)から抽出された特徴量に基づくFrechet Audio Distance
- 事前学習されたオーディオ分類器(PaSST)から抽出されたラベル分布のKullback - Leibler Divergence
- 事前学習されたCLAPモデルから抽出されたオーディオ埋め込みとテキスト埋め込みの間のCLAP Score
- 定性的な評価:人間の参加者を対象とした定性的な研究も行い、以下の観点からモデルの性能を評価しました。
- 音楽サンプルの全体的な品質
- 提供されたテキスト入力とのテキスト関連性
- メロディによる音楽生成でのメロディへの忠実度
評価データセット
モデルはMusicCapsベンチマークと、学習セットとアーティストが重複しないドメイン内のホールドアウト評価セットで評価されました。
学習データセット
モデルは、以下のソースのライセンス付きデータで学習されました。
評価結果
公開されたモデルをMusicCapsで評価した客観的な指標を以下に示します。
モデル |
Frechet Audio Distance |
Kullback - Leibler Divergence |
テキスト一致性 |
Chroma Cosine Similarity |
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)を使用しました。
- 制限事項:
- 現実的なボーカルを生成することができません。
- 英語の記述で学習されているため、他の言語では性能が低下する可能性があります。
- すべての音楽スタイルや文化に対して同等の性能を発揮しない場合があります。
- 時々、曲の終わりを生成し、無音になることがあります。
- どのようなテキスト記述が最適な生成結果をもたらすかを評価することが難しい場合があります。満足のいく結果を得るためには、プロンプトエンジニアリングが必要になることがあります。
- バイアス:データソースには多様性が欠けている可能性があり、すべての音楽文化がデータセットに均等に表されていない場合があります。モデルは、存在する幅広い音楽ジャンルに対して同等の性能を発揮しない可能性があります。モデルから生成されるサンプルは、学習データのバイアスを反映することになります。このモデルに関するさらなる作業には、例えば学習データを多様かつ包括的にすることによって、文化のバランスの取れた公正な表現方法を含める必要があります。
- リスクと害:モデルのバイアスと制限事項により、偏見、不適切または不快と見なされるサンプルが生成される可能性があります。研究を再現し、新しいモデルを学習するためのコードを提供することで、新しい代表的なデータへの応用範囲を広げることができると考えています。
- 使用事例:ユーザーは、モデルのバイアス、制限事項、リスクを認識している必要があります。MusicGenは、制御可能な音楽生成に関する人工知能研究のために開発されたモデルです。したがって、リスクの調査と軽減策を行わずに下流のアプリケーションで使用しないでください。
📄 ライセンス
コードはMITライセンスで公開され、モデルの重みはCC - BY - NC 4.0で公開されています。