Anuvani-LID: Robust and Calibrated Spoken Language Identification for Indian Languages
Organizations: Central Institute of Indian Languages
Abstract
Every multilingual speech pipeline begins with a language decision, an error there propagates silently through recognition, translation and routing. In India it spans 22 scheduled languages across four language families, heard over short, noisy, narrowband and code-mixed audio. Foundational speech models increasingly present language identification (LID) as an inherent latent, generalized capability. Autoregressive decoders in speech models emit a special language ID token, and modern LLMs with audio capabilities can name the language when prompted. We test this assumption on identical clips and find that whisper and similar speech models has tokens for only 15 of the 23 languages, on one second inputs Gemini 3.5 Flash reaches 0.52 macro-F1 and GPT-audio 0.14. We present Anuvani LID, a dedicated 115M parameter LID conformer model trained on 54,643 hours of Indian speech spanning 22 Indian languages and Indian accented English. Along with designed and controlled studies on 102 condition benchmark with speaker and corpus held out tests. Across 37 conditions, it reaches 0.914 mean macro-F1, 5.2 points above Gemini 3.5 Flash and ahead of 14 other systems. It is 24 points ahead of Gemini at one second, scores 0.897 on all 23 languages where no other system exceeds 0.713, and is calibrated to an ECE of 0.008. Reliable Indian LID still requires a robust, dedicated and calibrated model.
Figures & tables
| Language | Family: subgroup | Script(s) | L1 | Train | F1 | T | Language | Family: subgroup | Script(s) | L1 | Train | F1 | T |
| Hindi | IA: Hindustani | Devanagari | 528.3 | 8,121 | .843 | Konkani 92 | IA: Southern | Devanagari, Latin | 2.3 | 375 | .918 | ||
| Urdu | IA: Hindustani | Arabic | 50.8 | 691 | .925 | Gujarati | IA: Guj.–Rajasthani | Gujarati | 55.5 | 1,500 | .948 | ||
| Punjabi | IA: Northwestern | Gurmukhi | 33.1 | 1,339 | .973 | T | Sanskrit | IA: Old Indo-Aryan | Devanagari | 0.02 | 828 | .962 | |
| Dogri 04 | IA: W. Pahari | Devanagari | 2.6 | 478 | .977 | T | Tamil | Dravidian: South I | Tamil | 69.0 | 3,560 | .974 | |
| Kashmiri | IA: Dardic | Arabic, Deva. | 6.8 | 369 | .953 | Malayalam | Dravidian: South I | Malayalam | 34.8 | 1,544 | .965 | ||
| Sindhi 67 | IA: Northwestern | Arabic, Deva. | 2.8 | 390 | .903 | Kannada | Dravidian: South I | Kannada | 43.7 | 3,287 | .975 |
| Altered | |||||
| Operation | Setting | % | M | k h | |
| Speed | 0.95–1.05 | 0.5 | 40.0 | 24.5 | 41.0 |
| Noise | 0–15 dB | 0.5 | 50.0 | 30.6 | 51.2 |
| Reverberation | 60k RIRs | 0.3 | 30.0 | 18.4 | 30.7 |
| Duration crop | 0.25–16 s | 0.5 | 44.9 | 27.5 | 49.6 |
| Babble | 5–18 dB | 0.2 | 20.0 | 12.2 | 20.5 |
| Core-37 | All-23 | Gap | |||
| System | Lang. | F1 | F1 | [95% CI] | W/L |
| Anuvani-LID | 23 | .914 | .897 | — | — |
| matched | 10 | .923 | .897 | ||
| Gemini 3.5 Flash | 23 | .863 | .710 | 5.2 [4.8, 5.5] | 21/9 |
| Sarvam Saaras | 23 | .847 | .346 | 6.8 [6.5, 7.1] | 26/5 |
| GPT-audio | 23 | .735 | .384 | 18.0 [17.5, 18.4] | 34/2 |
Appendix figures & tables5 assets
Supplementary material from the paper’s appendix.
Appendix
| Source tier | Held out by | Lang. | Cond. | Utts |
| IndicVoices, all-23 test | speaker (0/1,308) | 23 | 12 | 78.6k |
| IndicVoices, cross-corpus | speaker | 21 | 13 | 40.2k |
| FLEURS | split | 13 | 16 | 41.4k |
| Kathbath | split | 12 | 16 | 41.8k |
| Common Voice | split | 8 | 12 | 16.1k |
| MUCS | split | 6 | 12 | 14.0k |
| Stage | Data (classes) | Arms | Decision carried forward |
| 0 Benchmark | — | — | held-out, multi-axis suite |
| I Head, loss, adaptation | 1k h balanced (20) | 25 | attentive statistics pooling, focal loss, full fine-tuning |
| II Rebalancing | 4k h production skew (23) | 16 | ; a single rebalancer; learned layer mix |
| III Augmentation | 4k h production skew (23) | 8 | duration crops, noise, RIR, codec, babble |
| IV Curriculum | 4k h production skew (23) | 5 | confusability ramp of the 15 Indo-Aryan languages |
| V Optimisation | 4k h proxy (23) | 15 | peak LR ; with floors |
| Setting | Value |
| Front-end | 80-d log-Mel, 25 ms window, 10 ms hop; 4 convolutional subsampling |
| Encoder | MahaDhwani Conformer-L, 17 blocks, , 8 heads, kernel 31, rel. pos.; dropout 0.1 |
| Layer mix | learned over all 17 blocks |
| Pooling / embed / classes | ASP (1,024-d) 256-d 23-way |
| Loss | focal , label smoothing |
| Sampling | , ; EN floor 16%, HI floor 11%; competence curriculum over 17 sub-epochs raising the weight of the 15 Indo-Aryan languages from 0.45 to 1 after a plain-mix first sub-epoch |
| System | Identifier / snapshot | Notes |
| Gemini 3.5 Flash | google/gemini-3.5-flash | OpenRouter; card dated 19 May 2026 |
| GPT-audio | openai/gpt-audio | OpenRouter; family snapshot 2025-08-28 |
| GPT-audio-mini | openai/gpt-audio-mini | OpenRouter; snapshots 2025-10-06 / 2025-12-15 |
| Azure Speech LID | Azure AI Speech LID | at most 10 candidates; 11 of 23 locales |
| Sarvam Saaras v3 | saaras:v3 | auto-detect; 22 scheduled + en-IN |
| MMS-LID family | facebook/mms-lid-* | 126, 256, 512, 1024, 2048, 4017 |
| Domain | Condition | Anuvani-LID | matched | Gemini | Sarvam | GPT-aud. | GPT-mini | Azure | |
| Clean read | FLEURS | 1,500 | .961 | .963 | .977 | .864 | .932 | .845 | .773 |
| Kathbath | 1,500 | .987 | .987 | .963 | .864 | .917 | .840 | .795 | |
| Common Voice | 969 | .921 | .920 | .921 | .804 | .828 | .741 | .729 | |
| IndicTTS (studio) | 800 | .978 | .979 | .988 | .998 | .943 | .923 | .777 | |
| SPRING-INX | 1,200 | .953 | .955 | .865 | .956 | .700 | .622 | .686 | |
| Production mix | 1,500 | .979 | .981 | .923 | .860 | .842 | .746 | .818 |
Language Identification
Language identification determines which language or languages appear in text or speech, including dialects, code-switching, and low-resource varieties.
See all 26 papers