- app_v1v2.py +19 -9
app_v1v2.py
CHANGED
|
@@ -212,17 +212,27 @@ def main(args):
|
|
| 212 |
with gr.Tabs():
|
| 213 |
with gr.TabItem("V2 - Voice & Style Conversion"):
|
| 214 |
v2_interface.render()
|
| 215 |
-
# 针对 Interface,我们需要找到它内部的依赖项并赋值
|
| 216 |
-
for dependency in v2_interface.dependencies:
|
| 217 |
-
if dependency["api_name"] is not None: # 如果已有默认名则覆盖
|
| 218 |
-
dependency["api_name"] = "convert_v2"
|
| 219 |
-
else:
|
| 220 |
-
# 强制指定第一个没有 api_name 的事件为 convert_v2
|
| 221 |
-
dependency["api_name"] = "convert_v2"
|
| 222 |
with gr.TabItem("V1 - Voice & Singing Voice Conversion"):
|
| 223 |
v1_interface.render()
|
| 224 |
-
|
| 225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 226 |
# Launch the combined interface
|
| 227 |
demo.launch()
|
| 228 |
|
|
|
|
| 212 |
with gr.Tabs():
|
| 213 |
with gr.TabItem("V2 - Voice & Style Conversion"):
|
| 214 |
v2_interface.render()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 215 |
with gr.TabItem("V1 - Voice & Singing Voice Conversion"):
|
| 216 |
v1_interface.render()
|
| 217 |
+
|
| 218 |
+
# --- 关键部分:手动定义一个隐藏的 API 端点 ---
|
| 219 |
+
# 即使你在 UI 上看不到它,Client 也可以通过 api_name 找到它
|
| 220 |
+
api_v2_btn = gr.Button("API V2", visible=False)
|
| 221 |
+
api_v2_btn.click(
|
| 222 |
+
fn=convert_voice_v2_wrapper,
|
| 223 |
+
inputs=v2_interface.input_components, # 自动获取 Interface 的输入
|
| 224 |
+
outputs=v2_interface.output_components, # 自动获取 Interface 的输出
|
| 225 |
+
api_name="convert_v2"
|
| 226 |
+
)
|
| 227 |
+
|
| 228 |
+
api_v1_btn = gr.Button("API V1", visible=False)
|
| 229 |
+
api_v1_btn.click(
|
| 230 |
+
fn=convert_voice_v1_wrapper,
|
| 231 |
+
inputs=v1_interface.input_components,
|
| 232 |
+
outputs=v1_interface.output_components,
|
| 233 |
+
api_name="convert_v1"
|
| 234 |
+
)
|
| 235 |
+
|
| 236 |
# Launch the combined interface
|
| 237 |
demo.launch()
|
| 238 |
|