
؟ لقد قمنا بتحديث تدريب CLMP ورمز الاستثمار والوثائق! تعال تحقق من ذلك ~ [2024-11-09]
؟ لقد أصدرنا مجموعة بيانات MelodySet. [2024-11-08]
؟ لقد أصدرنا مجموعة بيانات MusicSet! تعال وجربها ~؟ [2024-11-05]
→ ← انقر هنا!
→ ← انقر هنا!
→ ← انقر هنا!
→ ← انقر هنا!
يحتوي هذا المستودع على تنفيذ نموذج توليد الموسيقى Mg 2 ، وهو أول نهج جديد يستخدم Melody لتوجيه توليد الموسيقى الذي يحقق أداءً ممتازًا للغاية ، على الرغم من طريقة بسيطة للغاية وموارد محدودة للغاية.
يمكن لأي شخص استخدام هذا النموذج لإنشاء موسيقى خلفية مخصصة لمقاطع الفيديو القصيرة على منصات مثل Tiktok و Shorts على 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نقدم مجموعة بيانات MusicSet المقترحة حديثًا ، والتي تضم ما يقرب من 150،000 أزواج عالية الجودة من 10 ثوانٍ.
نقترح CLMP (pretring pretRing Music Music) لمحاذاة وصف النص ، الشكل الموجي للموسيقى واللحن قبل تدريب وحدة الانتشار. نحن نستخدم webdataset كقراص Dataloader لوصف الموجة الموسيقية ووصف النص ، ونحن نستخدم dataloader آخر لـ Melody. تم تعديل 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 format.)
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. "
}
]
} سنقوم بإصدار الميلوديسيت ، الذي يحتوي على الألحان المصنعة للموسيقى و MusicBench. نقوم باستخراج الألحان باستخدام ذا ذا بيتش أساسية وتنظيمها باستخدام توائم ميلودي. MelodySet هي مجموعة فرعية من MusicSet كل ملف الموجة .wav WAV لديه ملف لحن مطابق .txt مع نفس اسم الملف. على سبيل المثال ، 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قبل تشغيل البرنامج النصي التدريبي ، مراجعة وتحديث ( حاسمة ) المسارات في الجيل الموسيقي الرائع/mmgen_train/الوحدات النمطية/CLMP/ Training.sh حسب الحاجة. يحتوي هذا الملف على تفاصيل التدريب اللازمة.
bash training.shوبالمثل ، مراجعة وتحديث ( حاسمة ) المسارات في الجيل الرائع/MMGEN_TRAIN/MODULES/CLMP/ Fine_tuning.sh قبل المضي قدمًا في التثبيت.
bash fine_tuning.shبعد التدريب على نموذج CLMP أو ضبطه ، ستحتاج إلى توليد التضمينات وبناء مؤشرات FAISS لتمكين البحث الفعال في التشابه أثناء مرحلة التدريب على الانتشار الكامن. اتبع هذه العملية المكونة من خطوتين:
قم بإنشاء تضمينات 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_embeddingsتنقل مؤشرات FAISS إلى دليل الفهرسة وتنفيذ نص إنشاء الفهرس:
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 .
بعد ذلك ، يجب عليك إعداد الملفات المطلوبة لقاعدة بيانات Melody Vector ، بما في ذلك .faiss و .npy ، والتي يمكن العثور عليها في Luggingface. يرجى استبدال مسار .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 ، والتي يمكن العثور عليها هنا.
بعد ذلك ، يمكنك تشغيل الأمر التالي إلى FineTune Model الخاص بك:
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yaml --reload_from_ckpt data/checkpoints/mg2-diffusion-checkpoint.ckptلاحظ أن MG 2 غير مسموح بالاستخدام التجاري.
نحن نعترف بصدق لمطوري قواعد رمز المفتوح التالية. هذه الموارد هي شرارات لا تقدر بثمن تشعل الابتكار والتقدم في العالم الحقيقي؟!
يتم دعم البحث من خلال برنامج البحوث والتطوير في التقنيات الرئيسية بموجب المنحة رقم 20208332702 ، والمؤسسة الوطنية للعلوم الطبيعية في الصين بموجب Grant Nos. 2023NSFSC0114 ، ومشروع Guanghua Talent من جامعة جنوب غرب المالية والاقتصاد.
@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 } ,
}