File size: 1,655 Bytes
2dce12e
2674cb0
d341a19
2dce12e
 
50ca70b
 
 
 
 
 
 
 
0be0c2f
 
51c65e0
2dce12e
50ca70b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import gradio as gr
from scipy.io.wavfile import write

def inference(audio):
    os.makedirs("out", exist_ok=True)
    write('test.wav', audio[0], audio[1])
    os.system("python3 -m demucs.separate -n mdx_extra_q -d cpu test.wav -o out")
    return "./out/mdx_extra_q/test/vocals.wav", \
           "./out/mdx_extra_q/test/bass.wav", \
           "./out/mdx_extra_q/test/drums.wav", \
           "./out/mdx_extra_q/test/other.wav"

title = "Demucs"
description = "Gradio demo for Demucs: Music Source Separation in the Waveform Domain. To use it, simply upload your audio, or click one of the examples to load them. Read more at the links below."
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/1911.13254' target='_blank'>Music Source Separation in the Waveform Domain</a> | <a href='https://github.com/facebookresearch/demucs' target='_blank'>Github Repo</a></p>"

examples = [['test.mp3']]

with gr.Blocks() as demo:
    gr.Markdown(f"## {title}")
    gr.Markdown(description)
    gr.Markdown(article)
    
    with gr.Row():
        with gr.Column():
            audio_input = gr.Audio(label="Input Audio", type="numpy")
            example_input = gr.Examples(examples=examples, inputs=audio_input)
            submit_btn = gr.Button("Separate")
        with gr.Column():
            vocals_output = gr.Audio(label="Vocals")
            bass_output = gr.Audio(label="Bass")
            drums_output = gr.Audio(label="Drums")
            other_output = gr.Audio(label="Other")
    
    submit_btn.click(inference, inputs=audio_input, outputs=[vocals_output, bass_output, drums_output, other_output])

demo.launch()