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) }