
- เราได้อัปเดตการฝึกอบรม CLMP และรหัสการปรับแต่งและเอกสารประกอบ! มาตรวจสอบ ~ [2024-11-09]
- เราได้เปิดตัวชุดข้อมูล MelodySet [2024-11-08]
- เราได้เปิดตัวชุดข้อมูล Musicset! มาลองดู ~? [2024-11-05]
→←คลิกที่นี่!
→←คลิกที่นี่!
→←คลิกที่นี่!
→←คลิกที่นี่!
พื้นที่เก็บข้อมูลนี้มีการใช้งาน Music Generation Model MG 2 ซึ่งเป็นวิธีการใหม่ที่ใช้ทำนองเพลงเพื่อเป็นแนวทางในการสร้างดนตรีที่แม้จะมีวิธีการที่ค่อนข้างง่ายและทรัพยากรที่ จำกัด มาก
ทุกคนสามารถใช้โมเดลนี้เพื่อสร้างเพลงพื้นหลังส่วนบุคคลสำหรับวิดีโอสั้น ๆ ของพวกเขาบนแพลตฟอร์มเช่น Tiktok, YouTube Shorts และ Meta Reels นอกจากนี้ยังคุ้มค่ามากในการปรับแต่งโมเดลด้วยชุดข้อมูลเพลงส่วนตัวของคุณเอง
คุณสามารถรับชมวิดีโอแนะนำได้
→←คลิกที่นี่!
→←คลิกที่นี่!
ตอนนี้คุณสามารถลองสร้างเพลงด้วยพรอมต์ของคุณเองบนของเรา
→←คลิกที่นี่!
เคล็ดลับ : ในการสร้างเพลงคุณภาพสูงโดยใช้ 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 คู่
เราเสนอ CLMP (การฝึกฝนภาษาดนตรีภาษาที่ตรงกันข้าม) เพื่อจัดเรียงคำอธิบายข้อความรูปคลื่นและทำนองเพลงก่อนการฝึกอบรมโมดูลการแพร่กระจาย เราใช้ webDataset เป็น dataloader สำหรับรูปคลื่นเพลงและคำอธิบายข้อความและเราใช้ Dataloader อื่นสำหรับ Melody Musicset ได้รับการ orginized ดังต่อไปนี้สำหรับการ traning ของ 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. "
}
]
} เราจะปล่อย MelodySet ซึ่งมีท่วงทำนองที่ผ่านการประมวลผลสำหรับ MusicCaps และ MusicBench เราสกัดท่วงทำนองโดยใช้พิทช์พื้นฐานและจัดระเบียบโดยใช้ท่วงทำนองทริปเปิล MelodySet เป็นชุดย่อยของ Musicset แต่ละไฟล์คลื่นรูปแบบ .wav มีไฟล์ทำนองที่สอดคล้องกัน .txt พร้อมคำนำหน้าชื่อไฟล์เดียวกัน ตัวอย่างเช่น 00040020.wav สอดคล้องกับ 00040020.txt และท่วงทำนองทั้งหมดจะถูกวางไว้ในไดเรกทอรีเดียว
orginization ของรูปแบบคลื่นเพลงและคำอธิบายข้อความเหมือนกับใน 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/modules/clmp/training.sh ตามต้องการ ไฟล์นี้มีรายละเอียดการฝึกอบรมที่จำเป็น
bash training.shในทำนองเดียวกัน การทบทวนและอัปเดต ( สำคัญ ) เส้นทางใน รุ่นที่ยอดเยี่ยมดนตรี /mmgen_train/modules/clmp/fine_tuning.sh ก่อนดำเนินการปรับแต่งอย่างละเอียด
bash fine_tuning.shหลังจากการฝึกอบรมแบบจำลอง CLMP หรือการปรับแต่งคุณจะต้องสร้างการฝังและสร้างดัชนี FAISS เพื่อให้การค้นหาความคล้ายคลึงกันอย่างมีประสิทธิภาพในระหว่างขั้นตอนการฝึกอบรมการแพร่กระจายแฝง ทำตามกระบวนการสองขั้นตอนนี้:
สร้าง CLMP Embeddings เปิดใช้งานการสกัดแบบฝังโดยการเพิ่มค่าสถานะต่อไปนี้ในการกำหนดค่าการฝึกอบรมของคุณ:
--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 ซึ่งสามารถพบได้ใน HuggingFace โปรดแทนที่เส้นทางของ .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 โมเดลของคุณเอง:
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yaml --reload_from_ckpt data/checkpoints/mg2-diffusion-checkpoint.ckptระบุว่า Mg 2 ไม่ได้รับอนุญาตให้ใช้ในเชิงพาณิชย์
เรารับทราบอย่างจริงใจผู้พัฒนาฐานรหัสโอเพ่นซอร์สต่อไปนี้ ทรัพยากรเหล่านี้เป็นประกายไฟอันล้ำค่าที่จุดประกายนวัตกรรมและความก้าวหน้าในโลกแห่งความเป็นจริง!
การวิจัยได้รับการสนับสนุนโดยโครงการวิจัยและพัฒนาเทคโนโลยีที่สำคัญภายใต้ Grant No. 2020YFC0832702 และมูลนิธิวิทยาศาสตร์ธรรมชาติแห่งชาติของจีนภายใต้ Grant Nos. 71910107002, 62376227, 61906159, 62302400, 62176014 2023NSFSC0114 และโครงการพรสวรรค์ Guanghua ของมหาวิทยาลัยการเงินและเศรษฐศาสตร์ตะวันตกเฉียงใต้
@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 } ,
}