import gradio as gr import whisper # Load the Whisper model model = whisper.load_model("base") # Define the waiter prompt in Korean. prompt_text = """ 안녕하세요, 손님! 오늘 저희 레스토랑에 방문해 주셔서 감사합니다. 저는 여러분의 웨이터입니다. 메뉴를 보시고 주문하실 음식을 결정해 주세요. 예시: "불고기와 콩나물국, 그리고 식혜 하나 부탁드립니다." 준비되셨다면, 아래의 녹음 버튼을 눌러 주문 내용을 말씀해 주세요. """ def process_audio(audio_file): if audio_file is None: return "오디오 파일이 없습니다. 다시 시도해 주세요." result = model.transcribe(audio_file, language='ko') transcription = result["text"].strip() return transcription def evaluate_transcription(transcription): if transcription is None or transcription.strip() == "": return "입력된 내용이 없습니다." # Simulated GPT evaluation response. dummy_response = ( "GPT 평가 결과:\n" "주문 내용이 전반적으로 명확합니다. " "더 구체적인 요청이나 추가 정보가 있으면 좋겠지만, 현재 주문은 잘 전달된 것 같습니다." ) return dummy_response with gr.Blocks() as demo: gr.Markdown("## 한국어 주문 녹음 앱") # Embed the animated GIF for the waiter animation. gr.Image(value="https://s13.gifyu.com/images/b2NQh.gif", label="웨이터 안내 애니메이션") gr.Markdown(prompt_text) # Audio input (without source parameter) audio_input = gr.Audio(type="filepath", label="녹음: 주문 내용을 말씀해 주세요") # Transcription output transcription_output = gr.Textbox(label="주문 녹취 결과", placeholder="여기에 전사 결과가 나타납니다.") # Evaluation output (simulated GPT feedback) evaluation_output = gr.Textbox(label="GPT 평가 결과", placeholder="여기에 평가 결과가 나타납니다.") # Buttons submit_btn = gr.Button("전송") evaluate_btn = gr.Button("평가") # When clicking "전송", process the audio and display the transcription. submit_btn.click(process_audio, inputs=audio_input, outputs=transcription_output) # When clicking "평가", simulate GPT's evaluation. evaluate_btn.click(evaluate_transcription, inputs=transcription_output, outputs=evaluation_output) demo.launch()