🚀 Mustango: 制御可能なテキストから音楽生成へ
Mustangoは、制御可能な音楽生成を目的としたマルチモーダル大規模言語モデルの新たな選択肢です。潜在拡散モデル(LDM)、Flan - T5、音楽的特徴量を活用して、テキストから音楽を生成します。
デモ | モデル | ウェブサイトとサンプル | 論文 | データセット

🚀 クイックスタート
テキストプロンプトから音楽を生成するには、以下のコードを使用します。
基本的な使用法
import IPython
import soundfile as sf
from mustango import Mustango
model = Mustango("declare-lab/mustango")
prompt = "This is a new age piece. There is a flute playing the main melody with a lot of staccato notes. The rhythmic background consists of a medium tempo electronic drum beat with percussive elements all over the spectrum. There is a playful atmosphere to the piece. This piece can be used in the soundtrack of a children's TV show or an advertisement jingle."
music = model.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=audio, rate=16000)
📦 インストール
git clone https://github.com/AMAAI-Lab/mustango
cd mustango
pip install -r requirements.txt
cd diffusers
pip install -e .
📚 ドキュメント
データセット
MusicBench データセットには、52kの音楽フラグメントと豊富な音楽固有のテキストキャプションが含まれています。
専門家による主観評価
モデル |
データセット |
事前学習 |
全体的な一致度 ↑ |
コード一致度 ↑ |
テンポ一致度 ↑ |
音質 ↑ |
音楽性 ↑ |
リズムの存在と安定性 ↑ |
調和と共鳴 ↑ |
Tango |
MusicCaps |
✓ |
4.35 |
2.75 |
3.88 |
3.35 |
2.83 |
3.95 |
3.84 |
Tango |
MusicBench |
✓ |
4.91 |
3.61 |
3.86 |
3.88 |
3.54 |
4.01 |
4.34 |
Mustango |
MusicBench |
✓ |
5.49 |
5.76 |
4.98 |
4.30 |
4.28 |
4.65 |
5.18 |
Mustango |
MusicBench |
✗ |
5.75 |
6.06 |
5.11 |
4.80 |
4.80 |
4.75 |
5.59 |
学習
Hugging Faceの accelerate
パッケージを使用してマルチGPU学習を行います。ターミナルから accelerate config
を実行し、質問に答えて実行設定を設定します。
MusicBenchデータセットで Mustango を学習させるには、以下のコマンドを使用します。
accelerate launch train.py \
--text_encoder_name="google/flan-t5-large" \
--scheduler_name="stabilityai/stable-diffusion-2-1" \
--unet_model_config="configs/diffusion_model_config_munet.json" \
--model_type Mustango --freeze_text_encoder --uncondition_all --uncondition_single \
--drop_sentences --random_pick_text_column --snr_gamma 5 \
--model_type
フラグを使用すると、同じコードでMustangoまたはTangoを学習させることができます。ただし、--unet_model_config
を関連する設定に変更する必要があります。Mustangoの場合は diffusion_model_config_munet
、Tangoの場合は diffusion_model_config
です。
--uncondition_all
、--uncondition_single
、--drop_sentences
引数は、論文のセクション5.2に従ってドロップアウト関数を制御します。--random_pick_text_column
引数を使用すると、2つの入力テキストプロンプトからランダムに選択できます。MusicBenchの場合、論文の図1に示されているように、ChatGPTで書き換えたキャプションと元の拡張MusicCapsプロンプトの間から選択します。
MusicBenchで最初から学習する場合、推奨学習エポック数は少なくとも40エポックです。
モデルズー
以下のモデルを公開しています。
Mustango Pretrained: https://huggingface.co/declare-lab/mustango-pretrained
Mustango: https://huggingface.co/declare-lab/mustango
📄 ライセンス
このプロジェクトは、Apache - 2.0ライセンスの下で公開されています。
📚 引用
この研究が役に立った場合は、以下の論文を引用してください。
@misc{melechovsky2023mustango,
title={Mustango: Toward Controllable Text-to-Music Generation},
author={Jan Melechovsky and Zixun Guo and Deepanway Ghosal and Navonil Majumder and Dorien Herremans and Soujanya Poria},
year={2023},
eprint={2311.08355},
archivePrefix={arXiv},
}