|
import gradio as gr |
|
import os |
|
|
|
def inference(input_file_path,model_name): |
|
if model_name == "" or model_name == None: |
|
model_name = "htdemucs" |
|
|
|
temp_dir = os.path.dirname(input_file_path) |
|
temp_out_dir = os.path.join(temp_dir, 'out') |
|
os.makedirs(f'{temp_out_dir}', exist_ok=True) |
|
|
|
|
|
print(input_file_path) |
|
|
|
filename = os.path.basename(input_file_path).split('.')[0] |
|
if not filename: |
|
filename="test" |
|
|
|
vocals_out = os.path.join(temp_out_dir, model_name,filename,"vocals.mp3") |
|
no_vocals_out = os.path.join(temp_out_dir, model_name,filename,"no_vocals.mp3") |
|
|
|
cmd = f'python -m demucs.separate -n {model_name} --mp3 --two-stems vocals -o {temp_out_dir} "{input_file_path}"' |
|
print(cmd) |
|
os.system(cmd) |
|
|
|
print("process finish:",vocals_out,no_vocals_out) |
|
|
|
return vocals_out, no_vocals_out |
|
|
|
title = "Facebook UVR Test" |
|
description = "Seperate vocals and music using UVR" |
|
article = "Made by line" |
|
examples=[['test.mp3']] |
|
|
|
|
|
demo = gr.Interface( |
|
fn=inference, |
|
inputs=[ |
|
gr.Audio(type="filepath", label="Input Audio"), |
|
gr.Dropdown(["htdemucs", "htdemucs_ft", "htdemucs_6s", "piano"], label="Model Name") |
|
], |
|
outputs=[ |
|
gr.Audio(type="filepath", label="Vocals out"), |
|
gr.Audio(type="filepath", label="Music out"), |
|
], |
|
title=title, |
|
description=description, |
|
article=article, |
|
examples=examples |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|