Local DE Coach v0.1.0 — Initial Release
🎯 Initial release of Local DE Coach
A local, offline German pronunciation coach for Goethe Institut and ÖSD exam preparation. Runs on Arch Linux with a hard 2 GB RAM ceiling on an Intel i5-1135G7 + 8 GB RAM laptop.
✨ What's included
Backend (Python + FastAPI)
POST /api/score— score recorded audio against target textPOST /api/live— SSE streaming live transcriptionGET /api/progress— weekly trend, top errors, level readinessGET /api/srs/queue+POST /api/srs/review— SM-2 spaced repetitionGET /api/status— RAM/health monitorPOST /api/warmup+POST /api/unload— model lifecycle controls- Wav2Vec2 DE base (~360 MB) + Whisper tiny int8 (~150 MB) with strict single-model-at-a-time swap
- 5-layer adaptive scorer (Levenshtein → word diff → suffix → umlaut → phonetic) tuned to A1–C1
- SQLite WAL persistence with sessions, word_errors, srs_queue tables
Frontend (SvelteKit + Tailwind)
- 8 routes: Dashboard, Practice (Text Reading), Shadowing (YouTube), Live, Progress, SRS Trainer, Settings, System
- Typed API client with SSE streaming support
- AudioRecorder + ScoreDisplay reusable components
- System status polling every 5s with green/yellow/red health indicator
Arch Linux packaging
install.sh— pacman deps + CPU-only torch wheel + npm build + systemd installsystemd/local-de-coach.service— user service withMemoryMax=2.5GcapPKGBUILDfor AUR- Full README with quick start, API reference, RAM budget table
📊 RAM budget
| State | Resident RAM |
|---|---|
| Cold (idle) | ~190 MB |
| Scoring (Wav2Vec2) | ~910 MB |
| Live (Whisper) | ~700 MB |
| Hard ceiling | 2,000 MB |
Auto-unload triggers at 1.8 GB → returns HTTP 503 with Retry-After: 5.
🚀 Quick start
git clone https://github.com/bif26/Local_DE_Coach.git
cd Local_DE_Coach
./install.sh
systemctl --user enable --now local-de-coach.service
# Open http://localhost:5173📚 Documentation
docs/architecture.pdf— full 33-page engineering specificationREADME.md— quick start + API reference- Interactive API docs at
http://127.0.0.1:8765/docsonce running
⚠️ Known limitations
- First
/api/scorecall downloads Wav2Vec2 (~360 MB, ~6s load) - Arch Linux only for now (pacman + systemd). Debian/Ubuntu port planned for v0.2.
- The C1 phonetic layer (vowel length, aspiration) uses heuristics only — fine-tuning requires labeled audio.
🔒 Security note
If you fork this repo, never commit GitHub Personal Access Tokens. Use environment variables or git credential-cache instead. The .gitignore already excludes model weights and caches.
Full changelog: see git log v0.1.0
Built with ❤️ for German learners everywhere.