| 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") |
| gr.Markdown("See the image, hear the pronunciation, and learn!") |
|
|
| 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() |
|
|