File size: 3,252 Bytes
7f4441c 6974cbe 7f4441c 5e95e64 7f4441c e46bb7f 5e95e64 6974cbe 5e95e64 6974cbe 5e95e64 fc94876 5e95e64 7f4441c 5e95e64 fc94876 5e95e64 6974cbe 5e95e64 7f4441c 17411ab b42c8d1 5e95e64 17411ab 19e1f30 5e95e64 17411ab d2741b1 17411ab 19e1f30 a4454f1 fc94876 17411ab 19e1f30 5e95e64 17411ab d2741b1 19e1f30 17411ab 19e1f30 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 |
import gradio as gr
import os
# μ μ₯λ μμ± νμΌκ³Ό μ½λ©νΈλ₯Ό κ΄λ¦¬νλ λμ
λ리
recordings = {}
comments = {}
# μ μλμ μ§λ¬Έ μ
λ ₯ λ°κΈ°
def teacher_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:
state_question = gr.State("")
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, state_question])
with gr.Tab("Record Voice"):
student_name_input = gr.Textbox(placeholder="Your name", label="Your name")
question_display = gr.Textbox(label="Question", interactive=False)
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, state_question, voice_input], outputs=output_voice)
demo.load(lambda question: gr.update(value=question), inputs=state_question, outputs=question_display)
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)
demo.launch()
|