Indian Languages

Configure voice agents for Indian languages including Hindi, Tamil, Telugu, Bengali, and more with optimal provider combinations.

3 min read

Comprehensive guide to configuring voice agents for Indian languages with the best provider combinations for each language.

Supported Languages#

Language Code STT TTS LLM
Hindi hi-IN Deepgram, Google Azure, Google Gemini
Tamil ta-IN Deepgram, Google Azure, Google Gemini
Telugu te-IN Google, ElevenLabs Azure Gemini
Bengali bn-IN Deepgram, Google Azure, Google Gemini
Marathi mr-IN Google Azure Gemini
Gujarati gu-IN Google Azure, Google Gemini
Kannada kn-IN Google Azure, Google Gemini
Malayalam ml-IN Google Azure, Google Gemini
Punjabi pa-IN Google Azure Gemini
Assamese as-IN ElevenLabs, Google Azure Gemini
Odia or-IN ElevenLabs Azure Gemini

Provider Recommendations#

Hindi (hi-IN)#

{
  "agent": {
    "language": "hi-IN",
    "sttProvider": "deepgram",
    "sttModel": "nova-3",
    "sttConfig": {
      "language": "hi",
      "model": "nova-3"
    },
    "ttsProvider": "azure",
    "ttsVoice": "hi-IN-SwaraNeural",
    "llmProvider": "gemini-2.5",
    "llmModel": "gemini-2.5-flash-lite"
  }
}

Azure Hindi Voices:

Voice Gender Style
hi-IN-SwaraNeural Female Professional
hi-IN-MadhurNeural Male Professional
hi-IN-AnanyaNeural Female Conversational

Tamil (ta-IN)#

{
  "agent": {
    "language": "ta-IN",
    "sttProvider": "deepgram",
    "sttModel": "nova-3",
    "sttConfig": {
      "language": "ta"
    },
    "ttsProvider": "azure",
    "ttsVoice": "ta-IN-PallaviNeural",
    "llmProvider": "gemini",
    "llmModel": "gemini-2.0-flash"
  }
}

Azure Tamil Voices:

Voice Gender Style
ta-IN-PallaviNeural Female Professional
ta-IN-ValluvarNeural Male Professional

Telugu (te-IN)#

{
  "agent": {
    "language": "te-IN",
    "sttProvider": "google",
    "sttModel": "chirp_2",
    "sttConfig": {
      "languageCode": "te-IN"
    },
    "ttsProvider": "azure",
    "ttsVoice": "te-IN-ShrutiNeural",
    "llmProvider": "gemini",
    "llmModel": "gemini-2.0-flash"
  }
}

Bengali (bn-IN)#

{
  "agent": {
    "language": "bn-IN",
    "sttProvider": "deepgram",
    "sttModel": "nova-3",
    "sttConfig": {
      "language": "bn"
    },
    "ttsProvider": "azure",
    "ttsVoice": "bn-IN-TanishaaNeural",
    "llmProvider": "gemini",
    "llmModel": "gemini-2.0-flash"
  }
}

Assamese (as-IN)#

{
  "agent": {
    "language": "as-IN",
    "sttProvider": "elevenlabs",
    "sttModel": "scribe",
    "sttConfig": {
      "language": "as"
    },
    "ttsProvider": "azure",
    "ttsVoice": "as-IN-YashicaNeural",
    "llmProvider": "gemini",
    "llmModel": "gemini-2.0-flash"
  }
}

Azure Assamese Voices:

Voice Gender
as-IN-YashicaNeural Female
as-IN-PriyomNeural Male

Provider Details#

STT Providers for Indian Languages#

Deepgram Nova-3#

Best for: Hindi, Tamil, Bengali, Marathi

sttConfig := DeepgramConfig{
    Model:    "nova-3",
    Language: "hi", // or ta, bn, mr
    Features: DeepgramFeatures{
        Punctuate:   true,
        Endpointing: 300,
    },
}

Accuracy by Language:

Language WER (Word Error Rate)
Hindi 8-12%
Tamil 10-15%
Bengali 10-15%

Google Chirp 2#

Best for: All Indian languages, especially regional

sttConfig := GoogleConfig{
    Model:        "chirp_2",
    LanguageCode: "hi-IN",
    SpeechAdaptation: &SpeechAdaptation{
        PhraseSets: []PhraseSet{
            {Phrases: []string{"namaste", "dhanyavaad"}},
        },
    },
}

ElevenLabs Scribe#

Best for: Assamese, Odia, and low-resource languages

sttConfig := ElevenLabsConfig{
    Model:    "scribe",
    Language: "as", // Assamese
}

