
? Kami telah memperbarui pelatihan CLMP dan kode dan dokumentasi yang menyempurnakan! Ayo lihat ~ [2024-11-09]
? Kami telah merilis dataset melodyset. [2024-11-08]
? Kami telah merilis Dataset Musicset! Datang dan coba ~? [2024-11-05]
→ ← Klik Di Sini!
→ ← Klik Di Sini!
→ ← Klik Di Sini!
→ ← Klik Di Sini!
Repositori ini berisi implementasi model generasi musik MG 2 , pendekatan novel pertama menggunakan melodi untuk memandu generasi musik yang, meskipun metode yang sangat sederhana dan sumber daya yang sangat terbatas, mencapai kinerja yang sangat baik.
Siapa pun dapat menggunakan model ini untuk menghasilkan musik latar yang dipersonalisasi untuk video pendek mereka di platform seperti Tiktok, celana pendek YouTube, dan meta gulungan. Selain itu, sangat hemat biaya untuk menyempurnakan model dengan dataset musik pribadi Anda sendiri.
Anda dapat menonton video pengantar di
→ ← Klik Di Sini!
→ ← Klik Di Sini!
Sekarang Anda dapat mencoba generasi musik dengan prompt Anda sendiri di kami
→ ← Klik Di Sini!
Kiat : Untuk menghasilkan musik berkualitas tinggi menggunakan MG 2 , Anda ingin membuat petunjuk detail dan deskriptif yang memberikan konteks yang kaya dan elemen musik tertentu.
Untuk memulai dengan MG 2 , ikuti langkah -langkah di bawah ini:
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_startKami memperkenalkan dataset Musicset yang baru diusulkan, menampilkan sekitar 150.000 pasangan musik-melody-text-teks berkualitas tinggi.
Kami mengusulkan CLMP (pretraining bahasa-musik kontras) untuk menyelaraskan deskripsi teks, bentuk gelombang musik dan melodi sebelum pelatihan modul difusi. Kami menggunakan WebDataSet sebagai Dataloader untuk bentuk gelombang musik dan deskripsi teks, dan kami menggunakan Dataloader lain untuk melodi. Musicset telah diaturisasi sebagai berikut untuk transgenik 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/Struktur dataset modul difusi adalah sebagai berikut:
(Dicatat bahwa Anda harus mengonversi file .flac ke format .wav .)
Awesome-Music-Generation/
└── data/
└── dataset/
└── audioset/
└── wav/00040020.wav
00009570.wav
...
└── metadata/dataset_root.json
└── MusicSet/
└── datafiles/train.json
valid.json
test.jsonDi bawah ini adalah contoh 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 " : " "
}
}
}
}Di bawah ini adalah contoh 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. "
}
]
} Kami akan merilis melodyset, berisi melodi olahan untuk musik dan musicbench. Kami mengekstrak melodi menggunakan pitch dasar dan mengaturnya menggunakan triplet melodi. Melodyset adalah subset dari musicset setiap file bentuk gelombang .wav memiliki file melodi yang sesuai .txt dengan awalan nama file yang sama. Misalnya, 00040020.wav sesuai dengan 00040020.txt , dan semua melodi ditempatkan dalam satu direktori.
Orginisasi bentuk gelombang musik dan deskripsi teks sama dengan di Musicset. Jadi kami hanya menunjukkan struktur dataset bagian melodi sebagai berikut:
your_path/
└── melody_text/00040020.txt
00009570.txtDi bawah ini adalah contoh melodi, yang terdiri dari kembar tiga melodi:
<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>Dengan asumsi Anda telah melalui Panduan Mulai Cepat, mari selami proses pelatihan dan penyempurnaan!
conda activate MMGen_quickstartBagian ini mencakup proses pelatihan dan penyempurnaan untuk CLMP.
cd your_path/MMGen_train/modules/clmpSebelum menjalankan skrip pelatihan, tinjau dan perbarui ( penting ) jalur di Awesome-Music-Generation/MMGEN_Train/Modules/Clmp/ Training.sh sesuai kebutuhan. File ini berisi detail pelatihan yang diperlukan.
bash training.shDemikian pula, tinjau dan perbarui ( penting ) jalur di Awesome-Music-Generation/MMGEN_Train/Modules/clmp/ fine_tuning.sh sebelum melanjutkan dengan fine-tuning.
bash fine_tuning.shSetelah pelatihan atau penyempurnaan model CLMP, Anda harus menghasilkan embeddings dan membangun indeks FAISS untuk memungkinkan pencarian kesamaan yang efisien selama fase pelatihan difusi laten. Ikuti proses dua langkah ini:
Hasilkan CLMP Embeddings Mengaktifkan ekstraksi embedding dengan menambahkan bendera berikut ke konfigurasi pelatihan Anda:
--collect-audio-melody-feature TrueJalankan pelatihan atau skrip yang menyempurnakan dengan bendera ini:
bash training.sh # or fine_tuning.shModel ini akan menghasilkan embedding fitur audio dan melodi di direktori berikut:
your_path/Awesome-Music-Generation/MMGen_train/modules/clmp/faiss_indexing/clmp_embeddingsBangun indeks FAISS menavigasi ke direktori pengindeksan dan menjalankan skrip konstruksi indeks:
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 Script akan menghasilkan indeks FAISS yang dioptimalkan di:
your_path/Awesome-Music-Generation/MMGen_train/modules/clmp/faiss_indexing/faiss_indicesSebelum pelatihan atau finetuning modul difusi, Anda harus menyiapkan file yang diperlukan dan mengganti jalur file yang sesuai dalam skrip.
Pertama, Anda harus mengatur mode. Dalam skrip MMGen_train/train/latent_diffusion.py , untuk tujuan evaluasi, silakan set only_validation = True ; Untuk tujuan pelatihan, silakan atur only_validation = False .
Kemudian, Anda harus menyiapkan file yang diperlukan untuk database vektor melodi, termasuk .faiss dan .npy , yang dapat ditemukan di huggingface. Harap ganti jalur .faiss dan .npy dalam skrip 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 " )Setelah itu, Anda dapat menjalankan perintah berikut untuk berlatih dari awal :
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yamlMengenai dataset pelatihan, silakan merujuk ke bagian Dataset
Anda juga dapat melakukan finetune dengan model pretrained kami, pos pemeriksaan adalah mg2-diffusion-checkpoint.ckpt , yang dapat ditemukan di sini.
Kemudian, Anda dapat menjalankan perintah berikut untuk finetune model Anda sendiri:
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yaml --reload_from_ckpt data/checkpoints/mg2-diffusion-checkpoint.ckptMencatat bahwa MG 2 tidak diizinkan untuk penggunaan komersial.
Kami dengan tulus mengakui pengembang dari basis kode sumber terbuka berikut. Sumber daya ini adalah percikan yang sangat berharga yang memicu inovasi dan kemajuan di dunia nyata?!
Penelitian ini didukung oleh Program Penelitian dan Pengembangan Teknologi Utama di bawah Grant No. 2020YFC0832702, dan National Science Science Foundation of China di bawah Grant No. 71910107002, 62376227, 61906159, 62302400, 62176014, dan Sains Sains dan Teknologi No. 203.123, dan SICHUAN SOULE SICHURE NO. 2023NNSFSC0114, dan Proyek Bakat Guanghua dari Universitas Keuangan dan Ekonomi Barat Daya.
@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 } ,
}