Voice-Pronunciation Checker Api for Ibibio -- Etimbuk by Usem AI
SayIt
Real-time pronunciation engine for Efik and Ibibio.
The ASR backbone of Etimbuk by Usem AI.
---
## The problem
Google, Azure, and AWS have speech recognition for dozens of languages. Efik and Ibibio — the 4th most spoken language group in Nigeria, with over 15 million speakers across West Africa, the UK, the US, and Canada — are not among them. There is no off-the-shelf solution. There is no fallback.
Etimbuk is a language learning platform built to keep Efik and Ibibio alive for the next generation of speakers. For it to work, learners need to hear a word, say it, and know immediately whether they got it right. That feedback loop is SayIt.
---
## What it does
A learner inside Etimbuk sees a phrase on screen. They tap the microphone and speak. SayIt:
- Accepts audio in any format the browser produces (WebM, MP4, OGG, WAV)
- Converts it to 16 kHz mono and runs it through a TensorRT-LLM–accelerated Whisper model
- Scores the result character-by-character against the expected phrase
- Returns word-level feedback — each word marked correct or incorrect, with what was actually heard
All of this happens in under a second, for up to 300 learners at once.
---
## How it's built
Everything is in `say_it.py` — one file, deployed to Modal.
```
Browser (Etimbuk)
│
▼
api() lightweight router, no GPU
· validates input fails fast with clean 4xx errors
· assigns request ID for session tracking in Etimbuk
│
▼
SayIt A100-80GB · TRT-LLM Whisper
· 20 containers 320 parallel slots total
· single drain loop no race conditions under concurrent load
· 300s warm window stays hot between learner sessions
· 120s hard timeout never hangs, always returns
```
The scoring algorithm is character-level, not word-level. This matters for Efik and Ibibio because ASR models trained on limited data sometimes merge or split words differently than written form. Character-level matching absorbs tha …