|
import gradio as gr |
|
|
|
|
|
state = {"question": "", "recordings": [], "comments": []} |
|
|
|
|
|
def teacher_question(question): |
|
state["question"] = question |
|
return question |
|
|
|
|
|
def record_student_voice(voice): |
|
if state["question"]: |
|
state["recordings"].append(voice) |
|
return f"Voice recorded successfully for question: {state['question']}" |
|
else: |
|
return "Please submit a question first." |
|
|
|
|
|
def write_comment(comment): |
|
if state["question"]: |
|
state["comments"].append(comment) |
|
return f"Comment added successfully for question: {state['question']}" |
|
else: |
|
return "Please submit a question first." |
|
|
|
|
|
with gr.Blocks() as demo: |
|
with gr.Tab("Teacher's Question"): |
|
question_input = gr.Textbox(lines=2, placeholder="Enter your question here...", label="Teacher's Question") |
|
submit_question = gr.Button("Submit") |
|
output_question = gr.Textbox(label="Question", interactive=False) |
|
submit_question.click(fn=teacher_question, inputs=question_input, outputs=output_question) |
|
|
|
with gr.Tab("Record Voice"): |
|
question_display = gr.Markdown(value="Question will appear here after submission") |
|
voice_input = gr.Audio(type="numpy", label="Record your voice") |
|
submit_voice = gr.Button("Submit Voice") |
|
output_voice = gr.Textbox(label="Status") |
|
submit_voice.click(fn=record_student_voice, inputs=voice_input, outputs=output_voice) |
|
|
|
with gr.Tab("Write Comment"): |
|
comment_display = gr.Markdown(value="Question will appear here after submission") |
|
comment_input = gr.Textbox(placeholder="Your comment", label="Comment") |
|
submit_comment = gr.Button("Submit Comment") |
|
output_comment = gr.Textbox(label="Status") |
|
submit_comment.click(fn=write_comment, inputs=comment_input, outputs=output_comment) |
|
|
|
|
|
def update_question_display(): |
|
return state["question"] |
|
|
|
|
|
demo.load(fn=update_question_display, outputs=[output_question, question_display, comment_display]) |
|
submit_question.click(fn=update_question_display, outputs=[output_question, question_display, comment_display]) |
|
|
|
demo.launch() |
|
|