India is a diverse country with a rich tapestry of languages, making seamless communication across regions a persistent challenge. However, Sarvam’s Bulbul-V2 is helping to bridge this gap with its advanced text-to-speech (TTS) technology. By delivering natural, regionally authentic voices, the model brings local flavor to digital platforms and makes AI more inclusive and accessible for desi people like you and me. As digital content continues to expand, tools like Bulbul-V2 are becoming increasingly vital for developers and content creators. In this article, I will cover Sarvam AI’s explore Bulbul-V2 for TTS.
What is Saravm?
Sarvam is an Indian AI startup based in Bengaluru, founded by a team of machine learning engineers. Recently recognized by the Indian government for its work on Indian large language models (LLMs), Sarvam focuses on developing speech-based AI models tailored to Indian languages. Its goal is to create natural-sounding synthetic voices that capture the nuances of human speech. Unlike conventional TTS systems that often sound robotic and emotionless, Sarvam’s models emphasize expressive delivery, including natural pauses and emotional context.
Exploring Sarvam’s Models
Sarvam provides high-performance speech services with a focus on natural and expressive synthesized voices, optimized for conversational AI. Their flagship model, Bulbul-V2, is a state-of-the-art text-to-speech (TTS) system built specifically for Indic languages. It adapts to various regional languages and speaking styles, understands contextual cues from surrounding text, and delivers speech with appropriate emotional tone and natural prosody. Sarvam offers 4 AI models designed to serve diverse Indian language needs:
- Mayura: A multilingual translation model that supports English and 11 Indian languages with automatic language detection, preserving meaning and context.
- Saras: A speech-to-text model that transcribes audio and translates between Indian languages in a single pipeline.
- Saarika: A high-accuracy text-to-speech model for multiple Indian languages, offering clear and intelligible output.
- Bulbul: The TTS backbone of Sarvam, Bulbul offers human-like prosody, multiple voice personalities, and real-time synthesis tailored for Indian accents and languages.
Also Read: 9 Best Open Source Text-to-Speech (TTS) Engines
What is Special About Bulbul-V2?
Bulbul-V2 is Sarvam’s most advanced TTS model to date, building on the success of its predecessor with several innovative enhancements. It supports 11 Indian languages, delivering native-sounding voices with authentic regional accents. Bulbul-V2 is designed for both speed and cost efficiency. It is well-suited for a wide range of use cases. These range from large-scale applications to smaller deployments. The model offers multiple voice personalities, such as Meera and Arvind. It supports custom voice creation that enables businesses to build distinctive audio branding.
Key Features of Bulbul-V2
- Voice Control: Fine-grained control over pitch (-1 to 1), pace (0.3 to 3), and loudness (0.1 to 3)
- Sample Rate Options: Multiple sample rates: 8kHz, 16kHz, 22.05kHz, 24kHz.
- Text Preprocessing: Smart normalization of numbers, dates, and mixed-language text
- Language Support: Support for 11 Indian languages with BCP-47 codes.
How to Access Bulbul-V2 via API?
To begin it go to the Sarvam website and click on Sign with Google:

Now, once you have signed, it will redirect you to the Dashboard, where you will get free credits worth INR 1000.

Check the ‘Subscription Key’ section to copy your Sarvam’s API Key.
Making the First API Call
1. Installing required libraries
!pip install sarvamai
from sarvamai import SarvamAI
from sarvamai.play import play
import base64
- SarvamAI: Main SDK class used to interact with the Sarvam API.
- paay: A helper function that plays audio in your system.
- base64: Python’s built-in module to decode audio from base64 (API returns audio this way).
2. Initializing the API Client
client = SarvamAI(
api_subscription_key="your_api_key"
)
- Creates a SarvamAI client object.
3. Convert Text-to-speech
response = client.text_to_speech.convert(
inputs=["Welcome to Sarvam AI!"],
model="bulbul:v2",
target_language_code="en-IN",
speaker="anushka",
pitch=0.5, # Range: -1 to 1
pace=1.0, # Range: 0.3 to 3
loudness=1.2, # Range: 0.1 to 3
speech_sample_rate=8000, # Options: 8000, 16000, 22050, 24000
enable_preprocessing=True # Handles numbers, dates, and mixed text
)
play(response)
- model: Uses the bulbul:v2 TTS model.
- target_language_code: Specifies English (India) with accent (en-IN).
- pitch, pace, loudness: Controls the tone, speed, and volume.
- speech_sample_rate: Chooses audio sample quality. 8000 Hz is basic (telephony-level).
- enable_preprocessing: When True, it auto-normalizes input (e.g., dates/numbers)
- speaker: Uses the predefined voice “anushka.” Other available options are:

