Case study · Android Developer
iTantra
offline voice messaging over narrow links
Built for Smart India Hackathon problem statement 26173 from ISRO. Speech is recognised on the phone, sent as a ~75-byte packet instead of a ~7,500-byte voice note, and spoken again on the other side. Fully offline, English and Tamil, 226 unit tests.
The problem
ISRO's Smart India Hackathon problem statement 26173: carry voice between people, fully offline, over links too narrow to carry audio. A compressed voice note is around 7,500 bytes, which is the difference between a message that arrives and one that does not.
Decisions that shaped it
- 1
Send meaning, not sound. Speech is recognised on the device, encoded into a packet of about 75 bytes (roughly 60 times smaller than a compressed voice note) and synthesised back into a voice on the receiving phone. Neither person ever sees text.
- 2
Freeze the wire format first. The packet format was fixed and verified on real devices before anything was built on top of it, then delivery over Bluetooth was proven between two different phones.
- 3
Languages are data, not code. A language pack declares which recogniser it needs and the app picks the engine, so Tamil was added to a running install with no rebuild. Nothing in the Kotlin code names Tamil.
- 4
Measure the model instead of assuming. On the same Tamil test sentence, multilingual Whisper scored about 100% word error rate and AI4Bharat's IndicConformer scored 0%, so Tamil recognition uses IndicConformer.
Built with
- Kotlin
- Android
- Bluetooth / BLE
- On-device speech recognition
- Text-to-speech
- Python