File size: 2,753 Bytes
a216f79
e99861a
a216f79
441e098
 
1b3b97a
c60eb53
4f9cc75
0648b6d
 
 
 
f773307
4f9cc75
3a1706f
1b3b97a
0648b6d
 
 
 
 
 
 
 
 
 
 
 
e87b62b
0648b6d
e87b62b
4f9cc75
 
 
9bbc445
0648b6d
7a63ec6
1b3b97a
b8e9a43
1b3b97a
 
 
 
 
 
 
b8e9a43
 
1b3b97a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
os.system('pip install gradio==2.3.0a0')
os.system('pip freeze')
import sys
sys.path.append('.')
import gradio as gr
os.system('pip install -U torchtext==0.8.0')
#os.system('python setup.py install --install-dir .')
from scipy.io import wavfile

# the timestamp to split at (in seconds)
split_at_timestamp = 6

os.system('./separate_scripts/download_checkpoints.sh')

def inference(audio):
    # read the file and get the sample rate and data
    rate, data = wavfile.read(audio.name) 
    
    # get the frame to split at
    split_at_frame = rate * split_at_timestamp
    
    # split
    left_data, right_data = data[:split_at_frame-1], data[split_at_frame:]  # split
    
    # save the result
    wavfile.write('foo_left.wav', rate, left_data)
    os.system("""python bytesep/inference.py --config_yaml=./scripts/4_train/musdb18/configs/vocals-accompaniment,resunet_subbandtime.yaml --checkpoint_path=./downloaded_checkpoints/resunet143_subbtandtime_vocals_8.8dB_350k_steps.pth --audio_path=foo_left.wav --output_path=sep_vocals.mp3""")
    #os.system('./separate_scripts/separate_vocals.sh ' + audio.name + ' "sep_vocals.mp3"')
    os.system("""python bytesep/inference.py --config_yaml=./scripts/4_train/musdb18/configs/accompaniment-vocals,resunet_subbandtime.yaml --checkpoint_path=./downloaded_checkpoints/resunet143_subbtandtime_accompaniment_16.4dB_350k_steps.pth --audio_path=foo_left.wav --output_path=sep_accompaniment.mp3""")
    #os.system('./separate_scripts/separate_accompaniment.sh ' + audio.name + ' "sep_accompaniment.mp3"')
    #os.system('python separate_scripts/separate.py --audio_path=' +audio.name+' --source_type="accompaniment"')
    #os.system('python separate_scripts/separate.py --audio_path=' +audio.name+' --source_type="vocals"')
    return 'sep_vocals.mp3', 'sep_accompaniment.mp3'
title = "Music Source Separation"
description = "Gradio demo for Music Source Separation. To use it, simply add your audio, or click one of the examples to load them. Please trim audio files to 10 seconds or less for faster inference time on cpu. Currently supports .wav files. Read more at the links below."
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/2109.05418'>Decoupling Magnitude and Phase Estimation with Deep ResUNet for Music Source Separation</a> | <a href='https://github.com/bytedance/music_source_separation'>Github Repo</a></p>"

examples = [['example.wav']]
gr.Interface(
    inference, 
    gr.inputs.Audio(type="file", label="Input"), 
    [gr.outputs.Audio(type="file", label="Vocals"),gr.outputs.Audio(type="file", label="Accompaniment")],
    title=title,
    description=description,
    article=article,
    enable_queue=True,
    examples=examples
    ).launch(debug=True)