
? CLMPトレーニングと微調整コードとドキュメントを更新しました!チェックしてください〜[2024-11-09]
?メロディセットデータセットをリリースしました。 [2024-11-08]
? MusicSetデータセットをリリースしました!来て、試してみてください〜? [2024-11-05]
→←ここをクリックしてください!
→←ここをクリックしてください!
→←ここをクリックしてください!
→←ここをクリックしてください!
このリポジトリには、音楽生成モデルMG 2の実装が含まれています。これは、メロディーを使用した最初の斬新なアプローチであり、非常にシンプルな方法と非常に限られたリソースにもかかわらず、優れたパフォーマンスを達成する音楽世代を導きます。
誰でもこのモデルを使用して、Tiktok、YouTubeショーツ、メタリールなどのプラットフォームで短いビデオのパーソナライズされたバックグラウンドミュージックを生成できます。さらに、独自のプライベートミュージックデータセットでモデルを微調整することは非常に費用対効果が高いです。
はじめにビデオを見ることができます
→←ここをクリックしてください!
→←ここをクリックしてください!
今、あなたは私たちにあなた自身のプロンプトで音楽世代を試すことができます
→←ここをクリックしてください!
ヒント:MG 2を使用して高品質の音楽を生成するには、豊富なコンテキストと特定の音楽要素を提供する詳細かつ説明的なプロンプトを作成します。
MG 2を始めるには、以下の手順に従ってください。
git clone https://github.com/shaopengw/Awesome-Music-Generation.git
cd Awesome-Music-Generation # Create and activate the environment from the provided environment file
conda env create -f environment.yml
conda activate MMGen_quickstart # Ensure that the checkpoints are stored in the following directory structure
Awesome-Music-Generation/
└── data/
└── checkpoints/ # Update the paths to reflect your local environment setup
# Replace:
export PYTHONPATH=/mnt/sda/quick_start_demonstration/Awesome-Music-Generation: $PYTHONPATH
export PYTHONPATH=/mnt/sda/quick_start_demonstration/Awesome-Music-Generation/data: $PYTHONPATH
# With:
export PYTHONPATH=/your/local/path/Awesome-Music-Generation: $PYTHONPATH
export PYTHONPATH=/your/local/path/Awesome-Music-Generation/data: $PYTHONPATHchmod +x quick_start.shbash quick_start.shAwesome-Music-Generation/log/latent_diffusion/quick_start/quick_start約150,000の高品質の10秒の音楽メロディテキストペアを特徴とする新たに提案されたMusicSetデータセットを紹介します。
拡散モジュールのトレーニングの前に、テキストの説明、音楽波形、メロディーを調整するために、CLMP(対照的な言語音楽前削除)を提案します。 WebDatasetを音楽波形とテキストの説明のためのデータローダーとして利用し、メロディーに別のデータローダーを使用します。 Musicsetは、CLMPのトラニングのために次のようにオージングされています。
# Ensure that the training data packaged with Webdataset format is orginized as following:
clmp/
└── dataset/
└── MusicSet/
└──train/pretrain0.tar
pretrain1.tar
pretrain2.tar
...
└──valid/
└──test/拡散モジュールのデータセット構造は次のとおりです。
( .flacファイルを.wav形式に変換する必要があることに注意してください。)
Awesome-Music-Generation/
└── data/
└── dataset/
└── audioset/
└── wav/00040020.wav
00009570.wav
...
└── metadata/dataset_root.json
└── MusicSet/
└── datafiles/train.json
valid.json
test.json以下は、dataset_root.jsonの例です。
{
" MusicSet " : " /mnt/data/wmz/Awesome-Music-Generation/data/dataset/audioset " ,
" comments " : {},
" metadata " : {
" path " : {
" MusicSet " : {
" train " : " ./data/dataset/metadata/MusicSet/datafiles/train.json " ,
" test " : " ./data/dataset/metadata/MusicSet/datafiles/test.json " ,
" val " : " ./data/dataset/metadata/MusicSet/datafiles/valid.json " ,
" class_label_indices " : " "
}
}
}
}以下はtrain.jsonの例です。
{
" data " : [
{
" wav " : " wav/00040020.wav " ,
" seg_label " : " " ,
" labels " : " " ,
" caption " : " The song starts with the high and fuzzy tone of an alarm bell beeping until a button is pressed, which triggers the grungy sound of an electric guitar being played in a rock style. " , " The beat then counts to four, enhancing the overall rhythm. "
},
{
" wav " : " wav/00009570.wav " ,
" seg_label " : " " ,
" labels " : " " ,
" caption " : " This lively song features a male vocalist singing humorous lyrics over a medium-fast tempo of 106. " , " 0 beats per minute. " , " Accompanied by keyboard harmony, acoustic guitar, steady drumming, and simple bass lines, the catchy tune is easy to sing along with. " , " Set in the key of B major, the chord sequence includes Abm7, F#/G#, and Emaj7. " , " With its spirited and animated feel, this fun track is sure to keep listeners engaged from start to finish. "
}
]
}MusicCapsとMusicBench用のメロディーを含むメロディセットをリリースします。ベーシックピッチを使用してメロディーを抽出し、メロディートリプレットを使用して整理します。 Melodyset .txt 、MusicSetの各波形ファイルのサブセットです.wavたとえば、 00040020.wav 00040020.txtに対応し、すべてのメロディーは単一のディレクトリに配置されます。
音楽の波形とテキストの説明の角化は、Musicsetのそれと同じです。したがって、メロディーパーツのデータセット構造を次のように表示するだけです。
your_path/
└── melody_text/00040020.txt
00009570.txt以下は、メロディートリプレットで構成されるメロディーの例です。
<G4>,<114>,<79>|<A4>,<119>,<81>|<B2>,<159>,<0>|<G4>,<117>,<62>|<A4>,<91>,<77>|<D3>,<202>,<0>|<B4>,<92>,<72>|<A4>,<95>,<77>|<B4>,<98>,<80>|<G3>,<200>,<0>|<A4>,<151>,<30>|<G4>,<95>,<77>|<A4>,<93>,<82>|<F#3>,<146>,<0>|<A2>,<201>,<0>|<G2>,<116>,<117>|<G3>,<149>,<0>|<B2>,<122>,<75>|<D3>,<110>,<77>|<B4>,<206>,<0>|<B4>,<113>,<111>|<B3>,<90>,<95>|<A3>,<110>,<57>|<E5>,<113>,<41>|<G3>,<177>,<0>|<D#5>,<119>,<73>|<B3>,<119>,<32>|<C4>,<108>,<78>|<E5>,<111>,<49>|<F#5>,<117>,<82>|<E5>,<111>,<78>|<F#5>,<114>,<82>|<G3>,<151>,<0>|<G5>,<95>,<73>|<F#5>,<91>,<81>|<G5>,<92>,<78>|<A3>,<143>,<43>|<E4>,<202>,<0>|<F#5>,<152>,<30>|<E5>,<98>,<86>|<D#4>,<139>,<8>|<B3>,<142>,<0>|<F#5>,<94>,<68>|<B3>,<111>,<120>|<G3>,<114>,<84>|<B3>,<118>,<83>|<E3>,<122>,<81>|<G5>,<231>,<0>|<E4>,<234>,<0>|<F#5>,<118>,<63>|<E5>,<114>,<79>|<G3>,<118>,<37>|<D5>,<122>,<76>|<C#5>,<119>,<78>|<E5>,<119>,<77>|<B3>,<100>,<78>|<B4>,<123>,<57>|<E5>,<112>,<71>|<A3>,<209>,<0>|<G5>,<123>,<105>|<A4>,<154>,<0>|<F#5>,<124>,<73>|<A3>,<136>,<22>|<C#4>,<205>,<0>|<E5>,<125>,<28>|<F#5>,<121>,<74>|<A5>,<115>,<72>|<D3>,<144>,<0>|<E3>,<95>,<81>|<E5>,<122>,<62>|<A5>,<115>,<76>|<F#3>,<106>,<84>|<D5>,<117>,<48>|<C5>,<125>,<74>|<D3>,<102>,<74>|<B4>,<120>,<50>|<A4>,<123>,<76>|<B4>,<116>,<80>|<D5>,<117>,<79>|<D4>,<319>,<0>|<A4>,<113>,<65>|<C4>,<114>,<42>|<D5>,<116>,<78>|<B3>,<108>,<84>|<G4>,<114>,<43>クイックスタートガイドを通過したと仮定して、トレーニングと微調整プロセスに飛び込みましょう!
conda activate MMGen_quickstartこのセクションでは、CLMPのトレーニングと微調整プロセスについて説明します。
cd your_path/MMGen_train/modules/clmpトレーニングスクリプトを実行する前に、必要に応じて、トレーニングスクリプトを実行する前に、Awesome-Music-Generation/Mmgen_Train/Modules/Clmp/ Training.shのパスを確認して(重要)。このファイルには、必要なトレーニングの詳細が含まれています。
bash training.sh同様に、微調整を進める前に、Awesome-Music-Generation/MMGen_Train/Modules/CLMP/ FINE_TUNING.SHのパスをレビューおよび更新します。
bash fine_tuning.shCLMPモデルのトレーニングまたは微調整後、潜在的な拡散トレーニング段階で効率的な類似性検索を可能にするために、埋め込みを生成してFAISSインデックスを構築する必要があります。この2段階のプロセスに従ってください。
次のフラグをトレーニング構成に追加することにより、 CLMP埋め込みを生成します。
--collect-audio-melody-feature Trueこのフラグでトレーニングまたは微調整されたスクリプトを実行します:
bash training.sh # or fine_tuning.shこのモデルは、次のディレクトリにオーディオとメロディーの特徴の埋め込みを生成します。
your_path/Awesome-Music-Generation/MMGen_train/modules/clmp/faiss_indexing/clmp_embeddingsFAISSインデックスの構築インデックスディレクトリに移動し、インデックス構造スクリプトを実行します。
cd your_path/Awesome-Music-Generation/MMGen_train/modules/clmp/faiss_indexing # you should modify the path of embeddings in this script
python build_faiss_indices.py スクリプトは、次のように最適化されたFAISSインデックスを生成します。
your_path/Awesome-Music-Generation/MMGen_train/modules/clmp/faiss_indexing/faiss_indices拡散モジュールのトレーニングまたは微調整の前に、必要なファイルを準備し、スクリプト内の対応するファイルパスを置き換える必要があります。
まず、モードを設定する必要があります。スクリプトでMMGen_train/train/latent_diffusion.py 、評価の目的については、 only_validation = Trueを設定してください。トレーニングの目的については、 only_validation = Falseを設定してください。
次に、Huggingfaceにある.faissや.npyを含むMelody Vectorデータベースに必要なファイルを準備する必要があります。スクリプトの.faissと.npyのパスを交換してくださいMMGen_train/modules/latent_diffusion/ddpm.py
# change the melody_npy and melody.faiss to the local path
melody_npy = np.load( " MMGen/melody.npy " )
melody_builder = FaissDatasetBuilder(melody_npy)
melody_builder.load_index( " MMGen/melody.faiss " )その後、次のコマンドを実行してゼロからトレーニングできます。
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yamlトレーニングデータセットについては、データセットセクションを参照してください
また、当社の事前に守られたモデルでFinetuneすることもできます。チェックポイントはmg2-diffusion-checkpoint.ckptです。これはここにあります。
次に、次のコマンドを実行して、独自のモデルをFintuneできます。
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yaml --reload_from_ckpt data/checkpoints/mg2-diffusion-checkpoint.ckptMg 2は商業用に許可されていないことに注意してください。
次のオープンソースコードベースの開発者に心から認めます。これらのリソースは、現実の世界で革新と進歩に火をつける非常に貴重な火花ですか?!
この研究は、Grant No. 2020YFC0832702、およびGrant Nos。71910107002、61906159、62302400、62176014、およびSchuuan Science and Technologyプログラムの下で中国の国立自然科学財団の下で、主要な技術研究開発プログラムによってサポートされています。 2023NSFSC0114、およびサウスウェスタン財務経済大学のグアングアタレントプロジェクト。
@article { wei2024melodyneedmusicgeneration ,
title = { Melody Is All You Need For Music Generation } ,
author = { Shaopeng Wei and Manzhen Wei and Haoyu Wang and Yu Zhao and Gang Kou } ,
year = { 2024 } ,
eprint = { 2409.20196 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.SD } ,
url = { https://arxiv.org/abs/2409.20196 } ,
}