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