import os import gradio as gr from scipy.io.wavfile import write from pydub import AudioSegment def wav_to_mp3(wav_path, mp3_path, bitrate="128k"): # 128k is a good default for quality/compression audio = AudioSegment.from_wav(wav_path) audio.export(mp3_path, format="mp3", bitrate=bitrate) def inference(audio): os.makedirs("out", exist_ok=True) write('test.wav', audio[0], audio[1]) os.system("python3 -m demucs.separate -n htdemucs --two-stems=vocals test.wav -o out") vocals_wav = "./out/htdemucs/test/vocals.wav" no_vocals_wav = "./out/htdemucs/test/no_vocals.wav" vocals_mp3 = "./out/htdemucs/test/vocals.mp3" no_vocals_mp3 = "./out/htdemucs/test/no_vocals.mp3" wav_to_mp3(vocals_wav, vocals_mp3) wav_to_mp3(no_vocals_wav, no_vocals_mp3) return vocals_mp3, no_vocals_mp3 title = "Demucs Music Source Separation (v4)" article = "

Music Source Separation in the Waveform Domain | Github Repo | //THAFX

" gr.Interface( inference, gr.Audio(type="numpy", label="Input"), [gr.Audio(type="filepath", label="Vocals"),gr.Audio(type="filepath", label="No Vocals / Instrumental")], title=title, article=article, ).launch()