
? Мы обновили обучение CLMP, код и документацию с тонкой настройкой! Приходите проверить это ~ [2024-11-09]
? Мы выпустили набор данных Melodyset. [2024-11-08]
? Мы выпустили набор данных Musicset! Приходите и попробуйте ~? [2024-11-05]
→ ← Нажмите здесь!
→ ← Нажмите здесь!
→ ← Нажмите здесь!
→ ← Нажмите здесь!
Этот репозиторий содержит реализацию модели генерации музыки MG 2 , первого нового подхода, использующего Melody, чтобы направить поколение музыки, которое, несмотря на довольно простой метод и чрезвычайно ограниченные ресурсы, достигает превосходной производительности.
Любой может использовать эту модель для создания персонализированной фоновой музыки для своих коротких видео на таких платформах, как 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Мы вводим недавно предложенный набор данных Musicset, в котором содержится около 150 000 высококачественных 10-секундных пар музыки-мелоди-текста.
Мы предлагаем CLMP (контрастная языковая музыкальная предварительная подготовка), чтобы соответствовать описанию текста, формы волны музыки и мелодии перед обучением диффузионного модуля. Мы используем 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 .)
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 - это подмножество 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Перед запуском обучающего сценария просмотрите и обновляйте ( критические ) пути в Great-Music Generation/MMGEN_TRAIN/MODULES/CLMP/ Training.SH по мере необходимости. Этот файл содержит необходимые данные обучения.
bash training.shАналогичным образом, просмотрите и обновляйте ( критические ) пути в Great-Music Generation/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 .
Затем вы должны подготовить необходимые файлы для базы данных Vector Melody, включая .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Относительно набора данных, пожалуйста, обратитесь к разделу набора данных
Вы также можете познакомиться с нашей предварительной моделью, контрольной точкой является mg2-diffusion-checkpoint.ckpt , который можно найти здесь.
Затем вы можете запустить следующую команду, чтобы исправить свою собственную модель:
python3 MMGen_train/train/latent_diffusion.py -c MMGen_train/config/train.yaml --reload_from_ckpt data/checkpoints/mg2-diffusion-checkpoint.ckptОтмечается, что MG 2 не разрешено для коммерческого использования.
Мы искренне признаем разработчиков следующих баз кода с открытым исходным кодом. Эти ресурсы бесценны искры, которые воспламеняют инновации и прогресс в реальном мире?!
The research is supported by the Key Technologies Research and Development Program under Grant No. 2020YFC0832702, and National Natural Science Foundation of China under Grant Nos. 71910107002, 62376227, 61906159, 62302400, 62176014, and Sichuan Science and Technology Program under Grant No. 2023NSFSC0032, 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 } ,
}