Spaces:
Runtime error
Runtime error
| import os | |
| import gradio as gr | |
| from llm import get_llm_feedback | |
| from asr_api import transcribe_with_openrouter | |
| from user_data import load_user_data, save_user_data | |
| from phonetics import analyze_audio_phonetically, extract_phonemes | |
| # Example minimal Gradio app setup: | |
| PRACTICE_EXERCISES = [ | |
| {"title": "Basic Vowels", "text": "The cat sat on the mat."}, | |
| {"title": "R Sound", "text": "The red robin ran around the river."}, | |
| {"title": "TH Sounds", "text": "I think these three things are worth it."}, | |
| {"title": "L vs R", "text": "The light rain falls along the lake."}, | |
| {"title": "V vs W", "text": "We very much want to visit the west village."}, | |
| {"title": "Short Phrases", "text": "Excuse me. Thank you. I'm sorry. Nice to meet you."} | |
| ] | |
| def process_audio(audio, ref_text): | |
| if not audio: | |
| return "No audio recorded", "Please record your pronunciation first." | |
| feedback, transcription = get_llm_feedback(audio, None, ref_text, transcribe_func=transcribe_with_openrouter) | |
| return transcription, feedback | |
| def main(): | |
| with gr.Blocks(title="ESL Pronunciation Coach - Advanced") as demo: | |
| user_id = gr.State("default") | |
| gr.Markdown("# 🗣️ Advanced Pronunciation Coach") | |
| with gr.Tab("Practice"): | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| exercise_dropdown = gr.Dropdown( | |
| choices=[ex["title"] for ex in PRACTICE_EXERCISES], | |
| label="Select Practice Exercise", | |
| value=PRACTICE_EXERCISES[0]["title"] | |
| ) | |
| reference_text = gr.Textbox( | |
| label="Practice Text (Read This Aloud)", | |
| value=PRACTICE_EXERCISES[0]["text"], | |
| lines=2 | |
| ) | |
| def update_reference_text(exercise_title): | |
| for ex in PRACTICE_EXERCISES: | |
| if ex["title"] == exercise_title: | |
| return ex["text"] | |
| return "" | |
| exercise_dropdown.change(update_reference_text, exercise_dropdown, reference_text) | |
| audio_input = gr.Audio(label="Record your pronunciation", type="filepath", format="wav", show_label=True) | |
| submit_btn = gr.Button("Get Feedback", variant="primary") | |
| with gr.Column(scale=3): | |
| transcription_output = gr.Textbox(label="Your Speech (Transcribed)", lines=2) | |
| feedback_output = gr.Textbox(label="Pronunciation Feedback", lines=6) | |
| submit_btn.click( | |
| process_audio, | |
| inputs=[audio_input, reference_text], | |
| outputs=[transcription_output, feedback_output] | |
| ) | |
| demo.launch() | |
| if __name__ == "__main__": | |
| main() | |