(嘗試支持音頻到審計的生成是在我的待辦事項列表中,因此您可以輸入音樂曲目,而LDM可以幫助合併它們〜)
設置超級簡單!只需按照以下說明:
pip install -r gradio/requirements.txt
python gradio/gradio_app.py
我們必須承認,UNET體系結構在主觀音樂性方面仍然具有一定的概率優勢,但這並未在指標中衡量。而且,我們確實有一些模型在指標上更好或經過更長的培訓,但是我們觀察到,在訓練過長的時間後,這些模型通常會變得較低,因此我們選擇了一種模型,該模型是指標作為開源樣本的指標。 。如果您需要更多模型(極端的指標追擊或極端的音樂追求,請與我聯繫)
沒有任何精美的設計,只有優質的注入,並享受您的優美音樂
從https://huggingface.co/lichang0928/qa-mdt的QA-MDT模型的主要檢查點下降
對於中國用戶,您還可以通過以下鏈接下載檢查站:
https://pan.baidu.com/s/1n0xqvxtf_x9i7fwb07lpqw?pwd=9nkt
該存儲庫提供了QA-MDT的實現,該存儲庫集成了音樂生成的最新模型。代碼和方法基於以下存儲庫:
Python 3.10
qamdt.yaml在培訓之前,您需要下載./audioldm_train/config/mos_as_token/qa_mdt.yaml和offset_pretretained_checkpoints.json中所需的額外ckpts。
指出:所有上述檢查點都可以從以下下載:
flan-t5大
clap_music
羅伯塔基地
其他的
sh run.sh我們的模型已經有很好的預言。如果您想對其進行重新訓練或微調,則可以選擇使用或不使用我們的質量檢查策略。我們提供幾種培訓策略:
PixArt_MDTPixart_MDT_MOS_AS_TOKENPixArt_Slowyou can just follow AudioLDM and make your dataset as illustrated in our paper (method part)要訓練或微調,只需在audioldm_train.modules.diffusionmodules.PixArt.Your_Class中更改"Your_Class" 。
您也可以嘗試修改補丁大小,重疊大小以達到最佳性能併計算資源(請參閱Arxiv Paper中的我們的附錄)
我們使用LMDB數據集格式進行培訓。您可以根據自己的培訓需求修改數據加載器。
如果您想遵循我們的過程(儘管我們不建議它,因為它可能很複雜),這就是您可以創建玩具LMDB數據集的方法:
創建一個原始文件
首先,創建一個名為datum_all.proto的文件,其中包含以下內容:
syntax = "proto2" ;
message Datum_all {
repeated float wav_file = 1 ;
required string caption_original = 2 ;
repeated string caption_generated = 3 ;
required float mos = 4 ;
}生成python結合
(您的原始版本應為3.4,您可以在此處下載)
在您的終端中運行以下命令以生成Python綁定:
protoc --python_out=./ datum_all.proto這將創建一個名為datum_all_pb2.py的文件。我們還在數據集文件夾中提供了此文件,您可以檢查它是否與生成的文件匹配。切勿嘗試修改此文件,因為這樣做可能會導致錯誤。
以下Python腳本演示瞭如何以LMDB格式準備數據集:
import torch
import os
import lmdb
import time
import numpy as np
import librosa
import os
import soundfile as sf
import io
from datum_all_pb2 import Datum_all as Datum_out
device = 'cpu'
count = 0
total_hours = 0
# Define paths
lmdb_file = '/disk1/changli/toy_lmdb'
toy_path = '/disk1/changli/audioset'
lmdb_key = os . path . join ( lmdb_file , 'data_key.key' )
# Open LMDB environment
env = lmdb . open ( lmdb_file , map_size = 1e12 )
txn = env . begin ( write = True )
final_keys = []
def _resample_load_librosa ( path : str , sample_rate : int , downmix_to_mono : bool , ** kwargs ):
"""Load and resample audio using librosa."""
src , sr = librosa . load ( path , sr = sample_rate , mono = downmix_to_mono , ** kwargs )
return src
start_time = time . time ()
# Walk through the dataset directory
for root , _ , files in os . walk ( toy_path ):
for file in files :
audio_path = os . path . join ( root , file )
key_tmp = audio_path . replace ( '/' , '_' )
audio = _resample_load_librosa ( audio_path , 16000 , True )
# Create a new Datum object
datum = Datum_out ()
datum . wav_file . extend ( audio )
datum . caption_original = 'audio' . encode ()
datum . caption_generated . append ( 'audio' . encode ())
datum . mos = - 1
# Write to LMDB
txn . put ( key_tmp . encode (), datum . SerializeToString ())
final_keys . append ( key_tmp )
count += 1
total_hours += 1.00 / 60 / 10
if count % 1 == 0 :
elapsed_time = time . time () - start_time
print ( f' { count } files written, time: { elapsed_time :.2f } s' )
txn . commit ()
txn = env . begin ( write = True )
# Finalize transaction
try :
total_time = time . time () - start_time
print ( f'Packing completed: { count } files written, total_hours: { total_hours :.2f } , time: { total_time :.2f } s' )
txn . commit ()
except :
pass
env . close ()
# Save the LMDB keys
with open ( lmdb_key , 'w' ) as f :
for key in final_keys :
f . write ( key + ' n ' )否則,您只能在AudiOldM中使用數據載加載程序
將生成的LMDB路徑及其相應的密鑰文件路徑輸入到配置
開始訓練
sh infer/infer.sh
# you may change the infer.sh for witch quality level you want to infer
# defaultly, it should be set to 5 which represent highest quality
# Additionally, it may be useful to change the prompt with text prefix "high quality",
# which match the training process and may further improve performance 這是我第一次開源這樣一個項目,代碼,組織,開源可能不是完美的。如果您對我們的模型,代碼和數據集有任何疑問,請隨時通過以下鏈接與我聯繫,我期待任何建議:
我將盡力在將來提供更多有關音樂和音頻的項目〜
如果您覺得這個項目有用,請考慮引用:
@article{li2024quality,
title={Quality-aware Masked Diffusion Transformer for Enhanced Music Generation},
author={Li, Chang and Wang, Ruoyu and Liu, Lijuan and Du, Jun and Sun, Yixuan and Guo, Zilu and Zhang, Zhenrong and Jiang, Yuan},
journal={arXiv preprint arXiv:2405.15863},
year={2024}
}