File size: 1,419 Bytes
a3b5b38
 
 
a5d760a
a3b5b38
a5d760a
 
 
a3b5b38
 
a5d760a
 
 
 
 
 
 
 
 
 
a3b5b38
 
 
 
 
 
 
 
 
 
b5e25e7
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
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 = "<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> | <a href='https://www.thafx.com' target='_blank'>//THAFX</a></p>"

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()