Spaces:
Sleeping
Sleeping
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", | |
) | |