|
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" |
|
} |
|
|
|
|
|
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() |
|
|