Spaces:
Running
Running
| import os | |
| import gradio as gr | |
| from scipy.io.wavfile import write | |
| import spaces | |
| import demucs.separate | |
| def inference(audio): | |
| os.makedirs("out", exist_ok=True) | |
| write('test.wav', audio[0], audio[1]) | |
| demucs.separate.main(["-n", "htdemucs", "--two-stems=vocals", "test.wav", "-o", "out"]) | |
| return "./out/htdemucs/test/vocals.wav", "./out/htdemucs/test/no_vocals.wav" | |
| title = "Demucs Music Source Separation (v4)" | |
| 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> | <a href='https://www.thafx.com' target='_blank'>//THAFX</a></p>" | |
| with gr.Blocks(title=title) as demo: | |
| gr.Markdown(f"# {title}") | |
| with gr.Row(): | |
| audio_input = gr.Audio(type="numpy", label="Input") | |
| with gr.Row(): | |
| vocals_output = gr.Audio(type="filepath", label="Vocals") | |
| no_vocals_output = gr.Audio(type="filepath", label="No Vocals / Instrumental") | |
| with gr.Row(): | |
| submit_btn = gr.Button("Submit", variant="primary") | |
| clear_btn = gr.ClearButton([audio_input, vocals_output, no_vocals_output]) | |
| submit_btn.click(fn=inference, inputs=audio_input, outputs=[vocals_output, no_vocals_output], api_name="predict") | |
| gr.HTML(article) | |
| demo.queue().launch() |