Spaces:
Running
Running
| import os | |
| import gradio as gr | |
| from scipy.io.wavfile import write | |
| import subprocess | |
| def inference(audio): | |
| os.makedirs("out", exist_ok=True) | |
| write('test.wav', audio[0], audio[1]) | |
| command = "python3 -m demucs.separate -n mdx_extra_q -d cpu test.wav -o out" | |
| process = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
| print("Demucs script output:", process.stdout.decode()) | |
| os.makedirs("out", exist_ok=True) | |
| write('test.wav', audio[0], audio[1]) | |
| result = os.system("python3 -m demucs.separate -n mdx_extra_q -d cpu test.wav -o out") | |
| print(f"Demucs script result: {result}") | |
| # Check if files exist before returning | |
| 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"] | |
| for file in files: | |
| if not os.path.isfile(file): | |
| print(f"File not found: {file}") | |
| else: | |
| print(f"File exists: {file}") | |
| return 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, | |
| gr.components.Audio(type="numpy", label="Input"), | |
| [gr.components.Audio(type="filepath", label="Vocals"), | |
| gr.components.Audio(type="filepath", label="Bass"), | |
| gr.components.Audio(type="filepath", label="Drums"), | |
| gr.components.Audio(type="filepath", label="Other")], | |
| title=title, | |
| description=description, | |
| article=article | |
| ).launch(enable_queue=True) |