4. Saving the Output
audio_base64 = response.audios[0] # This is a str, base64-encoded
audio_bytes = base64.b64decode(audio_base64) # Decode to bytes
with open("output.wav", "wb") as f:
f.write(audio_bytes)
- Takes the base64-encoded audio as input and decodes it to bytes.
- Saves it as the output.wav file.
Also Read: Multilingual Text-to-Speech Models for Indic Languages
Bulbul-V2 in Action: Voices from Different Languages
In this section, we’ll test Bulbul-V2’s performance on three major tasks. As Sarvam AI says that Bulbul-V2 delivers natural, human-like voices with regional accents across 11 languages. So, to test this we’ll check it on:
- Text to Speech conversion(in the same language (i.e, Punjabi to Punjabi or Hindi to Hindi)
- The next 2 tasks are to check whether it supports inter-language conversion or not, (i.e, Hindi to Tamil or Malayalam to Bengali)
Task 1: Humorous TTS Test
This hands-on demo will help to analyse how well Bulbul-V2 captures the sound and feel of the Indian linguistic diversity. In this task, I’ll pass a humorous text to the TTS model and analyze its response based on its response.
Prompt: “कल मेरा कंप्यूटर छींक रहा था-हाँ, छींक! हाहा! मैंने पूछा, ‘तुम ठीक हो?’ तो उसने जवाब दिया, ‘मुझे लगता है मुझे वायरस हो गया है!’ हेहे! मैंने उसे टिश्यू दिया, लेकिन उसे तो बस एक सॉफ्टवेयर अपडेट और गर्म कॉफी चाहिए थी। हाहा! फिर मेरा प्रिंटर हँसने लगा, और माउस चिल्लाते हुए बोला, ‘फिर से नहीं!’ हेहेहे! सच में, लगता है मेरे गैजेट्स को मुझसे ज्यादा छुट्टी चाहिए। हाहा, ओह टेक्नोलॉजी!”
client = SarvamAI(
api_subscription_key="api_key" # Put your API key here
)
response = client.text_to_speech.convert(
inputs=[ prompt],
model="bulbul:v2",
target_language_code="gu-IN",
speaker="karun", # natural and conversational
pitch=0.3,
pace=1.0,
loudness=1.0,
speech_sample_rate=16000,
enable_preprocessing=True
)
play(response)
audio_base64 = response.audios[0]
audio_bytes = base64.b64decode(audio_base64)
with open("output_hindi.wav", "wb") as f:
f.write(audio_bytes)
Output:
Analysis
In this task, we have used a funny and humorous prompt to test Bulbul-V2. The model spoke fluently and handled language well, however, it didn’t capture the funny or playful tone. The jokes and laughter sounded flat and lacking the expressive part. Overall the clarity was good, but the emotional delivery still needs some improvement.
Task 2: Punjabi to Tamil Translation
In this task, we’ll give a Punjabi prompt and ask the model to change it to Tamil.
Prompt: “ਉਹ ਕਹਿੰਦੇ ਹਨ ਕਿ ਕਮਰਾ ਸਾਫ ਰੱਖੋ ਤਾਂ ਤਾਂ ਉੱਥੇ ਸੱਚ ਮੁਚ ਆਰਾਮ ਮਿਲਦਾ ਹੈ, ਪਰ ਜਦੋਂ ਤੱਕ ਮੈਂ ਖੁਦ ਕੰਮ ਕਰ ਰਿਹਾ ਹਾਂ, ਕਮਰੇ ਦਾ ਹਾਲ ਵਧੀਅਾ ਨਹੀਂ ਹੋ ਸਕਦਾ। ਮੈਂ ਤਾਂ ਸੋਚਿਆ ਸੀ ਕਿ ਮੋਬਾਈਲ ‘ਤੇ ਚਾਰ ਘੰਟੇ ਕੁਝ ਕਰ ਕੇ ਕਮਰੇ ਦਾ ਹਾਲ ਸੁਧਾਰ ਲਵਾਂਗਾ, ਪਰ ਅਸਲ ਵਿੱਚ ਇੰਟਰਨੈਟ ‘ਤੇ ਕੁਝ ਮਜ਼ੇਦਾਰ ਵੀਡੀਓਸ ਨੇ ਮੇਰੀ ਮਿਸ਼ਨ ਨੂੰ ਫੇਲ ਕਰ ਦਿੱਤਾ।“
from sarvamai import SarvamAI
from sarvamai.play import play
import base64
client = SarvamAI(
api_subscription_key="api_key" # Put your API key here
)
response = client.text_to_speech.convert(
inputs=[prompt],
model="bulbul:v2",
target_language_code="ta-IN",
speaker="manisha",
pitch=0.3,
pace=1.0,
loudness=1.0,
speech_sample_rate=16000,
enable_preprocessing=True
)
play(response)
audio_base64 = response.audios[0]
audio_bytes = base64.b64decode(audio_base64)
with open("output_tamil.wav", "wb") as f:
f.write(audio_bytes)
Output:
Analysis
For this task, I’ve provided a Punjabi prompt and asked Bulbul-V2 to generate Tamil speech. However, the output starts with Punjabi and then suddenly starts Tamil, instead of giving a smooth Tamil response. This shows that the model has not performed translation yet. It only reads the input, and as a result, it lacks the ability to translate properly in Tamil.
Task 3: Malayalam to Gujarati Translation
In this task, we’ll give a Malayalam prompt and ask the model to change it to Gujarati.
Prompt:”എന്താണ് ഇവർ ചിന്തിക്കുന്നത്? ഞാനൊരു മണിക്കൂർ കാത്തിരുന്നത്! ഇത് എല്ലാം സപ്പോർട്ട് ഇല്ലാത്തതാണ്! എന്താ സങ്കടം! അവർക്ക് അറിയാമോ എത്ര വണ്ണം ചെലവാക്കേണ്ടി വന്നിരിക്കുന്നു! ഇങ്ങനെ പോകുന്നത് എങ്ങിനെയാണ്? ഈ ലോകത്ത് ആരും എത്രയും നിശ്ചയിച്ച് തങ്ങളുടെയായി നടക്കുന്നു!“
from sarvamai import SarvamAI
from sarvamai.play import play
import base64
client = SarvamAI(
api_subscription_key="your_api_key" # Put your API key here
)
response = client.text_to_speech.convert(
inputs=[prompt],
model="bulbul:v2",
target_language_code="gu-IN",
speaker="abhilash",
pitch=0.3,
pace=1.0,
loudness=1.0,
speech_sample_rate=16000,
enable_preprocessing=True
)
play(response)
audio_base64 = response.audios[0]
audio_bytes = base64.b64decode(audio_base64)
with open("output_gujrati.wav", "wb") as f:
f.write(audio_bytes)
Output:
Analysis
For this task, I’ve provided a Malayalam prompt and requested the model to generate Gujarati speech. However, the model completely fails to translate the prompt to Gujarati. Instead of this, it gives a smooth Malayalam as a response. This shows that the model has not performed translation yet. For accurate language conversion, an external translation step should have to be included before passing the text to TTS modes.
Overall Performance
Task | Input Language | Target Language | How Well It Worked | What Happened | What to Do Next |
1 | Funny prompt (English) | English | Good | Spoke clearly and smoothly, but lacked humor or liveliness. | Improve voice to better express emotions like laughter. |
2 | Punjabi | Tamil | Not good | Started in Punjabi, then suddenly switched to Tamil mid-sentence. | Use a proper translation service before TTS. |
3 | Malayalam | Gujarati | Failed | Output was still in Malayalam; no translation occurred. | Translate the text manually before using TTS. |
Must Read: GPT 4o vs Indic LLMs – Who will Win the Language War?
Use Cases
Bulbul-V2’s fast and natural text-to-speech capabilities make it a good fit in many real-world cases where inter-language conversion is not involved. Here are some practical examples where this can be used:
- Assistive Technology: TTS transforms text into speech for visually impaired users. Screen readers powered by this kind of technology can provide a natural and engaging experience to the users. Along with this, TTS can also aid non-verbal individuals to communicate.
- E-Learning and Content Creation: TTS models can be used to make audiobooks, other educational materials, and voice-over for videos. This helps in making learning more engaging, as individuals can use it in their native language, and also makes it more inclusive.
- Language Translation & Localization: TTS technology supports the creation of localized content. It enables real-time translation for applications. Bulbul-V2 has low latency, making it suitable for real-time applications. These include conference interpreting assistance and live customer service interaction. Educational platforms can also use it to help individuals hear properly.
Bulbul-V2 vs Other Popular TTS Models
Bulbul-V2 is making a strong impression in the domain of TTS models, especially for the Indian market. Its main edge over others is that it supports 11 native Indian languages, which cover the majority of the Indian subcontinent.
While comparing Bulbul-V2 with global rivals like ElevenLabs. Bulbul-V2 stands out with its fast performance, with delivery P90 latency in 0.398 seconds, which is approximately twice as fast as ElevenLabs.
Bulbul-V2 also offers a parameter like control over pitch, pace, loudness, and sample rate, along with smart processing for numbers and dates. It is not only keeping up with international TTS leaders but also setting new benchmarks in speed, efficiency, and affordability.
Checkout: Other Popular Indic LLMs
Conclusion
Bulbul-V2 makes a significant leap forward in India’s journey to develop its own LLM, especially in the domain of test-to-speech models by delivering fast, natural, and regional authentic voices. Its exceptional speed and affordability make it accessible to a wide range of applications, varying from assistive devices to content creation. While it currently doesn’t have support for automatic translation between languages, this can be overdone by combining Bulbul-V2 with external tools like google translate. With ongoing improvements in expressiveness and expanded features for building more engaging voice experiences. With this, Bulbul-V2 is set to play a key role in the future of Indian AI.
Login to continue reading and enjoy expert-curated content.