| title: German Dictation Trainer | |
| emoji: ✍️ | |
| colorFrom: indigo | |
| colorTo: green | |
| sdk: gradio | |
| sdk_version: 6.18.0 | |
| app_file: app.py | |
| pinned: false | |
| # German Dictation Trainer | |
| A mobile-first dictation trainer. Enter the words you want to practice, get a | |
| short German dictation read aloud, write it by hand, then photograph your page | |
| to see a word-level diff against the original. | |
| No models run in this Space — every inference is an HTTP call to a Modal | |
| endpoint. Configure these as **Space secrets**: | |
| | Secret | Points at | | |
| | --- | --- | | |
| | `MODAL_LLM_URL` | LFM2.5 llama-server base URL (OpenAI-compatible chat completions) | | |
| | `MODAL_TTS_URL` | Higgs Audio v3 TTS (`/v1/audio/speech`; base URL also accepted) | | |
| | `MODAL_OCR_URL` | Qwen3-VL llama-server base URL (multimodal chat completions) | | |
| The recognized-text box is shown on purpose: handwriting OCR is imperfect, so | |
| seeing what was read keeps OCR errors distinguishable from your own. | |