Hi I am building a telephony outbound voice agent, and I am using sarvam’s STT and TTS models but the voice is feeling very robotic and without expressions.
It’s like I am talking to a machine and also I want to make it multilingual as well, so please guide me on these topics.
Unfortunatly, Sarvam doesn’t support SSML, which would offer more expressiveness. If you want to continue with that TTS provider. I’d suggest a few places to look:
Confirm your model.bulbul:v3 for new agents. v3 also gives you temperatur (default 0.6)
Start at pace=1.0, temperature=0.6, and change one setting at a time.
Shorten what reaches TTS. Long LLM paragraphs get chunked awkwardly and lose natural phrasing. Prompt for short conversational sentences, tune min_buffer_size / max_chunk_length.
Speaker setting.bulbul:v3 has around 30 voices vs. 7 on v2, and there’s real variation in warmth between them.
Check Audio format against your telephony path. Default is 22050 Hz, and the docs say to use speech_sample_rate=8000 only if your SIP provider actually requires narrowband — in which case set output_audio_codec to mulaw or alaw to match. A mismatch that gets resampled downstream will make any voice sound synthetic.
Use dict_id (v3 only) if names, brands, or product terms are getting mispronounced on calls.
For multilingual, set target_language_code explicitly rather than relying on defaults, and pair it with the Sarvam STT plugin. The thing to plan for early: the text you send to TTS has to match both the language and the script, so if your LLM replies in romanized Hinglish while you’re set to hi-IN, output degrades. Decide whether you’re normalizing to Devanagari or staying on en-IN for code-mixed speech, and put that in the system prompt.
If it’s still too flat after all that — you can look at Azure or Google Indic voices, or dropping the pipeline for a realtime speech-to-speech model. Worth trying the tuning first though.
Thanks for the detailed suggestions. I’m already using bulbul:v3 with the Priya speaker, pace = 1.0, and temperature = 0.7, but the voice still feels a bit robotic. I’ll definitely look into the audio format, dict_id, and shortening the text sent to TTS as you suggested. Really appreciate your valuable insights—thanks again!