Update infer-web.py
Browse files- infer-web.py +352 -347
infer-web.py
CHANGED
@@ -69,6 +69,9 @@ import time
|
|
69 |
import csv
|
70 |
from shlex import quote as SQuote
|
71 |
|
|
|
|
|
|
|
72 |
logger = logging.getLogger(__name__)
|
73 |
|
74 |
RQuote = lambda val: SQuote(str(val))
|
@@ -2451,384 +2454,386 @@ def GradioSetup():
|
|
2451 |
outputs=[advanced_settings_batch],
|
2452 |
)
|
2453 |
|
2454 |
-
with gr.TabItem(i18n("Train"), visible=False):
|
2455 |
|
2456 |
-
|
2457 |
-
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
|
2463 |
-
|
2464 |
-
|
2465 |
-
|
2466 |
-
|
2467 |
-
|
2468 |
-
|
2469 |
-
|
2470 |
-
|
2471 |
-
|
2472 |
-
|
2473 |
-
|
2474 |
-
|
2475 |
-
label=i18n("Version:"),
|
2476 |
-
choices=["v1", "v2"],
|
2477 |
-
value="v2",
|
2478 |
-
interactive=True,
|
2479 |
-
visible=True,
|
2480 |
-
)
|
2481 |
-
|
2482 |
-
with gr.Column():
|
2483 |
-
np7 = gr.Slider(
|
2484 |
-
minimum=1,
|
2485 |
-
maximum=config.n_cpu,
|
2486 |
-
step=1,
|
2487 |
-
label=i18n("Number of CPU processes:"),
|
2488 |
-
value=config.n_cpu,
|
2489 |
interactive=True,
|
2490 |
)
|
2491 |
-
|
2492 |
-
|
2493 |
-
|
2494 |
-
|
2495 |
-
label=i18n("Specify the model ID:"),
|
2496 |
-
value=0,
|
2497 |
interactive=True,
|
|
|
2498 |
)
|
2499 |
-
|
2500 |
-
|
2501 |
-
|
2502 |
-
|
2503 |
-
|
2504 |
-
|
2505 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2506 |
)
|
2507 |
-
|
2508 |
-
|
2509 |
-
|
2510 |
-
|
|
|
|
|
|
|
2511 |
)
|
2512 |
-
|
2513 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2514 |
)
|
2515 |
-
|
2516 |
-
|
2517 |
-
|
2518 |
-
|
2519 |
-
|
2520 |
-
|
2521 |
-
|
2522 |
-
|
2523 |
-
|
2524 |
-
|
2525 |
-
|
|
|
|
|
|
|
2526 |
)
|
2527 |
-
|
2528 |
-
with gr.Accordion(label=i18n("Step 2: Extracting features")):
|
2529 |
with gr.Row():
|
2530 |
-
with gr.
|
2531 |
-
|
2532 |
-
|
2533 |
-
|
2534 |
-
|
2535 |
-
|
2536 |
-
|
2537 |
-
|
2538 |
-
|
2539 |
-
|
2540 |
-
|
2541 |
-
|
2542 |
-
|
2543 |
-
|
2544 |
-
|
2545 |
-
|
2546 |
-
|
2547 |
-
|
2548 |
-
|
2549 |
-
|
2550 |
-
|
2551 |
-
|
2552 |
-
|
2553 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2554 |
],
|
2555 |
-
|
2556 |
-
|
2557 |
)
|
2558 |
-
|
2559 |
-
|
2560 |
-
|
2561 |
-
|
2562 |
-
|
2563 |
-
"Hop Length (lower hop lengths take more time to infer but are more pitch accurate):"
|
2564 |
-
),
|
2565 |
-
value=64,
|
2566 |
-
interactive=True,
|
2567 |
-
)
|
2568 |
-
|
2569 |
with gr.Row():
|
2570 |
-
|
2571 |
-
|
2572 |
-
|
2573 |
-
|
2574 |
-
|
2575 |
-
interactive=False,
|
2576 |
-
)
|
2577 |
-
|
2578 |
-
but2.click(
|
2579 |
-
extract_f0_feature,
|
2580 |
-
[
|
2581 |
-
gpus6,
|
2582 |
-
np7,
|
2583 |
-
f0method8,
|
2584 |
-
if_f0_3,
|
2585 |
-
exp_dir1,
|
2586 |
-
version19,
|
2587 |
-
hop_length,
|
2588 |
-
],
|
2589 |
-
[info2],
|
2590 |
-
api_name="train_extract_f0_feature",
|
2591 |
-
)
|
2592 |
-
|
2593 |
-
with gr.Row():
|
2594 |
-
with gr.Accordion(label=i18n("Step 3: Model training started")):
|
2595 |
-
with gr.Row():
|
2596 |
-
save_epoch10 = gr.Slider(
|
2597 |
-
minimum=1,
|
2598 |
-
maximum=100,
|
2599 |
-
step=1,
|
2600 |
-
label=i18n("Save frequency:"),
|
2601 |
-
value=10,
|
2602 |
-
interactive=True,
|
2603 |
-
visible=True,
|
2604 |
-
)
|
2605 |
-
total_epoch11 = gr.Slider(
|
2606 |
-
minimum=1,
|
2607 |
-
maximum=10000,
|
2608 |
-
step=2,
|
2609 |
-
label=i18n("Training epochs:"),
|
2610 |
-
value=750,
|
2611 |
-
interactive=True,
|
2612 |
-
)
|
2613 |
-
batch_size12 = gr.Slider(
|
2614 |
-
minimum=1,
|
2615 |
-
maximum=50,
|
2616 |
-
step=1,
|
2617 |
-
label=i18n("Batch size per GPU:"),
|
2618 |
-
value=default_batch_size,
|
2619 |
-
# value=20,
|
2620 |
-
interactive=True,
|
2621 |
-
)
|
2622 |
-
|
2623 |
-
with gr.Row():
|
2624 |
-
if_save_latest13 = gr.Checkbox(
|
2625 |
-
label=i18n(
|
2626 |
-
"Whether to save only the latest .ckpt file to save hard drive space"
|
2627 |
-
),
|
2628 |
-
value=True,
|
2629 |
interactive=True,
|
2630 |
)
|
2631 |
-
|
2632 |
label=i18n(
|
2633 |
-
"
|
2634 |
),
|
2635 |
-
value=
|
2636 |
-
interactive=True,
|
2637 |
)
|
2638 |
-
|
|
|
2639 |
label=i18n(
|
2640 |
-
"
|
2641 |
),
|
2642 |
-
value=True,
|
2643 |
-
interactive=True,
|
2644 |
)
|
|
|
2645 |
with gr.Column():
|
2646 |
-
|
2647 |
-
|
2648 |
-
label=i18n("Load pre-trained base model G path:"),
|
2649 |
-
value="assets/pretrained_v2/f0G40k.pth",
|
2650 |
-
interactive=True,
|
2651 |
-
)
|
2652 |
-
pretrained_D15 = gr.Textbox(
|
2653 |
-
label=i18n("Load pre-trained base model D path:"),
|
2654 |
-
value="assets/pretrained_v2/f0D40k.pth",
|
2655 |
-
interactive=True,
|
2656 |
-
)
|
2657 |
-
with gr.Row():
|
2658 |
-
gpus16 = gr.Textbox(
|
2659 |
-
label=i18n(
|
2660 |
-
"Provide the GPU index(es) separated by '-', like 0-1-2 for using GPUs 0, 1, and 2:"
|
2661 |
-
),
|
2662 |
-
value=gpus,
|
2663 |
-
interactive=True,
|
2664 |
-
)
|
2665 |
-
sr2.change(
|
2666 |
-
change_sr2,
|
2667 |
-
[sr2, if_f0_3, version19],
|
2668 |
-
[pretrained_G14, pretrained_D15],
|
2669 |
)
|
2670 |
-
|
2671 |
-
|
2672 |
-
|
2673 |
-
|
2674 |
-
|
2675 |
-
|
2676 |
-
|
2677 |
-
inputs=[if_f0_3, sr2, version19],
|
2678 |
-
outputs=[f0method8, pretrained_G14, pretrained_D15],
|
2679 |
-
)
|
2680 |
-
with gr.Row():
|
2681 |
-
butstop = gr.Button(
|
2682 |
-
i18n("Stop training"),
|
2683 |
-
variant="primary",
|
2684 |
visible=False,
|
2685 |
)
|
2686 |
-
|
2687 |
-
i18n("
|
2688 |
-
|
2689 |
-
but3.click(
|
2690 |
-
fn=stoptraining,
|
2691 |
-
inputs=[gr.Number(value=0, visible=False)],
|
2692 |
-
outputs=[but3, butstop],
|
2693 |
-
api_name="train_stop",
|
2694 |
-
)
|
2695 |
-
butstop.click(
|
2696 |
-
fn=stoptraining,
|
2697 |
-
inputs=[gr.Number(value=1, visible=False)],
|
2698 |
-
outputs=[but3, butstop],
|
2699 |
)
|
2700 |
-
|
2701 |
-
label=i18n("
|
2702 |
-
value="",
|
2703 |
-
lines=4,
|
2704 |
-
max_lines=4,
|
2705 |
)
|
2706 |
-
|
2707 |
-
|
2708 |
-
|
2709 |
-
|
2710 |
-
|
2711 |
-
i18n("Save all"),
|
2712 |
-
i18n("Save D and G"),
|
2713 |
-
i18n("Save voice"),
|
2714 |
-
],
|
2715 |
-
value=i18n("Choose the method"),
|
2716 |
-
interactive=True,
|
2717 |
-
)
|
2718 |
-
but4 = gr.Button(
|
2719 |
-
i18n("Train feature index"), variant="primary"
|
2720 |
-
)
|
2721 |
-
|
2722 |
-
but7 = gr.Button(i18n("Save model"), variant="primary")
|
2723 |
-
|
2724 |
-
if_save_every_weights18.change(
|
2725 |
-
fn=lambda if_save_every_weights: (
|
2726 |
-
{
|
2727 |
-
"visible": if_save_every_weights,
|
2728 |
-
"__type__": "update",
|
2729 |
-
}
|
2730 |
-
),
|
2731 |
-
inputs=[if_save_every_weights18],
|
2732 |
-
outputs=[save_epoch10],
|
2733 |
)
|
2734 |
-
|
2735 |
-
|
2736 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2737 |
[
|
2738 |
-
|
2739 |
-
|
2740 |
-
|
2741 |
-
|
2742 |
-
|
2743 |
-
|
2744 |
-
|
2745 |
-
|
2746 |
-
pretrained_G14,
|
2747 |
-
pretrained_D15,
|
2748 |
-
gpus16,
|
2749 |
-
if_cache_gpu17,
|
2750 |
-
if_save_every_weights18,
|
2751 |
-
version19,
|
2752 |
],
|
2753 |
-
[
|
2754 |
-
api_name="
|
2755 |
-
)
|
2756 |
-
|
2757 |
-
but4.click(train_index, [exp_dir1, version19], info3)
|
2758 |
-
but7.click(resources.save_model, [exp_dir1, save_action], info3)
|
2759 |
-
|
2760 |
-
with gr.TabItem(i18n("UVR5")): # UVR section
|
2761 |
-
with gr.Row():
|
2762 |
-
with gr.Column():
|
2763 |
-
model_select = gr.Radio(
|
2764 |
-
label=i18n("Model Architecture:"),
|
2765 |
-
choices=["VR", "MDX", "Demucs (Beta)"],
|
2766 |
-
value="VR",
|
2767 |
-
interactive=True,
|
2768 |
-
)
|
2769 |
-
dir_wav_input = gr.Textbox(
|
2770 |
-
label=i18n(
|
2771 |
-
"Enter the path of the audio folder to be processed:"
|
2772 |
-
),
|
2773 |
-
value=os.path.join(now_dir, "assets", "audios"),
|
2774 |
-
)
|
2775 |
-
wav_inputs = gr.File(
|
2776 |
-
file_count="multiple",
|
2777 |
-
label=i18n(
|
2778 |
-
"You can also input audio files in batches. Choose one of the two options. Priority is given to reading from the folder."
|
2779 |
-
),
|
2780 |
-
)
|
2781 |
-
|
2782 |
-
with gr.Column():
|
2783 |
-
model_choose = gr.Dropdown(
|
2784 |
-
label=i18n("Model:"), choices=uvr5_names
|
2785 |
)
|
2786 |
-
agg = gr.Slider(
|
2787 |
-
minimum=0,
|
2788 |
-
maximum=20,
|
2789 |
-
step=1,
|
2790 |
-
label="Vocal Extraction Aggressive",
|
2791 |
-
value=10,
|
2792 |
-
interactive=True,
|
2793 |
-
visible=False,
|
2794 |
-
)
|
2795 |
-
opt_vocal_root = gr.Textbox(
|
2796 |
-
label=i18n("Specify the output folder for vocals:"),
|
2797 |
-
value="assets/audios",
|
2798 |
-
)
|
2799 |
-
opt_ins_root = gr.Textbox(
|
2800 |
-
label=i18n("Specify the output folder for accompaniment:"),
|
2801 |
-
value="assets/audios/audio-others",
|
2802 |
-
)
|
2803 |
-
format0 = gr.Radio(
|
2804 |
-
label=i18n("Export file format:"),
|
2805 |
-
choices=["wav", "flac", "mp3", "m4a"],
|
2806 |
-
value="flac",
|
2807 |
-
interactive=True,
|
2808 |
-
)
|
2809 |
-
model_select.change(
|
2810 |
-
fn=update_model_choices,
|
2811 |
-
inputs=model_select,
|
2812 |
-
outputs=model_choose,
|
2813 |
-
)
|
2814 |
-
but2 = gr.Button(i18n("Convert"), variant="primary")
|
2815 |
-
vc_output4 = gr.Textbox(label=i18n("Output information:"))
|
2816 |
-
# wav_inputs.upload(fn=save_to_wav2_edited, inputs=[wav_inputs], outputs=[])
|
2817 |
-
but2.click(
|
2818 |
-
uvr,
|
2819 |
-
[
|
2820 |
-
model_choose,
|
2821 |
-
dir_wav_input,
|
2822 |
-
opt_vocal_root,
|
2823 |
-
wav_inputs,
|
2824 |
-
opt_ins_root,
|
2825 |
-
agg,
|
2826 |
-
format0,
|
2827 |
-
model_select,
|
2828 |
-
],
|
2829 |
-
[vc_output4],
|
2830 |
-
api_name="uvr_convert",
|
2831 |
-
)
|
2832 |
with gr.TabItem(i18n("TTS")):
|
2833 |
with gr.Column():
|
2834 |
text_test = gr.Textbox(
|
|
|
69 |
import csv
|
70 |
from shlex import quote as SQuote
|
71 |
|
72 |
+
import torch
|
73 |
+
cpu_flag = torch.cuda.is_available()
|
74 |
+
|
75 |
logger = logging.getLogger(__name__)
|
76 |
|
77 |
RQuote = lambda val: SQuote(str(val))
|
|
|
2454 |
outputs=[advanced_settings_batch],
|
2455 |
)
|
2456 |
|
|
|
2457 |
|
2458 |
+
with gr.Tabs(visible=cpu_flag) as tabs:
|
2459 |
+
with gr.TabItem(i18n("Train"), visible=False):
|
2460 |
+
|
2461 |
+
with gr.Accordion(label=i18n("Step 1: Processing data")):
|
2462 |
+
with gr.Row():
|
2463 |
+
with gr.Column():
|
2464 |
+
exp_dir1 = gr.Textbox(
|
2465 |
+
label=i18n("Enter the model name:"),
|
2466 |
+
value=i18n("Model_Name"),
|
2467 |
+
)
|
2468 |
+
if_f0_3 = gr.Checkbox(
|
2469 |
+
label=i18n("Whether the model has pitch guidance."),
|
2470 |
+
value=True,
|
2471 |
+
interactive=True,
|
2472 |
+
)
|
2473 |
+
sr2 = gr.Radio(
|
2474 |
+
label=i18n("Target sample rate:"),
|
2475 |
+
choices=["40k", "48k", "32k"],
|
2476 |
+
value="40k",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2477 |
interactive=True,
|
2478 |
)
|
2479 |
+
version19 = gr.Radio(
|
2480 |
+
label=i18n("Version:"),
|
2481 |
+
choices=["v1", "v2"],
|
2482 |
+
value="v2",
|
|
|
|
|
2483 |
interactive=True,
|
2484 |
+
visible=True,
|
2485 |
)
|
2486 |
+
|
2487 |
+
with gr.Column():
|
2488 |
+
np7 = gr.Slider(
|
2489 |
+
minimum=1,
|
2490 |
+
maximum=config.n_cpu,
|
2491 |
+
step=1,
|
2492 |
+
label=i18n("Number of CPU processes:"),
|
2493 |
+
value=config.n_cpu,
|
2494 |
+
interactive=True,
|
2495 |
+
)
|
2496 |
+
spk_id5 = gr.Slider(
|
2497 |
+
minimum=0,
|
2498 |
+
maximum=4,
|
2499 |
+
step=1,
|
2500 |
+
label=i18n("Specify the model ID:"),
|
2501 |
+
value=0,
|
2502 |
+
interactive=True,
|
2503 |
+
)
|
2504 |
+
|
2505 |
+
with gr.Row():
|
2506 |
+
with gr.Column():
|
2507 |
+
trainset_dir4 = gr.Dropdown(
|
2508 |
+
choices=sorted(datasets),
|
2509 |
+
label=i18n("Select your dataset:"),
|
2510 |
+
value=get_dataset(),
|
2511 |
+
)
|
2512 |
+
|
2513 |
+
dataset_path = gr.Textbox(
|
2514 |
+
label=i18n("Or add your dataset path:"),
|
2515 |
+
interactive=True,
|
2516 |
+
)
|
2517 |
+
btn_update_dataset_list = gr.Button(
|
2518 |
+
i18n("Update list"), variant="primary"
|
2519 |
+
)
|
2520 |
+
|
2521 |
+
btn_update_dataset_list.click(
|
2522 |
+
resources.update_dataset_list, [spk_id5], trainset_dir4
|
2523 |
)
|
2524 |
+
but1 = gr.Button(i18n("Process data"), variant="primary")
|
2525 |
+
info1 = gr.Textbox(label=i18n("Output information:"), value="")
|
2526 |
+
but1.click(
|
2527 |
+
preprocess_dataset,
|
2528 |
+
[trainset_dir4, exp_dir1, sr2, np7, dataset_path],
|
2529 |
+
[info1],
|
2530 |
+
api_name="train_preprocess",
|
2531 |
)
|
2532 |
+
|
2533 |
+
with gr.Accordion(label=i18n("Step 2: Extracting features")):
|
2534 |
+
with gr.Row():
|
2535 |
+
with gr.Column():
|
2536 |
+
gpus6 = gr.Textbox(
|
2537 |
+
label=i18n(
|
2538 |
+
"Provide the GPU index(es) separated by '-', like 0-1-2 for using GPUs 0, 1, and 2:"
|
2539 |
+
),
|
2540 |
+
value=gpus,
|
2541 |
+
interactive=True,
|
2542 |
+
)
|
2543 |
+
gpu_info9 = gr.Textbox(
|
2544 |
+
label=i18n("GPU Information:"),
|
2545 |
+
value=gpu_info,
|
2546 |
+
visible=F0GPUVisible,
|
2547 |
+
)
|
2548 |
+
with gr.Column():
|
2549 |
+
f0method8 = gr.Radio(
|
2550 |
+
label=i18n("Select the pitch extraction algorithm:"),
|
2551 |
+
choices=[
|
2552 |
+
"pm",
|
2553 |
+
"harvest",
|
2554 |
+
"dio",
|
2555 |
+
"crepe",
|
2556 |
+
"mangio-crepe",
|
2557 |
+
"rmvpe",
|
2558 |
+
"rmvpe_gpu",
|
2559 |
+
],
|
2560 |
+
value="rmvpe",
|
2561 |
+
interactive=True,
|
2562 |
+
)
|
2563 |
+
hop_length = gr.Slider(
|
2564 |
+
minimum=1,
|
2565 |
+
maximum=512,
|
2566 |
+
step=1,
|
2567 |
+
label=i18n(
|
2568 |
+
"Hop Length (lower hop lengths take more time to infer but are more pitch accurate):"
|
2569 |
+
),
|
2570 |
+
value=64,
|
2571 |
+
interactive=True,
|
2572 |
+
)
|
2573 |
+
|
2574 |
+
with gr.Row():
|
2575 |
+
but2 = gr.Button(i18n("Feature extraction"), variant="primary")
|
2576 |
+
info2 = gr.Textbox(
|
2577 |
+
label=i18n("Output information:"),
|
2578 |
+
value="",
|
2579 |
+
max_lines=8,
|
2580 |
+
interactive=False,
|
2581 |
)
|
2582 |
+
|
2583 |
+
but2.click(
|
2584 |
+
extract_f0_feature,
|
2585 |
+
[
|
2586 |
+
gpus6,
|
2587 |
+
np7,
|
2588 |
+
f0method8,
|
2589 |
+
if_f0_3,
|
2590 |
+
exp_dir1,
|
2591 |
+
version19,
|
2592 |
+
hop_length,
|
2593 |
+
],
|
2594 |
+
[info2],
|
2595 |
+
api_name="train_extract_f0_feature",
|
2596 |
)
|
2597 |
+
|
|
|
2598 |
with gr.Row():
|
2599 |
+
with gr.Accordion(label=i18n("Step 3: Model training started")):
|
2600 |
+
with gr.Row():
|
2601 |
+
save_epoch10 = gr.Slider(
|
2602 |
+
minimum=1,
|
2603 |
+
maximum=100,
|
2604 |
+
step=1,
|
2605 |
+
label=i18n("Save frequency:"),
|
2606 |
+
value=10,
|
2607 |
+
interactive=True,
|
2608 |
+
visible=True,
|
2609 |
+
)
|
2610 |
+
total_epoch11 = gr.Slider(
|
2611 |
+
minimum=1,
|
2612 |
+
maximum=10000,
|
2613 |
+
step=2,
|
2614 |
+
label=i18n("Training epochs:"),
|
2615 |
+
value=750,
|
2616 |
+
interactive=True,
|
2617 |
+
)
|
2618 |
+
batch_size12 = gr.Slider(
|
2619 |
+
minimum=1,
|
2620 |
+
maximum=50,
|
2621 |
+
step=1,
|
2622 |
+
label=i18n("Batch size per GPU:"),
|
2623 |
+
value=default_batch_size,
|
2624 |
+
# value=20,
|
2625 |
+
interactive=True,
|
2626 |
+
)
|
2627 |
+
|
2628 |
+
with gr.Row():
|
2629 |
+
if_save_latest13 = gr.Checkbox(
|
2630 |
+
label=i18n(
|
2631 |
+
"Whether to save only the latest .ckpt file to save hard drive space"
|
2632 |
+
),
|
2633 |
+
value=True,
|
2634 |
+
interactive=True,
|
2635 |
+
)
|
2636 |
+
if_cache_gpu17 = gr.Checkbox(
|
2637 |
+
label=i18n(
|
2638 |
+
"Cache all training sets to GPU memory. Caching small datasets (less than 10 minutes) can speed up training"
|
2639 |
+
),
|
2640 |
+
value=False,
|
2641 |
+
interactive=True,
|
2642 |
+
)
|
2643 |
+
if_save_every_weights18 = gr.Checkbox(
|
2644 |
+
label=i18n(
|
2645 |
+
"Save a small final model to the 'weights' folder at each save point"
|
2646 |
+
),
|
2647 |
+
value=True,
|
2648 |
+
interactive=True,
|
2649 |
+
)
|
2650 |
+
with gr.Column():
|
2651 |
+
with gr.Row():
|
2652 |
+
pretrained_G14 = gr.Textbox(
|
2653 |
+
label=i18n("Load pre-trained base model G path:"),
|
2654 |
+
value="assets/pretrained_v2/f0G40k.pth",
|
2655 |
+
interactive=True,
|
2656 |
+
)
|
2657 |
+
pretrained_D15 = gr.Textbox(
|
2658 |
+
label=i18n("Load pre-trained base model D path:"),
|
2659 |
+
value="assets/pretrained_v2/f0D40k.pth",
|
2660 |
+
interactive=True,
|
2661 |
+
)
|
2662 |
+
with gr.Row():
|
2663 |
+
gpus16 = gr.Textbox(
|
2664 |
+
label=i18n(
|
2665 |
+
"Provide the GPU index(es) separated by '-', like 0-1-2 for using GPUs 0, 1, and 2:"
|
2666 |
+
),
|
2667 |
+
value=gpus,
|
2668 |
+
interactive=True,
|
2669 |
+
)
|
2670 |
+
sr2.change(
|
2671 |
+
change_sr2,
|
2672 |
+
[sr2, if_f0_3, version19],
|
2673 |
+
[pretrained_G14, pretrained_D15],
|
2674 |
+
)
|
2675 |
+
version19.change(
|
2676 |
+
change_version19,
|
2677 |
+
[sr2, if_f0_3, version19],
|
2678 |
+
[pretrained_G14, pretrained_D15, sr2],
|
2679 |
+
)
|
2680 |
+
if_f0_3.change(
|
2681 |
+
fn=change_f0,
|
2682 |
+
inputs=[if_f0_3, sr2, version19],
|
2683 |
+
outputs=[f0method8, pretrained_G14, pretrained_D15],
|
2684 |
+
)
|
2685 |
+
with gr.Row():
|
2686 |
+
butstop = gr.Button(
|
2687 |
+
i18n("Stop training"),
|
2688 |
+
variant="primary",
|
2689 |
+
visible=False,
|
2690 |
+
)
|
2691 |
+
but3 = gr.Button(
|
2692 |
+
i18n("Train model"), variant="primary", visible=True
|
2693 |
+
)
|
2694 |
+
but3.click(
|
2695 |
+
fn=stoptraining,
|
2696 |
+
inputs=[gr.Number(value=0, visible=False)],
|
2697 |
+
outputs=[but3, butstop],
|
2698 |
+
api_name="train_stop",
|
2699 |
+
)
|
2700 |
+
butstop.click(
|
2701 |
+
fn=stoptraining,
|
2702 |
+
inputs=[gr.Number(value=1, visible=False)],
|
2703 |
+
outputs=[but3, butstop],
|
2704 |
+
)
|
2705 |
+
info3 = gr.Textbox(
|
2706 |
+
label=i18n("Output information:"),
|
2707 |
+
value="",
|
2708 |
+
lines=4,
|
2709 |
+
max_lines=4,
|
2710 |
+
)
|
2711 |
+
|
2712 |
+
with gr.Column():
|
2713 |
+
save_action = gr.Dropdown(
|
2714 |
+
label=i18n("Save type"),
|
2715 |
+
choices=[
|
2716 |
+
i18n("Save all"),
|
2717 |
+
i18n("Save D and G"),
|
2718 |
+
i18n("Save voice"),
|
2719 |
+
],
|
2720 |
+
value=i18n("Choose the method"),
|
2721 |
+
interactive=True,
|
2722 |
+
)
|
2723 |
+
but4 = gr.Button(
|
2724 |
+
i18n("Train feature index"), variant="primary"
|
2725 |
+
)
|
2726 |
+
|
2727 |
+
but7 = gr.Button(i18n("Save model"), variant="primary")
|
2728 |
+
|
2729 |
+
if_save_every_weights18.change(
|
2730 |
+
fn=lambda if_save_every_weights: (
|
2731 |
+
{
|
2732 |
+
"visible": if_save_every_weights,
|
2733 |
+
"__type__": "update",
|
2734 |
+
}
|
2735 |
+
),
|
2736 |
+
inputs=[if_save_every_weights18],
|
2737 |
+
outputs=[save_epoch10],
|
2738 |
+
)
|
2739 |
+
|
2740 |
+
but3.click(
|
2741 |
+
click_train,
|
2742 |
+
[
|
2743 |
+
exp_dir1,
|
2744 |
+
sr2,
|
2745 |
+
if_f0_3,
|
2746 |
+
spk_id5,
|
2747 |
+
save_epoch10,
|
2748 |
+
total_epoch11,
|
2749 |
+
batch_size12,
|
2750 |
+
if_save_latest13,
|
2751 |
+
pretrained_G14,
|
2752 |
+
pretrained_D15,
|
2753 |
+
gpus16,
|
2754 |
+
if_cache_gpu17,
|
2755 |
+
if_save_every_weights18,
|
2756 |
+
version19,
|
2757 |
],
|
2758 |
+
[info3, butstop, but3],
|
2759 |
+
api_name="train_start",
|
2760 |
)
|
2761 |
+
|
2762 |
+
but4.click(train_index, [exp_dir1, version19], info3)
|
2763 |
+
but7.click(resources.save_model, [exp_dir1, save_action], info3)
|
2764 |
+
|
2765 |
+
with gr.TabItem(i18n("UVR5")): # UVR section
|
|
|
|
|
|
|
|
|
|
|
|
|
2766 |
with gr.Row():
|
2767 |
+
with gr.Column():
|
2768 |
+
model_select = gr.Radio(
|
2769 |
+
label=i18n("Model Architecture:"),
|
2770 |
+
choices=["VR", "MDX", "Demucs (Beta)"],
|
2771 |
+
value="VR",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2772 |
interactive=True,
|
2773 |
)
|
2774 |
+
dir_wav_input = gr.Textbox(
|
2775 |
label=i18n(
|
2776 |
+
"Enter the path of the audio folder to be processed:"
|
2777 |
),
|
2778 |
+
value=os.path.join(now_dir, "assets", "audios"),
|
|
|
2779 |
)
|
2780 |
+
wav_inputs = gr.File(
|
2781 |
+
file_count="multiple",
|
2782 |
label=i18n(
|
2783 |
+
"You can also input audio files in batches. Choose one of the two options. Priority is given to reading from the folder."
|
2784 |
),
|
|
|
|
|
2785 |
)
|
2786 |
+
|
2787 |
with gr.Column():
|
2788 |
+
model_choose = gr.Dropdown(
|
2789 |
+
label=i18n("Model:"), choices=uvr5_names
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2790 |
)
|
2791 |
+
agg = gr.Slider(
|
2792 |
+
minimum=0,
|
2793 |
+
maximum=20,
|
2794 |
+
step=1,
|
2795 |
+
label="Vocal Extraction Aggressive",
|
2796 |
+
value=10,
|
2797 |
+
interactive=True,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2798 |
visible=False,
|
2799 |
)
|
2800 |
+
opt_vocal_root = gr.Textbox(
|
2801 |
+
label=i18n("Specify the output folder for vocals:"),
|
2802 |
+
value="assets/audios",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2803 |
)
|
2804 |
+
opt_ins_root = gr.Textbox(
|
2805 |
+
label=i18n("Specify the output folder for accompaniment:"),
|
2806 |
+
value="assets/audios/audio-others",
|
|
|
|
|
2807 |
)
|
2808 |
+
format0 = gr.Radio(
|
2809 |
+
label=i18n("Export file format:"),
|
2810 |
+
choices=["wav", "flac", "mp3", "m4a"],
|
2811 |
+
value="flac",
|
2812 |
+
interactive=True,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2813 |
)
|
2814 |
+
model_select.change(
|
2815 |
+
fn=update_model_choices,
|
2816 |
+
inputs=model_select,
|
2817 |
+
outputs=model_choose,
|
2818 |
+
)
|
2819 |
+
but2 = gr.Button(i18n("Convert"), variant="primary")
|
2820 |
+
vc_output4 = gr.Textbox(label=i18n("Output information:"))
|
2821 |
+
# wav_inputs.upload(fn=save_to_wav2_edited, inputs=[wav_inputs], outputs=[])
|
2822 |
+
but2.click(
|
2823 |
+
uvr,
|
2824 |
[
|
2825 |
+
model_choose,
|
2826 |
+
dir_wav_input,
|
2827 |
+
opt_vocal_root,
|
2828 |
+
wav_inputs,
|
2829 |
+
opt_ins_root,
|
2830 |
+
agg,
|
2831 |
+
format0,
|
2832 |
+
model_select,
|
|
|
|
|
|
|
|
|
|
|
|
|
2833 |
],
|
2834 |
+
[vc_output4],
|
2835 |
+
api_name="uvr_convert",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2836 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2837 |
with gr.TabItem(i18n("TTS")):
|
2838 |
with gr.Column():
|
2839 |
text_test = gr.Textbox(
|