| | import os |
| | import random |
| | import gradio as gr |
| | from gtts import gTTS |
| | import tempfile |
| |
|
| | |
| | IMAGE_FOLDER = "IMAGES/" |
| |
|
| | |
| | letter_words = { |
| | "A": "Apple", "B": "Bat", "C": "Cat", "D": "Duck", "E": "Eyes", "F": "Fish" |
| | } |
| |
|
| | |
| | alphabet_data = {f.split(".")[0].upper(): os.path.join(IMAGE_FOLDER, f) |
| | for f in os.listdir(IMAGE_FOLDER) if f.endswith(('.png', '.jpg', '.jpeg'))} |
| |
|
| | |
| | def get_random_image(): |
| | letter = random.choice(list(alphabet_data.keys())) |
| | image_path = alphabet_data[letter] |
| | word = letter_words.get(letter, "Unknown") |
| | |
| | |
| | sentence = f"{letter} for {word}" |
| | tts = gTTS(sentence, lang="en") |
| | |
| | |
| | temp_audio = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") |
| | tts.save(temp_audio.name) |
| | |
| | return image_path, sentence, temp_audio.name |
| |
|
| | |
| | with gr.Blocks() as demo: |
| | gr.Markdown("# 🔤 Alphabet Learning Game with Audio") |
| |
|
| |
|
| | img_display = gr.Image() |
| | text_display = gr.Textbox(label="What you hear") |
| | audio_output = gr.Audio() |
| |
|
| | next_btn = gr.Button("Next Letter") |
| |
|
| | next_btn.click(get_random_image, inputs=[], outputs=[img_display, text_display, audio_output]) |
| |
|
| | demo.launch() |
| |
|