Description: Use audio to help users learn basic phrases in a new language. Features: Display text for phrases, add audio playback for pronunciation, and track user progress. Extension: Let users record their own pronunciation for comparison.
To upload files, please first save the app
import streamlit as st
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import Session, declarative_base
Base = declarative_base()
class UserProgress(Base):
__tablename__ = 'user_progress'
id = Column(Integer, primary_key=True)
phrase = Column(String)
user_pronunciation = Column(String)
correctness = Column(Integer)
# Create database engine and tables
engine = create_engine("sqlite:///progress.sqlite")
Base.metadata.create_all(bind=engine)
st.title("Language Learning with Audio")
phrases = {
"Hello": "hello.mp3",
"Thank you": "thank_you.mp3",
"Goodbye": "goodbye.mp3"
}
for phrase, audio_file in phrases.items():
st.write(phrase)
st.audio(audio_file)
# Record user pronunciation
user_audio = st.experimental_audio_input(f"Record your pronunciation for '{phrase}'")
if user_audio:
st.audio(user_audio)
# Here, you might implement a comparison algorithm or logic for correctness
correctness = st.radio("How close was your pronunciation?", [0, 1, 2], format_func=lambda x: {0: 'Not at all', 1: 'Somewhat', 2: 'Very close'}[x])
st.button("Submit", on_click=lambda: save_progress(phrase, user_audio, correctness))
def save_progress(phrase, user_audio, correctness):
with Session(engine) as session:
progress_entry = UserProgress(phrase=phrase, user_pronunciation=user_audio, correctness=correctness)
session.add(progress_entry)
session.commit()
st.success("Your progress has been saved!")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?