A state-of-the-art gesture typing (Swipe-to-Type) app tailored for Indian languages. IndicSwipe combines a deep character-level Transformer gesture decoder with n-gram language models running on-device for fast, accurate, and fluid typing across 22+ Indian languages and romanized dialects (Hinglish, Tanglish, etc.).
IndicSwipe supports 22 scheduled languages of India and their corresponding keyboard layouts, along with their romanized variants. You can download the pre-trained models and dataset packages directly from the table below:
| Language | Script / ISO Code | Accent Color | Transliteration | Swipe Decoding |
|---|---|---|---|---|
| Hindi | __hi__ / हिन्दी |
📥 Download | 📥 Download | |
| Bengali | __bn__ / বাংলা |
📥 Download | 📥 Download | |
| Tamil | __ta__ / தமிழ் |
📥 Download | 📥 Download | |
| Telugu | __te__ / తెలుగు |
📥 Download | 📥 Download | |
| Marathi | __mr__ / मराठी |
📥 Download | 📥 Download | |
| Kannada | __kn__ / ಕನ್ನಡ |
📥 Download | 📥 Download | |
| Gujarati | __gu__ / ગુજરાતી |
📥 Download | 📥 Download | |
| Punjabi | __pa__ / ਪੰਜਾਬੀ |
📥 Download | 📥 Download | |
| Malayalam | __ml__ / മലയാളം |
📥 Download | 📥 Download | |
| Odia | __or__ / ଓଡ଼ିଆ |
📥 Download | 📥 Download | |
| Assamese | __as__ / অসমীয়া |
📥 Download | 📥 Download | |
| Maithili | __mai__ / मैथिली |
📥 Download | 📥 Download | |
| Sanskrit | __sa__ / संस्कृतम् |
📥 Download | 📥 Download | |
| Urdu | __ur__ / اردو |
📥 Download | 📥 Download | |
| Kashmiri | __ks__ / کٲشُر |
📥 Download | 📥 Download | |
| Nepali | __ne__ / नेपाली |
📥 Download | 📥 Download | |
| Sindhi (Arabic) | __sd__ / سنڌي |
📥 Download | 📥 Download | |
| Sindhi (Devanagari) | __sdd__ / सिंधी |
📥 Download | 📥 Download | |
| Konkani | __gom__ / कोंकणी |
📥 Download | 📥 Download | |
| Manipuri | __mni__ / ꯃꯩꯇꯩꯂꯣꯟ |
📥 Download | 📥 Download | |
| Bodo | __brx__ / बड़ो |
📥 Download | 📥 Download | |
| Dogri | __doi__ / डोगरी |
📥 Download | 📥 Download | |
| Santali | __sat__ / ᱥᱟᱱᱛᱟᱲᱤ |
📥 Download | 📥 Download |
The pipeline is split into modular scripts located in the training/ directory.
Generate synthetic swipe trajectory datasets based on keyboard geometry and target lexicons.
python training/01_generate_dataset.py --lang marathi --output training/data/marathi_train.jsonlTrain the CharacterLevelSwipeModel with standard trajectory features (normalized coordinates, velocity, acceleration, nearest key embeddings) and character tokenizer.
python training/02_train_model.py \
--lang marathi \
--train_path training/data/marathi_train.jsonl \
--val_path training/data/marathi_val.jsonl \
--checkpoint_dir checkpoints/marathi/Compile the PyTorch model encoder and decoder to standard ONNX with dynamic shapes.
python training/03_export_onnx.py \
--checkpoint checkpoints/marathi/best_model.pt \
--out_dir android_ready/marathi/Perform ONNX constant folding, dead-node elimination, and sequence fusing.
python training/04_optimize_onnx.py \
--model_dir android_ready/marathi/Quantize the weights to 8-bit integers (INT8) to reduce model size by 4x with negligible accuracy drop.
python training/05_quantize_onnx.py \
--model_dir android_ready/marathi/The Android Keyboard App located in indic_swipe_android_studio_bundle_1 features:
- ONNX Runtime Mobile: Integrated local inference using
ONNXRuntimeto execute the gesture decoder. - KenLM JNI: Custom C++ bindings compiled using NDK (
kenlm-jni) to perform blazing-fast N-Gram language model language scoring on the decoder's beam outputs. - Swipe Trail Renderer: Premium visual physics-based smooth finger trails (
SwipeView.kt).
To run the Android App:
- Open the indic_swipe_android_studio_bundle_1 directory in Android Studio.
- Build the C++ JNI libraries using NDK CMake.
- Place your optimized models (
swipe_model_character_quant.onnxand language files) in theapp/src/main/assetsdirectory. - Build and run on an Android Device/Emulator!
- Srihari S
- Thanmay Jayakumar
- Raj Dabre
We would like to express our gratitude to the following individuals for their support (listed in alphabetical order):
- Deepon Halder
- Kaushal Bhogale
- Krishna Jeena
- Mohammed Safi Ur Rahman Khan
- Pranjal Chitale
- Sidharth Pulipaka
- Tahir Javed
- Vignesh Selvaraj
- IndicSwipe:
- Paper: "Joint Transformer/RNN Architecture for Gesture Typing in Indic Languages" (COLING 2020)
- Repository: AI4Bharat/Indic-Swipe
- Aksharantar:
- Paper: "Aksharantar: Towards Building Open Transliteration Tools for the Next Billion Users" (EMNLP 2023)
- Repository: AI4Bharat/IndicXlit
- Dataset: ai4bharat/Aksharantar on Hugging Face
- CleverKeys:
- Repository: tribixbite/CleverKeys
- Google Keyboard (Gboard) Gesture Typing:
- Paper: "Long Short Term Memory Neural Network for Keyboard Gesture Decoding" (Google Research)
- Link: Google Research Publication PDF
- Google Keyboard Blog:
- Blog Post: "The Machine Intelligence Behind Gboard"
- Link: Google Research Blog
This project is licensed under the MIT License - see the LICENSE file for details.

