File size: 3,306 Bytes
7f4441c 1746c02 7f4441c 1746c02 7f4441c 5e95e64 7f4441c a8345a1 e46bb7f 5e95e64 1746c02 5e95e64 7f4441c 17411ab a8345a1 17411ab 1746c02 0846800 1746c02 17411ab 0846800 17411ab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
import gradio as gr
import os
# μ μ₯λ μμ± νμΌκ³Ό μ½λ©νΈλ₯Ό κ΄λ¦¬νλ λμ
λ리
recordings = {}
comments = {}
# μ μλμ μ§λ¬Έ μ
λ ₯ λ°κΈ°
def teacher_question(question):
global submitted_question
submitted_question = question
return "", question
# νμλ€μ μμ± λ
Ήμ λ° μ μ₯
def record_student_voice(student_name, question, voice):
file_path = f"recordings/{student_name}_{question}.wav"
os.makedirs("recordings", exist_ok=True)
with open(file_path, "wb") as f:
f.write(voice)
if question in recordings:
recordings[question].append(file_path)
else:
recordings[question] = [file_path]
return "Voice recorded successfully!"
# μ μ₯λ μμ± λͺ©λ‘ μ 곡
def get_recorded_list(question):
if question in recordings:
return recordings[question]
else:
return []
# μμ±μ λν μ½λ©νΈ μμ±
def write_comment(question, comment):
if question in comments:
comments[question].append(comment)
else:
comments[question] = [comment]
return f"Comment '{comment}' added successfully for question '{question}'."
# Gradio μΈν°νμ΄μ€ μ μ
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="Submitted Question")
submit_question.click(teacher_question, inputs=question_input, outputs=[output_question])
with gr.Tab("Record Voice"):
question_display = gr.Textbox(label="Question", interactive=False)
student_name_input = gr.Textbox(placeholder="Your name", label="Your name")
voice_input = gr.Audio(type="filepath", label="Record your voice")
submit_voice = gr.Button("Submit Voice")
output_voice = gr.Textbox(label="Status")
submit_voice.click(record_student_voice, inputs=[student_name_input, question_display, voice_input], outputs=output_voice)
with gr.Tab("List Voices"):
question_list_input = gr.Textbox(placeholder="Question", label="Enter question to list recordings")
submit_list = gr.Button("Get Recordings")
recordings_list = gr.Dropdown(label="Select a recording to play")
submit_list.click(get_recorded_list, inputs=question_list_input, outputs=recordings_list)
with gr.Tab("Play Voice"):
recording_select = gr.Dropdown(label="Select a recording to play")
play_audio = gr.Audio(type="filepath", label="Recorded Voice")
recording_select.change(lambda x: x, inputs=recording_select, outputs=play_audio)
with gr.Tab("Write Comment"):
comment_question_input = gr.Textbox(placeholder="Question", label="Question")
comment_input = gr.Textbox(placeholder="Your comment", label="Comment")
submit_comment = gr.Button("Submit Comment")
output_comment = gr.Textbox(label="Status")
submit_comment.click(write_comment, inputs=[comment_question_input, comment_input], outputs=output_comment)
def update_question_display(question):
question_display.value = question
demo.load(update_question_display, inputs=output_question)
demo.launch()
|