Afrikaans AAC communication app for post-stroke aphasia — offline PWA with pre-generated TTS audio
# Afrikaans AAC for Post-Stroke Aphasia
A custom Augmentative and Alternative Communication (AAC) tool built for a specific user: an Afrikaans-speaking man who lost his speech following a stroke. Comprehension is intact; he can read and use a touchscreen with large targets.
No commercial AAC app supports Afrikaans with sufficient TTS quality for a real user. This is a Progressive Web App (PWA) with pre-generated audio (Microsoft Edge TTS, `af-ZA-WillemNeural`) that runs fully offline on an Android tablet. It requires no app store, no account, and no internet connection. Phrases are maintained remotely over SSH by a family member.
The app is deployed and in active daily use. **v1 deployed 2026-04-03.**
---
## The user
| Property | Detail |
| --- | --- |
| Condition | Post-stroke expressive aphasia — no speech output; comprehension intact |
| Reading | Yes (word search puzzles) |
| Motor | Limited but functional fine motor; large touch targets required |
| Device | AWOW UTBook\_15, Android 15, 10-inch tablet |
| Setting | Home care; primary caregiver is spouse (Mom) |
| Language | Afrikaans |
---
## App architecture
```text
PWA (static HTML/JS/CSS — no framework, no build step)
├── src/
│ ├── index.html — single-file app (category grid → phrase grid)
│ ├── phrases.json — phrase bank (8 categories, 78 pre-generated phrases)
│ ├── manifest.json — PWA manifest ("Pa se App", fullscreen, landscape)
│ ├── generate_audio.py — Edge TTS audio generation script
│ └── audio/ — pre-generated MP3s (af-ZA-WillemNeural)
│
Deployment: Termux HTTP server (port 8080) on tablet → Chrome/Fully Kiosk Browser
Maintenance: SSH from Mac → edit phrases.json + run generate_audio.py → rsync
```
Always-visible bar: blue "Roep vir Francisca" + red "NOODGEVAL" (boosted volume).
Navigation: home (3×3 category grid) → phrase screen (3×4 grid + nav column). Max 2 taps to any phrase.
### Regenerate audio
```bash
conda activate afrikaans-aac
cd src …