Voices¶
Forty-seven production voices in three languages, all at 24 kHz and all behind the same API and key:
- Hinglish — twenty-one voices. Trained on Hinglish: they read Devanagari Hindi, Latin-script English and code-mixed sentences in one
breath. Saanvi and Sahil are the defaults and carry three expressions (
excited,sad,whisper); the nineteen others (Meera … Mahesh) are new in v2.0 (29 October 2026); all twenty-one are served by v2.1 since 31 October 2026 (the last word of a sentence is always spoken, repeated phrases read once, clearer English — see the changelog). The model reads Hinglish typed in देवनागरी or in roman letters ("aapki EMI kal due hai") and carries everything earlier releases learned: numbers, dates, amounts, OTPs, phone numbers, e-mails and URLs, plus the pronunciation of English words inside Hindi sentences (stress, silent letters, "ch"/"th"/"-tion" sounds, words like record, read and lead). - English (US) — eighteen voices (since 2026-10-20), nine female and nine male, Western English with US and UK accents. Kiara is the default; Kevin the male default. See English (US) voices below.
- English (IN) — eight voices (since 2026-11-05), four female and four male, Indian English. Aditya is the default; Ananya the female default. See English (IN) voices below.
A voice belongs to one language. Send Hinglish text to a Hinglish voice and English text to an English (US) or English (IN) voice: each language has its
own normaliser, and GET /v1/voices tells you which is which (language, gender, style, styles).
Hinglish voices¶
The two defaults, each with its neutral sample and the three expressions:
Saanvi saanviWarm, clear, collections-ready. The default voice. Female. Expressions: excited · sad · whisper.
excited
sad
whisper
Sahil sahilSteady, friendly, confident. The male default. Male. Expressions: excited · sad · whisper.
excited
sad
whisper
The nineteen v2.0 voices, nine female and ten male. The register column is the measured pitch of each voice relative to the set (a deeper or brighter voice, not a personality); every one has a sample in the portal's voice gallery.
| Voice | id | Gender | Register |
|---|---|---|---|
| Meera | meera |
female | bright |
| Mahi | mahi |
female | mid register |
| Mitali | mitali |
female | the brightest of the set |
| Manasi | manasi |
female | bright |
| Madhavi | madhavi |
female | low female register |
| Mohini | mohini |
female | mid register |
| Malvika | malvika |
female | bright |
| Mansi | mansi |
female | mid register |
| Mukta | mukta |
female | mid-bright |
| Manav | manav |
male | light male register |
| Mohan | mohan |
male | deep |
| Mihir | mihir |
male | deep |
| Madhav | madhav |
male | the deepest of the set |
| Mayank | mayank |
male | light, youthful |
| Manish | manish |
male | light male register |
| Mukul | mukul |
male | mid male register |
| Mohit | mohit |
male | light male register |
| Milan | milan |
male | mid male register |
| Mahesh | mahesh |
male | mid male register |
Retired voice ids
bela and barun are no longer served: a request naming either gets 400 unknown voice, as do the two ids v1 shipped.
Call GET /v1/voices for the current list, and update any hard-coded voice id and any key whose allow-list names a retired one.
saanvi, sahil and every English (US) id are unchanged.
Every sample is unedited engine output: the same service-callback paragraph (codes, a UK number read three times, an app version, an amount, a time) with the agent's own gender in the verb.
Saanvi and the female voices read: नमस्ते, electricity repair के लिए आज सुबह बात हुई थी। Nivedita Xpress Distribution Company के case में मेरे अलावा alternate contact सिद्धार्थ भट्टाचार्य हैं। Callback +44 00000 19024 पर करें। Support app का version v7.07.1 है; processing estimate ₹17.99 है। इसे payment approval न मानें। मैं इन details की confirmation कर रही हूँ। आपने मेरा phone number groups में लिखने को कहा था; अब सही number है: +44 00000 19024। पहले वाला number गलत था; ऊपर लिखे सही number का हर digit जरूरी है। कृपया पुराने number पर call न करें, क्योंकि वह पड़ोसी का है और वे घर पर नहीं होंगे। शाम 6:30 के बाद मैं available रहूँगी। Meter की photo पहले ही भेज दी है, इसलिए काम शुरू करने से पहले दोबारा आने की जरूरत नहीं है। कृपया आने का estimated time message में बता दें। Reply के साथ +44 00000 19024 जोड़ दें। इस हिस्से के बिना confirmation incomplete रहेगी और फिर से check करना होगा।
Sahil and the male voices read: नमस्ते, electricity repair के लिए आज सुबह बात हुई थी। Nivedita Xpress Distribution Company के case में मेरे अलावा alternate contact सिद्धार्थ भट्टाचार्य हैं। Callback +44 00000 19024 पर करें। Support app का version v7.07.1 है; processing estimate ₹17.99 है। इसे payment approval न मानें। मैं इन details की confirmation कर रहा हूँ। आपने मेरा phone number groups में लिखने को कहा था; अब सही number है: +44 00000 19024। पहले वाला number गलत था; ऊपर लिखे सही number का हर digit जरूरी है। कृपया पुराने number पर call न करें, क्योंकि वह पड़ोसी का है और वे घर पर नहीं होंगे। शाम 6:30 के बाद मैं available रहूँगा। Meter की photo पहले ही भेज दी है, इसलिए काम शुरू करने से पहले दोबारा आने की जरूरत नहीं है। कृपया आने का estimated time message में बता दें। Reply के साथ +44 00000 19024 जोड़ दें। इस हिस्से के बिना confirmation incomplete रहेगी और फिर से check करना होगा।
Expressions¶
Saanvi and Sahil can speak the same text in three expressions besides their neutral voice. Send the optional style field with the request
(REST body or WebSocket message): excited, sad or whisper; leave it out, or send neutral, for the voice as is.
curl -sN -X POST https://api.vartalaap.si/v1/tts -H "x-api-key: $VARTALAAP_API_KEY" -H "content-type: application/json" \
-d '{"text":"बधाई हो! आपका loan approve हो गया है.","voice":"saanvi","style":"excited","format":"wav"}' | ffplay -nodisp -autoexit -i -
GET /v1/voiceslists the expressions a voice carries in itsstylesfield (["excited","sad","whisper"]for Saanvi and Sahil,[]for every other voice). The expressions are not voices of their own: there is nosaanvi-excitedid.- A
styleon a voice that does not carry it plays the voice neutral, with no error. An unknown style name is400 unknown style <x>; styles: excited, sad, whisper. - English (US) and English (IN) voices ignore
style; for the English (US) voices, theirstylemetadata inGET /v1/voices(reading/conversation) describes the voice and is not a request field. - Pace,
digits,seedand the output chain apply to an expression exactly as to the neutral voice; the price is the same.
English (US) voices¶
Western English, 24 kHz, streaming, the same price. The model is case-aware, so write English the way you would type it: numbers,
dates, times, money ($, £, €), codes and URLs are read out by the English normaliser; the digits field does not apply
(English throughout, Western grouping — two million, not twenty lakh). Spaced digit groups are read digit by digit with a pause
between the groups: PIN 751 378 → PIN seven five one, three seven eight; Account number 0012 3456 7890 → Account number zero zero
one two, three four five six, seven eight nine zero.
| Voice | id | Gender | Style | |
|---|---|---|---|---|
| Kiara | kiara |
female | reading | the English (US) default · clear, even |
| Kenna | kenna |
female | conversation | bright, conversational |
| Kate | kate |
female | conversation | warm, British |
| Kyra | kyra |
female | conversation | soft, calm |
| Kelsey | kelsey |
female | reading | composed narrator |
| Kristen | kristen |
female | reading | crisp, confident |
| Kaia | kaia |
female | reading | low, steady |
| Kimberly | kimberly |
female | conversation | upbeat, approachable |
| Kira | kira |
female | conversation | mature, assured |
| Kevin | kevin |
male | reading | the male default · steady, clear |
| Kyle | kyle |
male | conversation | friendly, conversational |
| Kieran | kieran |
male | conversation | warm, British |
| Kenneth | kenneth |
male | conversation | deep, unhurried |
| Kurt | kurt |
male | conversation | direct, energetic |
| Kai | kai |
male | conversation | light, youthful |
| Keith | keith |
male | reading | calm narrator |
| Kelvin | kelvin |
male | reading | measured, authoritative |
| Kristof | kristof |
male | reading | rich, steady |
Reading voices hold a steady, narrated pace (IVR, statements, long text); conversation voices phrase like someone talking (assistants, sales, support). Every voice has a sample in the portal's voice gallery; the two defaults read the English version of the collections line above:
Kiara kiaraClear, even. The English (US) default. Female.
Kevin kevinSteady, clear. The male default. Male.
"Hello, we spoke this morning about the electricity repair. For the Nivedita Xpress Distribution Company case, the alternate contact besides me is Siddharth Bhattacharya. Please call back on +44 00000 19024. The support app is version v7.07.1, and the processing estimate is ₹17.99. Please don't treat this as a payment approval. I'm confirming these details. You asked me to write my phone number in groups; the correct number is +44 00000 19024. The earlier number was wrong, and every digit of the number above matters. Please don't call the old number: it belongs to a neighbour, and they won't be home. I'll be available after 6:30 pm. I've already sent the meter photo, so there's no need to visit again before starting the work. Please message me your estimated arrival time. Add +44 00000 19024 to your reply. Without it, the confirmation stays incomplete and will have to be checked again."
curl -sN -X POST https://api.vartalaap.si/v1/tts -H "x-api-key: $VARTALAAP_API_KEY" -H "content-type: application/json" \
-d '{"text":"Your one time password is 482913. It expires in 10 minutes.","voice":"kiara","format":"wav"}' -o otp.wav
English (IN) voices¶
Indian English, 24 kHz, streaming, the same price (since 2026-11-05). language is en-IN in GET /v1/voices. Write English the way
you would type it; numbers, amounts, times, e-mails and links are read by the English (IN) normaliser with Indian conventions
(double and triple for repeated digits, lakh and crore, rupees), and the digits field does not apply. See
how English (IN) reads numbers.
| Voice | id | Gender | |
|---|---|---|---|
| Ananya | ananya |
female | the female default |
| Aditi | aditi |
female | |
| Anika | anika |
female | |
| Avni | avni |
female | |
| Arjun | arjun |
male | |
| Aarav | aarav |
male | |
| Aditya | aditya |
male | the English (IN) default |
| Ayaan | ayaan |
male |
Every voice has a sample in the portal's voice gallery; the two defaults read the same paragraph as the English (US) voices, with an Indian phone number:
Ananya ananyaThe female default. Female.
Arjun arjunMale.
"Hello, we spoke this morning about the electricity repair. For the Nivedita Xpress Distribution Company case, the alternate contact besides me is Siddharth Bhattacharya. Please call back on +91 98200 19024. The support app is version v7.07.1, and the processing estimate is ₹17.99. Please don't treat this as a payment approval. I'm confirming these details. You asked me to write my phone number in groups; the correct number is +91 98200 19024. The earlier number was wrong, and every digit of the number above matters. Please don't call the old number: it belongs to a neighbour, and they won't be home. I'll be available after 6:30 pm. I've already sent the meter photo, so there's no need to visit again before starting the work. Please message me your estimated arrival time. Add +91 98200 19024 to your reply. Without it, the confirmation stays incomplete and will have to be checked again."
curl -sN -X POST https://api.vartalaap.si/v1/tts -H "x-api-key: $VARTALAAP_API_KEY" -H "content-type: application/json" \
-d '{"text":"Your OTP is 699884. The amount due is Rs 2,50,000.","voice":"ananya","format":"wav"}' -o otp.wav
Listing voices¶
curl -s https://api.vartalaap.si/v1/voices -H "x-api-key: $VARTALAAP_API_KEY"
js title="tts.mjs"on
{"voices":[{"name":"saanvi","language":"hi-IN+en-IN","gender":"female","style":"","styles":["excited","sad","whisper"],"sample_rate":24000,"prompt_frames":102,"model":"pocket-tts-hinglish-v2.0-sft3000"},
{"name":"sahil","language":"hi-IN+en-IN","gender":"male","style":"","styles":["excited","sad","whisper"],"sample_rate":24000,"prompt_frames":102,"model":"pocket-tts-hinglish-v2.0-sft3000"},
{"name":"meera","language":"hi-IN+en-IN","gender":"female","style":"","styles":[],"sample_rate":24000,"prompt_frames":102,"model":"pocket-tts-hinglish-v2.0-sft3000"},
… 18 more Hinglish voices …,
{"name":"kiara","language":"en","gender":"female","style":"reading","sample_rate":24000,"prompt_frames":146,"model":"pocket-tts-english-v1"},
{"name":"kenna","language":"en","gender":"female","style":"conversation","sample_rate":24000,"prompt_frames":144,"model":"pocket-tts-english-v1"},
… 16 more English (US) voices …,
… 8 English (IN) voices, `"language":"en-IN"` …],
"model":"pocket-tts-hinglish-v2.0-sft3000","language":"hi-IN+en-IN"}
The list is filtered by the key's voice allow-list. Voice ids are lowercase and stable; new
voices are announced in the changelog. language is hi-IN+en-IN for the Hinglish voices, en for the English (US)
ones and en-IN for the English (IN) ones; gender is female or male; style is reading or conversation for the English (US) voices (empty for Hinglish and English (IN)); styles lists the expressions a voice carries (empty for all but Saanvi and Sahil).
Choosing¶
| Saanvi | Sahil | the 19 v2.0 voices | |
|---|---|---|---|
| Collections, reminders, KYC follow-ups | ✓ default | ✓ | ✓ pick a register |
| Order and delivery updates | ✓ | ✓ | ✓ |
| Sales, onboarding | ✓ excited |
✓ warmer close, excited |
✓ brighter voices (Mitali, Meera, Mayank) |
| Long-form reading (statements, policies) | ✓ | ✓ | ✓ deeper voices (Madhavi, Mohan, Madhav) |
| Apologies, bad news | ✓ sad |
✓ sad |
neutral only |
| Quiet, intimate delivery | ✓ whisper |
✓ whisper |
neutral only |
Pace is fixed per voice (female 1×, male 1.15×, mohit/manish and the English (IN) male voices 1×; GET /v1/voices reports speed); a speed field in a request is ignored. The pace is applied after the model without changing the pitch
(Pace). Pitch is not adjustable, and loudness is evened out across voices by the
output chain; beyond the three expressions on Saanvi and Sahil, expressiveness comes from the text itself. See Writing text that sounds right. temperature (default 0.3) trades stability for
variation; seed makes a request reproducible.
Your own voice¶
A bespoke voice on the same engine is billed like any other: 10 paise per 1,000 characters. Record about thirty minutes, we train and gate it, and it appears in your project under its own id. Request it under Train your voice in the portal; details in the guide.