import gradio as gr
from task_manager import get_current_task, select_audio, change_task, tasks
from annotation import save_annotations
def create_ui(init_task, username, annotation_results):
"""创建 Gradio 界面组件"""
init_inst, init_text, init_audioA_data, init_audioA_rate, init_audioB_data, init_audioB_rate, init_prev_dis, init_next_dis, init_task_num = init_task
gr.Markdown('
🎵 音频对比标注平台
')
user_display = gr.Markdown()
instruction = gr.Textbox(label="🎯 指令", value=init_inst, interactive=False)
text_box = gr.Textbox(label="📋 转录文本", value=init_text, interactive=False)
task_number = gr.Markdown(value=f"**任务编号: {init_task_num}**", elem_classes="center")
with gr.Row():
with gr.Column(elem_classes="audio-container"):
audioA = gr.Audio(
label="🔊 音频 A",
value=(init_audioA_rate, init_audioA_data),
interactive=False,
type="numpy"
)
btn_A = gr.Button("✅ 选择音频 A", variant="primary")
with gr.Column(elem_classes="audio-container"):
audioB = gr.Audio(
label="🔊 音频 B",
value=(init_audioB_rate, init_audioB_data),
interactive=False,
type="numpy"
)
btn_B = gr.Button("✅ 选择音频 B", variant="primary")
with gr.Row():
btn_prev = gr.Button("⬅️ 上一题", interactive=not init_prev_dis)
btn_next = gr.Button("➡️ 下一题", interactive=not init_next_dis)
return {
"user_display": user_display,
"instruction": instruction,
"text_box": text_box,
"task_number": task_number,
"audioA": audioA,
"audioB": audioB,
"btn_A": btn_A,
"btn_B": btn_B,
"btn_prev": btn_prev,
"btn_next": btn_next,
"select_audio": select_audio,
"change_task": change_task,
"save_annotations": lambda u, a: save_annotations(u, a, tasks)
}