import os
import gradio as gr
MODEL_DIR = "models"
os.makedirs(MODEL_DIR, exist_ok=True)
def save_pth(file_obj):
if file_obj is None: return "Error: No file"
for f in os.listdir(MODEL_DIR):
try: os.remove(os.path.join(MODEL_DIR, f))
except: pass
name = os.path.basename(file_obj.name)
with open(os.path.join(MODEL_DIR, name), "wb") as f:
f.write(file_obj.read())
return f"Success: {name} saved"
def process_voice(audio_file, pitch):
if audio_file is None: return "Error: No audio"
return audio_file.name
with gr.Blocks() as demo:
gr.Markdown("# RVC Cloner Pro")
with gr.Tab("Model Setup"):
m_input = gr.File(label="Upload .pth", type="binary")
m_btn = gr.Button("Save")
m_status = gr.Textbox(label="Status")
m_btn.click(save_pth, inputs=[m_input], outputs=[m_status])
with gr.Tab("Audio Process"):
a_input = gr.File(label="Upload Audio")
p_slider = gr.Slider(minimum=-12, maximum=12, value=0, step=1, label="Pitch")
a_btn = gr.Button("Start", variant="primary")
a_output = gr.Audio(label="Result")
a_btn.click(process_voice, inputs=[a_input, p_slider], outputs=[a_output])
demo.launch()