style(webui): 模型名移入模型切换板块(GPT/SoVITS上方), 训练样本独立板块

按操作层级重组: 模型名(实验名)是 GPT/SoVITS 的上游选择(选角色->自动匹配权重),
逻辑上应与其操作的 GPT/SoVITS 下拉同板块且在其上方。

布局调整:
- 「模型名(实验名)」+「刷新模型列表」移入「模型切换」板块顶部行
- 「GPT模型列表」「SoVITS模型列表」「刷新模型路径」保留在下方行
- 原「训练角色选择」板块改名为「训练样本选择」, 只剩训练样本下拉
  (模型名移走后这里不再需要「角色」二字)

新结构:
  模型切换: [模型名 | 刷新模型列表] / [GPT | SoVITS | 刷新模型路径]
  训练样本选择: [训练样本音频(满宽)]
  参考信息: [参考音频 | 参考文本+情绪/括注]

事件绑定不变(组件变量名未改), 端到端验证通过:
选模型名->40样本+GPT(e10)+SoVITS(e16); 切样本->参考音频+文本+情绪自动填入。
This commit is contained in:
XucroYuri 2026-07-07 13:13:38 +08:00
parent 59de1f79eb
commit 1c5849fd96

View File

@ -1446,6 +1446,16 @@ with gr.Blocks(title="GPT-SoVITS WebUI", analytics_enabled=False, js=js, css=css
)
with gr.Group():
gr.Markdown(html_center(i18n("模型切换"), "h3"))
# 模型名(实验名) 是 GPT/SoVITS 的上游选择: 选角色 -> 自动匹配权重
with gr.Row():
model_name_dropdown = gr.Dropdown(
label=i18n("模型名(训练实验名)"),
choices=[],
value="",
interactive=True,
scale=21,
)
refresh_models_btn = gr.Button(i18n("刷新模型列表"), variant="primary", scale=7)
with gr.Row():
GPT_dropdown = gr.Dropdown(
label=i18n("GPT模型列表"),
@ -1463,18 +1473,9 @@ with gr.Blocks(title="GPT-SoVITS WebUI", analytics_enabled=False, js=js, css=css
)
refresh_button = gr.Button(i18n("刷新模型路径"), variant="primary", scale=14)
refresh_button.click(fn=change_choices, inputs=[], outputs=[SoVITS_dropdown, GPT_dropdown])
# ===== 新增:训练角色选择区域(独立 Group按操作流程纵向排列 =====
# ===== 训练样本选择(选中即自动引用为参考音频 =====
with gr.Group():
gr.Markdown(html_center(i18n("训练角色选择(从训练数据中快速选择)"), "h3"))
with gr.Row():
model_name_dropdown = gr.Dropdown(
label=i18n("模型名(训练实验名)"),
choices=[],
value="",
interactive=True,
scale=21,
)
refresh_models_btn = gr.Button(i18n("刷新模型列表"), variant="primary", scale=7)
gr.Markdown(html_center(i18n("训练样本选择"), "h3"))
ref_sample_dropdown = gr.Dropdown(
label=i18n("训练样本音频(选中即自动引用为参考音频)"),
choices=[],