import os, sys import gradio as gr import shutil now_dir = os.getcwd() sys.path.append(now_dir) from assets.i18n.i18n import I18nAuto from core import run_model_blender_script i18n = I18nAuto() def update_model_fusion(dropbox): return dropbox, None def voice_blender_tab(): gr.Markdown(i18n("## Voice Blender")) gr.Markdown( i18n( "Select two voice models, set your desired blend percentage, and blend them into an entirely new voice." ) ) with gr.Column(): model_fusion_name = gr.Textbox( label=i18n("Model Name"), info=i18n("Name of the new model."), value="", max_lines=1, interactive=True, placeholder=i18n("Enter model name"), ) with gr.Row(): with gr.Column(): model_fusion_a_dropbox = gr.File( label=i18n("Drag and drop your model here"), type="filepath" ) model_fusion_a = gr.Textbox( label=i18n("Path to Model"), value="", interactive=True, placeholder=i18n("Enter path to model"), info=i18n("You can also use a custom path."), ) with gr.Column(): model_fusion_b_dropbox = gr.File( label=i18n("Drag and drop your model here"), type="filepath" ) model_fusion_b = gr.Textbox( label=i18n("Path to Model"), value="", interactive=True, placeholder=i18n("Enter path to model"), info=i18n("You can also use a custom path."), ) alpha_a = gr.Slider( minimum=0, maximum=1, label=i18n("Blend Ratio"), value=0.5, interactive=True, info=i18n( "Adjusting the position more towards one side or the other will make the model more similar to the first or second." ), ) model_fusion_button = gr.Button(i18n("Fusion"), variant="primary") with gr.Row(): model_fusion_output_info = gr.Textbox( label=i18n("Output Information"), info=i18n("The output information will be displayed here."), value="", ) model_fusion_pth_output = gr.File( label=i18n("Download Model"), type="filepath", interactive=False ) model_fusion_button.click( fn=run_model_blender_script, inputs=[ model_fusion_name, model_fusion_a, model_fusion_b, alpha_a, ], outputs=[model_fusion_output_info, model_fusion_pth_output], ) model_fusion_a_dropbox.upload( fn=update_model_fusion, inputs=model_fusion_a_dropbox, outputs=[model_fusion_a, model_fusion_a_dropbox], ) model_fusion_b_dropbox.upload( fn=update_model_fusion, inputs=model_fusion_b_dropbox, outputs=[model_fusion_b, model_fusion_b_dropbox], )