Indian Languages

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

Indian Languages

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"
  }
}

Multi-Language Detection

type MultiLanguageAgent struct {
    defaultLang string
    detectedLang string
    sttProviders map[string]STTProvider
    ttsProviders map[string]TTSProvider
}

func (a *MultiLanguageAgent) OnTranscript(transcript string) {
    // Detect language from transcript
    lang := detectLanguage(transcript)

    if lang != a.detectedLang {
        a.switchLanguage(lang)
    }
}

func (a *MultiLanguageAgent) switchLanguage(lang string) {
    a.detectedLang = lang
    a.stt = a.sttProviders[lang]
    a.tts = a.ttsProviders[lang]

    // Inform LLM of language switch
    a.llm.AddContext(fmt.Sprintf("User switched to %s. Respond in %s.", lang, lang))
}

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