
? CLMP 교육 및 미세 조정 코드 및 문서를 업데이트했습니다! 확인하십시오 ~ [2024-11-09]
? Melodyset 데이터 세트를 출시했습니다. [2024-11-08]
? 우리는 Musicset 데이터 세트를 출시했습니다! 와서 시도해보십시오 ~? [2024-11-05]
→ ← 여기를 클릭하십시오!
→ ← 여기를 클릭하십시오!
→ ← 여기를 클릭하십시오!
→ ← 여기를 클릭하십시오!
이 저장소에는 Melody를 사용하여 첫 번째 소설 접근법 인 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우리는 약 150,000 개의 고품질 10 초 음악 멜로디 텍스트 쌍을 특징으로하는 새로 제안 된 Musicset 데이터 세트를 소개합니다.
우리는 확산 모듈을 훈련하기 전에 텍스트 설명, 음악 파형 및 멜로디를 정렬하기 위해 CLMP (대비 언어 음악 전 사전 조정)를 제안합니다. 음악 파형 및 텍스트 설명을위한 데이터 로더로 WebDataset을 사용하고 멜로디에 다른 데이터 로더를 사용합니다. Musicset은 CLMP의 트랜 링을 위해 다음과 같이 또는 orginized되었습니다.
# 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은 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/TRAINIG.SH 의 경로를 검토하고 업데이트하십시오 ( 중요한 ). 이 파일에는 필요한 교육 세부 정보가 포함되어 있습니다.
bash training.sh마찬가지로, 미세 조정을 진행하기 전에 멋진 음악 생성/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_embeddings구성 Faiss Indices 구성 인덱싱 디렉토리로 이동하여 인덱스 구성 스크립트를 실행합니다.
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 설정하십시오.
그런 다음, .faiss 및 .npy 를 포함하여 Melody Vector 데이터베이스에 필요한 파일을 준비해야합니다. 스크립트 MMGen_train/modules/latent_diffusion/ddpm.py 에서 .faiss 및 .npy 의 경로를 교체하십시오.
# 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.ckptMG 2는 상업적 사용을 위해 허용되지 않는다고 언급했다.
우리는 다음과 같은 오픈 소스 코드베이스의 개발자를 진심으로 인정합니다. 이러한 자원은 실제 세계에서 혁신과 진보를 점화시키는 귀중한 불꽃입니까?!
이 연구는 Grant No. 2020YFC0832702에 따른 주요 기술 연구 및 개발 프로그램과 Grant Nos. 71910107002, 6237627, 61906159, 62302400, 62176014 및 Sichuan Science and Technology Program에 따른 Grant No. 71910107002, 62376227, 61906159에 따른 National Natural Science Foundation에 의해 지원됩니다. 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 } ,
}