audio / app.py
PreciousMposa's picture
Upload 107 files
519d358 verified
import os
import shutil
import gradio as gr
from demucs.separate import main
def separate_stems(audio_file):
input_path = "input.mp3"
shutil.copy(audio_file, input_path)
output_dir = "output"
if os.path.exists(output_dir):
shutil.rmtree(output_dir)
os.makedirs(output_dir, exist_ok=True)
# Run Demucs
main(["-n", "htdemucs", "-o", output_dir, input_path])
# Build list of stems to return
base = os.path.splitext(os.path.basename(input_path))[0]
stem_path = os.path.join(output_dir, "htdemucs", base)
stems = [os.path.join(stem_path, f"{stem}.mp3") for stem in ["vocals", "drums", "bass", "other"]]
return stems
demo = gr.Interface(
fn=separate_stems,
inputs=gr.Audio(type="filepath", label="Upload Song"),
outputs=[
gr.Audio(label="Vocals"),
gr.Audio(label="Drums"),
gr.Audio(label="Bass"),
gr.Audio(label="Other"),
],
title="Demucs v4 Stem Separator",
description="Upload a song to separate vocals, drums, bass, and other using Facebook's Demucs model.",
)
demo.launch()