r3gm's picture
Upload 340 files
3b7b011
import sys
sys.path.append("..")
import os
now_dir = os.getcwd()
from lib.infer.infer_libs.train.process_ckpt import (
change_info,
extract_small_model,
merge,
show_info,
)
from assets.i18n.i18n import I18nAuto
i18n = I18nAuto()
import gradio as gr
import traceback
def change_info_(ckpt_path):
if not os.path.exists(ckpt_path.replace(os.path.basename(ckpt_path), "train.log")):
return {"__type__": "update"}, {"__type__": "update"}, {"__type__": "update"}
try:
with open(
ckpt_path.replace(os.path.basename(ckpt_path), "train.log"), "r"
) as f:
info = eval(f.read().strip("\n").split("\n")[0].split("\t")[-1])
sr, f0 = info["sample_rate"], info["if_f0"]
version = "v2" if ("version" in info and info["version"] == "v2") else "v1"
return sr, str(f0), version
except:
traceback.print_exc()
return {"__type__": "update"}, {"__type__": "update"}, {"__type__": "update"}
def processing_():
with gr.Accordion(
label=i18n("Model fusion, can be used to test timbre fusion")
):
with gr.Row():
with gr.Column():
name_to_save0 = gr.Textbox(
label=i18n("Name:"),
value="",
max_lines=1,
interactive=True,
placeholder=i18n("Name for saving"),
)
alpha_a = gr.Slider(
minimum=0,
maximum=1,
label=i18n("Weight for Model A:"),
value=0.5,
interactive=True,
)
if_f0_ = gr.Checkbox(
label=i18n("Whether the model has pitch guidance."),
value=True,
interactive=True,
)
version_2 = gr.Radio(
label=i18n("Model architecture version:"),
choices=["v1", "v2"],
value="v2",
interactive=True,
)
sr_ = gr.Radio(
label=i18n("Target sample rate:"),
choices=["40k", "48k", "32k"],
value="40k",
interactive=True,
)
with gr.Column():
ckpt_a = gr.Textbox(
label=i18n("Path to Model A:"),
value="",
interactive=True,
placeholder=i18n("Path to model"),
)
ckpt_b = gr.Textbox(
label=i18n("Path to Model B:"),
value="",
interactive=True,
placeholder=i18n("Path to model"),
)
info__ = gr.Textbox(
label=i18n("Model information to be placed:"),
value="",
max_lines=8,
interactive=True,
placeholder=i18n("Model information to be placed"),
)
info4 = gr.Textbox(
label=i18n("Output information:"), value="", max_lines=8
)
but6 = gr.Button(i18n("Fusion"), variant="primary")
but6.click(
merge,
[
ckpt_a,
ckpt_b,
alpha_a,
sr_,
if_f0_,
info__,
name_to_save0,
version_2,
],
info4,
api_name="ckpt_merge",
) # def merge(path1,path2,alpha1,sr,f0,info):
with gr.Accordion(label=i18n("Modify model information")):
with gr.Row(): ######
with gr.Column():
ckpt_path0 = gr.Textbox(
label=i18n("Path to Model:"),
value="",
interactive=True,
placeholder=i18n("Path to model"),
)
info_ = gr.Textbox(
label=i18n("Model information to be modified:"),
value="",
max_lines=8,
interactive=True,
placeholder=i18n("Model information to be placed"),
)
with gr.Column():
name_to_save1 = gr.Textbox(
label=i18n("Save file name:"),
placeholder=i18n("Name for saving"),
value="",
max_lines=8,
interactive=True,
)
info5 = gr.Textbox(
label=i18n("Output information:"), value="", max_lines=8
)
but7 = gr.Button(i18n("Modify"), variant="primary")
but7.click(change_info, [ckpt_path0, info_, name_to_save1], info5, api_name="ckpt_modify",)
with gr.Accordion(label=i18n("View model information")):
with gr.Row():
with gr.Column():
ckpt_path1 = gr.Textbox(
label=i18n("Path to Model:"),
value="",
interactive=True,
placeholder=i18n("Path to model"),
)
info6 = gr.Textbox(
label=i18n("Output information:"), value="", max_lines=8
)
but8 = gr.Button(i18n("View"), variant="primary")
but8.click(show_info, [ckpt_path1], info6, api_name="ckpt_show")
with gr.Accordion(label=i18n("Model extraction")):
with gr.Row():
with gr.Column():
save_name = gr.Textbox(
label=i18n("Name:"),
value="",
interactive=True,
placeholder=i18n("Name for saving"),
)
if_f0__ = gr.Checkbox(
label=i18n("Whether the model has pitch guidance."),
value=True,
interactive=True,
)
version_1 = gr.Radio(
label=i18n("Model architecture version:"),
choices=["v1", "v2"],
value="v2",
interactive=True,
)
sr__ = gr.Radio(
label=i18n("Target sample rate:"),
choices=["32k", "40k", "48k"],
value="40k",
interactive=True,
)
with gr.Column():
ckpt_path2 = gr.Textbox(
label=i18n("Path to Model:"),
placeholder=i18n("Path to model"),
interactive=True,
)
info___ = gr.Textbox(
label=i18n("Model information to be placed:"),
value="",
max_lines=8,
interactive=True,
placeholder=i18n("Model information to be placed"),
)
info7 = gr.Textbox(
label=i18n("Output information:"), value="", max_lines=8
)
with gr.Row():
but9 = gr.Button(i18n("Extract"), variant="primary")
ckpt_path2.change(
change_info_, [ckpt_path2], [sr__, if_f0__, version_1]
)
but9.click(
extract_small_model,
[ckpt_path2, save_name, sr__, if_f0__, info___, version_1],
info7,
api_name="ckpt_extract",
)