Spaces:
Running
Running
| import gradio as gr | |
| import os | |
| import shutil | |
| import subprocess | |
| # ---- Upload audio function ---- | |
| def upload_audio(audio_files, model_name): | |
| if not audio_files: | |
| return "β οΈ Please upload at least one audio file." | |
| if not model_name: | |
| return "β οΈ Model name cannot be empty." | |
| save_dir = os.path.join("dataset", model_name) | |
| os.makedirs(save_dir, exist_ok=True) | |
| for i, file in enumerate(audio_files): | |
| shutil.copy(file.name, os.path.join(save_dir, f"{model_name}_{i}.wav")) | |
| return f"β {len(audio_files)} audio files saved to '{save_dir}' folder!" | |
| # ---- Start training function ---- | |
| def train_rvc(model_name, sample_rate, epochs, batch_size): | |
| dataset_dir = os.path.join("dataset", model_name) | |
| if not os.path.exists(dataset_dir): | |
| return f"β οΈ {dataset_dir} folder not found. Upload audio files first." | |
| try: | |
| cmd = [ | |
| "python3", "train.py", | |
| "--model_name", model_name, | |
| "--dataset", dataset_dir, | |
| "--sample_rate", str(sample_rate), | |
| "--epochs", str(epochs), | |
| "--batch_size", str(batch_size) | |
| ] | |
| subprocess.Popen(cmd) | |
| return f"π RVC v2 Training started!\nModel: {model_name}\nEpochs: {epochs}\nBatch: {batch_size}\nSample Rate: {sample_rate}Hz\n\nCheck console for progress!" | |
| except Exception as e: | |
| return f"β Training failed to start: {e}" | |
| # ---- Interface ---- | |
| with gr.Blocks(title="RVC v2 Training") as demo: | |
| gr.Markdown("# ποΈ RVC v2 Voice Model Training Tool") | |
| gr.Markdown("1οΈβ£ Upload audio β 2οΈβ£ Enter model name β 3οΈβ£ Start training") | |
| with gr.Tab("Upload Audio"): | |
| with gr.Row(): | |
| audio_files = gr.File(file_count="multiple", label="π§ Upload Audio Files (.wav)") | |
| model_name = gr.Textbox(label="Model Name", placeholder="e.g.: zeynep_rvc") | |
| output_upload = gr.Textbox(label="Status", lines=3) | |
| upload_button = gr.Button("π¦ Upload Audio", variant="primary") | |
| upload_button.click(upload_audio, inputs=[audio_files, model_name], outputs=output_upload) | |
| with gr.Tab("Start Training"): | |
| sample_rate = gr.Dropdown(choices=[32000, 40000, 48000], value=40000, label="Sample Rate (Hz)") | |
| epochs = gr.Slider(50, 1000, value=200, step=50, label="Number of Epochs") | |
| batch_size = gr.Slider(4, 16, value=8, step=4, label="Batch Size") | |
| output_train = gr.Textbox(label="Training Status", lines=5) | |
| train_button = gr.Button("π Start RVC v2 Training", variant="primary") | |
| train_button.click(train_rvc, inputs=[model_name, sample_rate, epochs, batch_size], outputs=output_train) | |
| demo.launch() | |