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)