Skip to main content
mulberry 1.6 is steered by a short description: a style, an accent and a pace. write your text in the language’s own script, then say how it should sound in description. hear one:

the description formula

three parts, in this order, separated by commas:
{style}, {accent}, {pace}
the {...} parts are placeholders you fill in from the vocabulary below. every part is optional; leave one out and silk fills it in.
the second one still works, but only cheerful in it changes anything. see free text.

vocabulary

every description comes down to these values:
  • style: professional, happy, sad, excited, angry
  • accent: Indian English accent, Hindi accent, Telugu accent, Tamil accent, Kannada accent, Bengali accent, Punjabi accent
  • pace: fast pace, steady pace, slow pace

what silk fills in

a part you leave out gets a default:
  • style: professional
  • pace: fast pace
  • accent: the one that matches the script of your text
so happy, slow pace on tamil text is read as happy, Tamil accent, slow pace, and marathi text sent with no description at all is read as professional, Hindi accent, fast pace.

free text

a mulberry 1.5 style sentence works too. silk picks out the style, accent and pace words it contains, plus a few common synonyms, and ignores the rest: gender, age, pitch, timbre and role are ignored: the voice comes from speaker. if a description names more than one style, the first one wins, so excited but calm is excited. accents are ranked instead of first-come: an explicit accent (tamil accent, bengali-accented, indian english accent) beats a bare language name (hindi, indian english), which beats a plain english. so an english-speaking voice with a bengali accent is Bengali accent, and english voice, tamil is Tamil accent.
in the playground, a paragraph tone like [happy] becomes that paragraph’s style.

examples

press play on any one, and copy it to start from it. and a request body per language:
the marathi and gujarati bodies name no accent, so silk picks one from the script: Hindi accent for devanagari, Indian English accent for gujarati. the marathi one names no speaker either, so it gets ira.

send it

put your text in text and the delivery in description. add speaker to pick a voice other than ira.
see the api reference for the full request schema.

writing text

  • use the language’s own script. tamil in tamil script, marathi in devanagari, urdu in perso-arabic. don’t romanise indian languages.
  • english words can stay in latin inside indian-language text, e.g. आपका order कल तक पहुँच जाएगा।
  • there’s no language field. the text decides, and its script picks the accent unless you name one.
  • three inline tags, no [tone] markers. <laugh>, <chuckle> and <sigh> are performed where you place them: हमारा नाम लिस्ट में है! <laugh> आज घर में जश्न होगा।. any other <tag> is removed before synthesis. the overall delivery comes from description.
  • numbers, money, dates and times are normalized before speaking, exactly as on mulberry. they come out as english number words, which read naturally inside any indian-language text. wrap anything that must be read digit by digit, like an otp, in double quotes. see numbers, ids & dates.
keep normalization on. "normalization": false sends your text through untouched, and raw digits and amounts are often misread.

length

one request speaks up to about 80 seconds of audio: roughly 1,200 english characters, or about 600 characters of indic-script text at a steady pace. split longer text into sentences and send them one after another, with the same speaker and description. a generation that can’t finish doesn’t come back cut off. you get 502 GENERATION_TOO_LONG over http, or an error frame with code GENERATION_TOO_LONG over a websocket, and you aren’t charged for it. any other failure, like the engine being unreachable, is GENERATION_ERROR.

using mulberry 1.6 in your own voice agent

mulberry 1.6 reads a complete sentence or utterance at once, and streams the audio out as it’s generated. send each sentence as soon as your llm has finished it, one text frame per utterance, and play the audio as it arrives. keep the same speaker and description for the whole conversation. a new text frame while one is still generating interrupts it (latest-wins), so never send a sentence in pieces: only the last piece is spoken in full.
for the session and frames, see streaming. the dashboard’s hosted agents don’t offer mulberry 1.6 yet.