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", )