This is the original code used in paper Evolving Multi-Resolution Pooling CNN for Monaural Singing Voice Separation, which is published on IEEE/ACM Transactions on Audio, Speech, and Language Processing.
You can download pretrained models from https://tuxzz.org/emrpcnn-ckpt/
- Python 3.7+ 64bit
- CUDA 10.0+
- cuDNN 7.6+
- PIP package:
numpy
scipy
matplotlib
numba
tensorflow-gpu
librosa
sndfile
mir_eval
soundfile
requests
flask
frozendict
psutil
museval
filelock
- Tensorflow 2.0 is recommended to reproduce the paper
- GPU: NVIDIA Pascal and above, with 11GB+ GPU Memory
- SSD: 128GB+ free space for dataset cache
- MEM: 48GB+ free space
- For DSD100 and MIR-1K, no extra processing is needed.
- For MUSDB18, you need decode
.mp4
files into.wav
files use themusdb
tool.
- cd to
srv
- Rename the correct config template file to
config.py
- If needed, modify the
listen_addr
andlisten_port
inconfig.py
. - Run
python main_srv.py
- Run clients on GPU machine.
- Your checkpoints will be saved in directory named like
v1_nsga2_mus2_0.0
.
- cd to
cli
- Modify the
srv_url
and dataset path inconfig.py
- Run
python main.py -lockpath=./gpu.lock
- cd to
paper_tex
- Modify
plot_nsga2_stat.py
line 100 orplot_g1_stat.py
line 32 to 37 to choose which generation to print. - Run
python plot_nsga2_stat.py
orpython plot_nsga2_stat.py
with argument-input=<evolve checkpoint path> -dataset=<mus2/dsd2/mir2> -score=<train/test>
- Copy the gene you need from terminal output, for example
4182591019167972528534244115322478782824676
is a gene, which is used for seed population.
- cd to
final_eval
- Modify
config.py
, set correct cache path and dataset path. - Run
python dsd2_mkcache.py
orpython mir2_mkcache.py
- Run
python dsd2_train.py
orpython mir2_train.py
with argument-ver=v1 -gene=<gene number>
. - The checkpoints are saved in path like
ckpt/<mir2/dsd2>_v1_<gene number>
.
- cd to
final_eval
- Modify
config.py
, set correct dataset path. - Modify
mus2f_train.py
line 133:138, set correctcache_meta_path
andcache_path
. - Run
python mus2f_train.py -ver=v1fm -gene=<gene number>
- The checkpoints are saved in path like
ckpt/mus2f_v1fm_<gene number>
.
- cd to
final_eval
- Modify
config.py
, set correct dataset path. - Run
python dsd2_eval.py
orpython mir2_eval.py
with argument-ver=v1f -gene=<gene number> -step=<checkpoint step>
- The result is saved in
eval_output
.
- cd to
final_eval
- Modify
config.py
, set correct dataset path. - Run
python mus2f_museval.py -ver=v1fm -gene=<gene number> -step=<checkpoint step>
- The result is saved in
eval_output_mus2f
andeval_output_mus2f_bundle
, the splitted audio is saved insound_output_mus2f
.
- cd to
final_eval
- Run
python split_song_f.py -dataset=mus2 -ver=v1fm -gene=<gene number> -step=<checkpoint step> -input=<wav path>
- The result is saved in
split_out_f
.