--- license: apache-2.0 language: [hi, ta, te, bn, mr, pa, gu, kn, ml] tags: [automatic-speech-recognition, onnx, indicconformer, quantized] --- # IndicConformer per-language ONNX packs (int8, external data) Nine per-language speech-recognition packs for the Indian languages, prepared for on-device use: **131 MB each**, against 622 MB for the 22-language multilingual model they replace. Derived from [AI4Bharat IndicConformer](https://huggingface.co/ai4bharat) via the ONNX exports published by [OpenVoiceOS](https://huggingface.co/OpenVoiceOS). Two changes were applied to each, both necessary to run on ONNX Runtime's CPU provider on a phone: 1. **Re-quantized from QInt8 to QUInt8.** The upstream `model.int8.onnx` fails to create a session with `Could not find an implementation for ConvInteger(10)`: ORT's CPU `ConvInteger` kernel is uint8-only, and a Conformer's pre-encode is convolutional. The fp32 model was quantized here instead. 2. **Initializers moved to an external file.** The single-file build copies its weights into the arena — 202 MiB resident on an iPhone. As mapped external data that is ~30 MiB, because the pages stay clean and file-backed. Each pack is `model.int8.opt.onnx` (graph) + `model.int8.opt.onnx.data` (weights) + `vocab.txt`, plus the filterbank and window the featurizer needs (`mel_filters.json`, `hanning_window.json`), which the upstream exports do not include. ## Shape Single fused graph — the CTC output is already the language's own vocabulary, so no column masking is needed: ``` audio_signal [batch, 80, frames] + length [batch] -> logprobs [batch, frames, vocab] ``` 80 log-mel filters at 16 kHz, subsampling factor 4. `` is the last vocabulary entry. ## Accuracy Measured on one held-out clip per language (61 words total): **80.3% exact word match**, against 86.9% for the 22-language model on the same clips. Smaller and several times faster, for a few points of accuracy. | te | bn | pa | gu | kn | hi | mr | ml | ta | |---|---|---|---|---|---|---|---|---| | 6/6 | 6/6 | 7/9 | 6/7 | 5/6 | 5/7 | 5/7 | 5/7 | 4/6 |