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 = "
Music Source Separation in the Waveform Domain | Github Repo
" 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()