TTS Providers for Indian Languages#

Azure Neural TTS#

Best quality for most Indian languages:

var AzureIndicVoices = map[string][]string{
    "hi-IN": {"hi-IN-SwaraNeural", "hi-IN-MadhurNeural"},
    "ta-IN": {"ta-IN-PallaviNeural", "ta-IN-ValluvarNeural"},
    "te-IN": {"te-IN-ShrutiNeural", "te-IN-MohanNeural"},
    "bn-IN": {"bn-IN-TanishaaNeural", "bn-IN-BashkarNeural"},
    "mr-IN": {"mr-IN-AarohiNeural", "mr-IN-ManoharNeural"},
    "gu-IN": {"gu-IN-DhwaniNeural", "gu-IN-NiranjanNeural"},
    "kn-IN": {"kn-IN-SapnaNeural", "kn-IN-GaganNeural"},
    "ml-IN": {"ml-IN-SobhanaNeural", "ml-IN-MidhunNeural"},
    "as-IN": {"as-IN-YashicaNeural", "as-IN-PriyomNeural"},
}

Google Cloud TTS#

Good for neural voices:

var GoogleIndicVoices = map[string]string{
    "hi-IN": "hi-IN-Neural2-A",
    "ta-IN": "ta-IN-Neural2-A",
    "bn-IN": "bn-IN-Neural2-A",
    "gu-IN": "gu-IN-Neural2-A",
    "kn-IN": "kn-IN-Neural2-A",
    "ml-IN": "ml-IN-Neural2-A",
}

LLM Providers#

Gemini 2.0 Flash#

Best for Indian languages with excellent Hindi understanding:

llmConfig := GeminiConfig{
    Model:       "gemini-2.0-flash",
    Temperature: 0.7,
    SystemPrompt: `You are a helpful assistant that speaks Hindi.
आप एक सहायक हैं जो हिंदी में बात करते हैं।
Keep responses natural and conversational.`,
}

Multilingual Agents#

Hindi-English Code-Switching#

{
  "agent": {
    "name": "Hinglish Support",
    "language": "hi-IN",
    "prompt": "You are a customer support agent. Respond in Hinglish (mix of Hindi and English) as commonly spoken. Example: 'Aapka order ship ho gaya hai, delivery by Friday expected hai.'",
    "sttConfig": {
      "language": "hi",
      "model": "nova-3"
    },
    "ttsProvider": "azure",
    "ttsVoice": "hi-IN-SwaraNeural"
  }
}

The STT and TTS providers stay the same for the whole call; bilingual and Hinglish modes are handled by the prompt and a multilingual STT model.

Script Support#

Devanagari (Hindi, Marathi, Sanskrit)#

func IsDevanagari(text string) bool {
    for _, r := range text {
        if r >= 0x0900 && r <= 0x097F {
            return true
        }
    }
    return false
}

Tamil Script#

func IsTamil(text string) bool {
    for _, r := range text {
        if r >= 0x0B80 && r <= 0x0BFF {
            return true
        }
    }
    return false
}

Cost Optimization#

Provider Cost Comparison (per minute)#

Provider Hindi Tamil Assamese
Deepgram ₹0.35 ₹0.35 N/A
Google Chirp ₹1.34 ₹1.34 ₹1.34
ElevenLabs Scribe ₹0.56 ₹0.56 ₹0.56
Azure TTS ₹1.01 ₹1.01 ₹1.01

Budget-Optimized:

{
  "sttProvider": "deepgram",
  "ttsProvider": "google",
  "llmProvider": "gemini-2.5"
}

Quality-Optimized:

{
  "sttProvider": "google",
  "sttModel": "chirp_2",
  "ttsProvider": "azure",
  "llmProvider": "gemini"
}

Best Practices#

1. Use Regional Dialects#

// Configure for regional variations
dialects := map[string]string{
    "hindi_standard": "hi-IN",
    "hindi_western":  "hi-IN", // Same code, different prompting
    "tamil_formal":   "ta-IN",
}

2. Handle Transliteration#

// Users may type in Roman script
prompt := `Users may write Hindi in Roman script (e.g., "mujhe order status chahiye").
Understand both Devanagari and Roman transliterations.
Always respond in Devanagari script.`

3. Respect Cultural Context#

prompt := `Cultural guidelines:
- Use appropriate honorifics (aap vs tum)
- Be aware of regional festivals and holidays
- Use formal language for business contexts
- Add greetings like Namaste appropriately`

Next Steps#

  • Hindi - Detailed Hindi setup
  • Tamil - Detailed Tamil setup
  • Assamese - Detailed Assamese setup
Was this page helpful?