Spaces:
Running
Running
File size: 1,969 Bytes
66497d4 8062629 66497d4 ca2745f 66497d4 780b186 a69b793 780b186 66497d4 2938065 66497d4 ca2745f 66497d4 ca2745f 66497d4 |
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 |
import os
import gradio as gr
import time
from scipy.io.wavfile import write
from gradio import components
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")
# Paths to the output files
files = ["./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"]
# Check for the existence of the files
start_time = time.time()
while True:
if all(os.path.exists(file) for file in files):
break
elif time.time() - start_time > 30: # timeout after 30 seconds
raise TimeoutError("Timeout while waiting for output files to be created.")
time.sleep(1) # wait a bit before checking again
return tuple(files)
title = "Demucs"
description = "Forked from here https://huggingface.co/spaces/akhaliq/demucs/ and changed to updated demucs pip source. 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']]
gr.Interface(
inference,
components.Audio(type="numpy", label="Input"),
[
components.Audio(type="filepath", label="Vocals"),
components.Audio(type="filepath", label="Bass"),
components.Audio(type="filepath", label="Drums"),
components.Audio(type="filepath", label="Other")
],
title=title,
description=description,
article=article,
examples=examples
).launch(enable_queue=True) |