Fix Gradio 4.x Audio compatibility on server

Only pass show_download_button and show_share_button when the installed Gradio Audio component supports them, fixing PM2 startup TypeError.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-12 18:40:19 +08:00
parent bdc63c04df
commit 4255cf7cd7
+20 -24
View File
@@ -5,6 +5,7 @@ Gradio Web 中控:音色锁定 → Whisper 识别 → Gemma4 润色 → ChatTT
from __future__ import annotations
import inspect
import logging
import re
import shutil
@@ -74,6 +75,22 @@ def ui_initial_history() -> tuple[dict, dict]:
return gr.update(choices=choices, value=latest), ui_history_play(latest)
def _tts_output_audio(label: str) -> gr.Audio:
"""成品播放器:兼容 Gradio 4.x(无 show_download_button 等参数)。"""
kwargs: dict = {
"label": label,
"type": "filepath",
"interactive": False,
"elem_classes": ["tts-output-audio"],
}
params = inspect.signature(gr.Audio.__init__).parameters
if "show_download_button" in params:
kwargs["show_download_button"] = True
if "show_share_button" in params:
kwargs["show_share_button"] = False
return gr.Audio(**kwargs)
# ---------------------------------------------------------------------------
# 全局 UI 状态(Gradio State
# ---------------------------------------------------------------------------
@@ -1148,14 +1165,7 @@ def build_app() -> gr.Blocks:
with gr.Row(elem_classes=["pipeline-output-row"]):
pipe_raw = gr.Textbox(label="转写原文", lines=6)
pipe_polished = gr.Textbox(label="润色稿", lines=6)
pipe_output = gr.Audio(
label="成品配音",
type="filepath",
interactive=False,
show_download_button=True,
show_share_button=False,
elem_classes=["tts-output-audio"],
)
pipe_output = _tts_output_audio("成品配音")
# ---- Tab 2: 分步流水线 ----
with gr.Tab("🔧 分步流水线"):
@@ -1202,14 +1212,7 @@ def build_app() -> gr.Blocks:
)
synth_btn = gr.Button("🔊 合成配音 WAV", variant="primary")
synth_log = gr.Textbox(label="合成日志", lines=3, interactive=False)
output_audio = gr.Audio(
label="成品配音",
type="filepath",
interactive=False,
show_download_button=True,
show_share_button=False,
elem_classes=["tts-output-audio"],
)
output_audio = _tts_output_audio("成品配音")
transcribe_btn.click(ui_transcribe, rec_audio, [raw_text, transcribe_log])
polish_btn.click(ui_polish, raw_text, [polished_text, polish_log])
@@ -1255,14 +1258,7 @@ def build_app() -> gr.Blocks:
scale=4,
)
history_refresh_btn = gr.Button("🔄 刷新", scale=0, min_width=100)
history_player = gr.Audio(
label="历史试听 / 下载",
type="filepath",
interactive=False,
show_download_button=True,
show_share_button=False,
elem_classes=["tts-output-audio"],
)
history_player = _tts_output_audio("历史试听 / 下载")
history_refresh_btn.click(ui_history_dropdown, outputs=[history_select])
history_select.change(ui_history_play, history_select, history_player)