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 | Azure | Gemini | |
| Gujarati | gu-IN | Azure, Google | Gemini | |
| Kannada | kn-IN | Azure, Google | Gemini | |
| Malayalam | ml-IN | Azure, Google | Gemini | |
| Punjabi | pa-IN | 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 |
Recommended Configuration by Budget
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`