How chinhean/natify-app works
Natify is a Streamlit Indonesian-pronunciation coach. A learner selects a difficulty and sentence, listens to reference audio, records an attempt, and receives speech-recognition, phoneme, and acoustic feedback; session counters track attempts and success. The README also describes visual comparison and custom sentence collections. The graph follows the documented workflow and sampled entry, data, and analysis code; some UI-to-analysis wiring and unsampled capabilities are shown only where the app structure or README supports them.
Main entry points: main.py Streamlit app · speech.py Speech recognition · audio.py Recording and playback · feedback.py Feedback display
Components 17
Practice experience
- Streamlit app
app/main.py - Practice settings
app/interface/sidebar.py - Recording and playback
app/interface/audio.py - Feedback display
app/interface/feedback.py
Sentence and audio data
- Sentence catalog
app/data/sentences.py - Cloud data access
app/data/gcs.py - Phoneme guidance
app/data/phonemes.py
Pronunciation analysis
- Audio preparation
app/utils/audio_processing.py - Model loading
app/ml_logic/models.py - Speech recognition
app/ml_logic/speech.py - Phoneme analysis
app/ml_logic/phonemes.py - Acoustic comparison
app/utils/audio_processing.py - Translation utilities
app/utils/translations.py
Session progress
- Practice state
app/utils/session_state.py
Other components
- Learner
- Google Cloud Storage
- Speech recognition service
Connections 18
- Learner → Streamlit app: uses
- Streamlit app → Practice settings: renders
- Streamlit app → Practice state: initializes
- Streamlit app → Cloud data access: loads sentences
- Cloud data access → Google Cloud Storage: reads sentence data
- Streamlit app → Sentence catalog: selects practice
- Streamlit app → Recording and playback: requests recording
- Recording and playback → Audio preparation: prepares audio
- Streamlit app → Speech recognition: recognizes attempt
- Speech recognition → Model loading: loads Whisper
- Speech recognition → Speech recognition service: sends audio
- Streamlit app → Phoneme analysis: compares phonemes
- Phoneme analysis → Model loading: uses wav2vec2
- Streamlit app → Acoustic comparison: compares audio
- Streamlit app → Feedback display: shows results
- Feedback display → Phoneme guidance: reads sound tips
- Streamlit app → Translation utilities: requests translation
- Streamlit app → Practice state: updates progress