Learn languages from what you hear. A self-directed language learning app that builds your vocabulary from real content you consume - radio, videos, podcasts, anything.
No courses. No teachers. No fixed curriculum. Just you and real content.
- Capture - Record any Swedish audio playing on your computer
- Transcribe - AI converts speech to text
- Build Vocabulary - Words extracted, frequencies tracked
- Learn - AI-powered flashcards, explanations, and conversation practice
- Progress - Your dictionary grows with what you actually hear
┌─────────────────────────────────────────┐
│ Tauri Desktop App │
│ ┌───────────────────────────────────┐ │
│ │ Svelte + TailwindCSS │ │
│ │ Dashboard │ Vocab │ Learn │ Chat│ │
│ └───────────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────┐ │
│ │ FastAPI Backend │ │
│ │ Whisper │ LM Studio │ Edge-TTS │ │
│ └───────────────────────────────────┘ │
│ ▼ │
│ ┌───────────────────────────────────┐ │
│ │ SQLite DB │ │
│ │ Vocab │ Transcripts │ Progress │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘
- Python 3.11+
- Node.js 18+
- Rust (for Tauri desktop build)
- LM Studio (for AI features)
cd backend
pip install -r requirements.txtcd frontend
npm installcd backend
python app.pyBackend runs on http://localhost:8000
cd frontend
npm run devFrontend runs on http://localhost:5173
cd frontend
npm run tauri devcd backend
python recorder.py- Select audio device (use Stereo Mix or similar for system audio)
- Press Enter to start recording
- Press Enter to stop
- Type 'y' to transcribe immediately
After transcribing:
cd backend
python vocabulary.py build # Extract words from transcripts
python vocabulary.py stats # View statistics
python vocabulary.py top 50 # See most frequent words- Dashboard - Overview of your progress
- Vocabulary - Browse all words, filter by status, get AI explanations
- Learn - Flashcard-style review with TTS pronunciation
- AI Chat - Practice conversation with local LLM
- Recordings - Manage and transcribe audio files
Edit backend/config.py:
WHISPER_MODEL = "small" # tiny/base/small/medium
WHISPER_DEVICE = "cpu" # cpu or cuda
WHISPER_LANGUAGE = "sv" # Language code
LM_STUDIO_BASE_URL = "http://localhost:1234/v1"- Frontend: Svelte, TailwindCSS, TypeScript
- Backend: FastAPI, Python
- Desktop: Tauri (Rust)
- STT: faster-whisper
- TTS: edge-tts (Microsoft voices)
- LLM: LM Studio (local)
- Database: SQLite
MIT