Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import gradio as gr | |
| from gtts import gTTS | |
| import tempfile | |
| import os | |
| # Step 1: Read the CSV file | |
| csv_url = "https://raw.githubusercontent.com/MK316/241214/refs/heads/main/data/plural_sample.csv" | |
| df = pd.read_csv(csv_url) | |
| # Initialize state | |
| state = {"index": 0, "completed": False} | |
| # Function to generate text and audio for the current noun | |
| def generate_practice(): | |
| if state["completed"]: | |
| return "You've completed the practice.", None | |
| # Get the current noun data | |
| current_noun = df.iloc[state["index"]] | |
| noun_text = ( | |
| f"Repeat after me: the plural form of {current_noun['Singular']} is {current_noun['Plural']}." | |
| ) | |
| # Generate audio using gTTS | |
| tts = gTTS(noun_text) | |
| temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") | |
| tts.save(temp_file.name) | |
| return noun_text, temp_file.name | |
| # Function to move to the next noun | |
| def next_noun(): | |
| if state["index"] < len(df) - 1: | |
| state["index"] += 1 | |
| else: | |
| state["completed"] = True | |
| return generate_practice() | |
| # Gradio interface | |
| with gr.Blocks() as app: | |
| gr.Markdown("### Noun Practice") | |
| gr.Markdown("Click **Start** to begin practicing. Repeat after the audio and click **Next** to proceed to the next noun.") | |
| # Start button | |
| start_button = gr.Button("Start") | |
| text_display = gr.Textbox(label="Practice Text", interactive=False) | |
| audio_output = gr.Audio(label="Audio", interactive=False) | |
| # Next button | |
| next_button = gr.Button("Next") | |
| # Button actions | |
| start_button.click(fn=generate_practice, outputs=[text_display, audio_output]) | |
| next_button.click(fn=next_noun, outputs=[text_display, audio_output]) | |
| # Launch the app | |
| app.launch() | |