import gradio as gr import librosa import soundfile as sf import numpy as np def convert_voice(source, target): src_audio, sr = librosa.load(source, sr=None) tgt_audio, _ = librosa.load(target, sr=None) # simple placeholder mixing (replace with RVC inference) min_len = min(len(src_audio), len(tgt_audio)) output = (src_audio[:min_len] * 0.5) + (tgt_audio[:min_len] * 0.5) out_path = "output.wav" sf.write(out_path, output, sr) return out_path with gr.Blocks() as demo: gr.Markdown("# RVC Voice Converter") source = gr.Audio(type="filepath", label="Source Voice") target = gr.Audio(type="filepath", label="Target Voice") btn = gr.Button("Convert") output = gr.Audio(label="Converted Voice") btn.click(convert_voice, inputs=[source, target], outputs=output) demo.launch()