Commit
·
d9e15de
1
Parent(s):
caa0c9b
修复音频预设机制 - 组件初始化时直接设置默认值
Browse files解决 HF Spaces 环境中音频显示为 object Object 的问题:
1. 在 gr.Audio 组件创建时直接设置 value 参数
2. 在 gr.TextArea 组件创建时直接设置默认文本
3. 移除复杂的 demo.load 事件机制
4. 添加文件存在性检查和错误处理
5. 说话者1和说话者2分别独立处理
现在用户打开页面应该能立即看到预填充的音频波形和文本内容
app.py
CHANGED
@@ -513,26 +513,72 @@ def create_space_ui() -> gr.Blocks:
|
|
513 |
with gr.Row():
|
514 |
with gr.Group():
|
515 |
gr.Markdown("### 🎵 说话者1 (女声)")
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
525 |
with gr.Group():
|
526 |
gr.Markdown("### 🎵 说话者2 (男声)")
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
|
537 |
with gr.Group():
|
538 |
gr.Markdown("### ⚙️ 设置")
|
@@ -646,17 +692,7 @@ def create_space_ui() -> gr.Blocks:
|
|
646 |
gr.Error(f"❌ 加载默认音频时出错: {str(e)}")
|
647 |
return gr.update(), gr.update(), gr.update(), gr.update(), gr.update()
|
648 |
|
649 |
-
#
|
650 |
-
def auto_load_on_startup():
|
651 |
-
"""页面加载时自动执行默认音频加载"""
|
652 |
-
print("🚀 页面加载,自动填充默认内容...")
|
653 |
-
return load_default_audio()
|
654 |
-
|
655 |
-
# 绑定页面加载事件 - 实现音频预设
|
656 |
-
demo.load(
|
657 |
-
fn=auto_load_on_startup,
|
658 |
-
outputs=[dialogue_text, speaker1_audio, speaker1_text, speaker2_audio, speaker2_text],
|
659 |
-
)
|
660 |
|
661 |
btn_load_scenario.click(
|
662 |
fn=on_load_scenario,
|
|
|
513 |
with gr.Row():
|
514 |
with gr.Group():
|
515 |
gr.Markdown("### 🎵 说话者1 (女声)")
|
516 |
+
# 尝试预设默认音频
|
517 |
+
try:
|
518 |
+
default_audio1 = DEFAULT_AUDIO_CONFIG["speaker1"]["audio"]
|
519 |
+
default_text1 = DEFAULT_AUDIO_CONFIG["speaker1"]["text"]
|
520 |
+
if os.path.exists(default_audio1):
|
521 |
+
speaker1_audio = gr.Audio(
|
522 |
+
label="参考音频",
|
523 |
+
type="filepath",
|
524 |
+
value=default_audio1
|
525 |
+
)
|
526 |
+
else:
|
527 |
+
speaker1_audio = gr.Audio(
|
528 |
+
label="参考音频",
|
529 |
+
type="filepath"
|
530 |
+
)
|
531 |
+
speaker1_text = gr.TextArea(
|
532 |
+
label="参考文本",
|
533 |
+
lines=2,
|
534 |
+
placeholder="请输入与参考音频内容完全匹配的文本...",
|
535 |
+
value=default_text1
|
536 |
+
)
|
537 |
+
except Exception as e:
|
538 |
+
print(f"⚠️ 无法预设说话者1默认内容: {e}")
|
539 |
+
speaker1_audio = gr.Audio(
|
540 |
+
label="参考音频",
|
541 |
+
type="filepath"
|
542 |
+
)
|
543 |
+
speaker1_text = gr.TextArea(
|
544 |
+
label="参考文本",
|
545 |
+
lines=2,
|
546 |
+
placeholder="请输入与参考音频内容完全匹配的文本..."
|
547 |
+
)
|
548 |
with gr.Group():
|
549 |
gr.Markdown("### 🎵 说话者2 (男声)")
|
550 |
+
# 尝试预设默认音频
|
551 |
+
try:
|
552 |
+
default_audio2 = DEFAULT_AUDIO_CONFIG["speaker2"]["audio"]
|
553 |
+
default_text2 = DEFAULT_AUDIO_CONFIG["speaker2"]["text"]
|
554 |
+
if os.path.exists(default_audio2):
|
555 |
+
speaker2_audio = gr.Audio(
|
556 |
+
label="参考音频",
|
557 |
+
type="filepath",
|
558 |
+
value=default_audio2
|
559 |
+
)
|
560 |
+
else:
|
561 |
+
speaker2_audio = gr.Audio(
|
562 |
+
label="参考音频",
|
563 |
+
type="filepath"
|
564 |
+
)
|
565 |
+
speaker2_text = gr.TextArea(
|
566 |
+
label="参考文本",
|
567 |
+
lines=2,
|
568 |
+
placeholder="请输入与参考音频内容完全匹配的文本...",
|
569 |
+
value=default_text2
|
570 |
+
)
|
571 |
+
except Exception as e:
|
572 |
+
print(f"⚠️ 无法预设说话者2默认内容: {e}")
|
573 |
+
speaker2_audio = gr.Audio(
|
574 |
+
label="参考音频",
|
575 |
+
type="filepath"
|
576 |
+
)
|
577 |
+
speaker2_text = gr.TextArea(
|
578 |
+
label="参考文本",
|
579 |
+
lines=2,
|
580 |
+
placeholder="请输入与参考音频内容完全匹配的文本..."
|
581 |
+
)
|
582 |
|
583 |
with gr.Group():
|
584 |
gr.Markdown("### ⚙️ 设置")
|
|
|
692 |
gr.Error(f"❌ 加载默认音频时出错: {str(e)}")
|
693 |
return gr.update(), gr.update(), gr.update(), gr.update(), gr.update()
|
694 |
|
695 |
+
# 组件已在初始化时设置默认值,无需额外的加载事件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
696 |
|
697 |
btn_load_scenario.click(
|
698 |
fn=on_load_scenario,
|