| | import gradio as gr |
| | import os |
| | import shutil |
| | import subprocess |
| |
|
| | |
| | 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!" |
| |
|
| | |
| | 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}" |
| |
|
| | |
| | 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() |
| |
|