Skip to main content
silk normalizes the text you send before it synthesizes, so numbers, money, dates, and IDs come out right. Rs 2,45,600 is read as “two lakh forty five thousand six hundred rupees”, and 09/03/2025 as “ninth March two thousand twenty five”. you write text the normal way. there is one thing you decide: which digits should be read one at a time. wrap those in double quotes. write everything else plainly. normalization runs by default. set "normalization": false on a request to send your text through untouched.

the one rule

a run of digits can be read two ways, and only you know which you mean. currency symbols, %, dates, and times are picked up on their own. write them the natural way.
why quotes? a bare 8123456789 could be a phone number or a very large count. rather than guess, silk spells out what you put in quotes and reads everything else as a number. quoting is how you tell it which one you meant.
here it is in one request:

quick reference

numbers & money

write quantities plainly. silk handles indian grouping (lakh/crore), decimals, and currency symbols on its own. no quotes. currency symbols: , Rs, Rs., INR, $, , £, ¥, with or without a space before the amount. do
  • write Rs 2,45,600. the indian comma grouping is read as lakh/crore.
  • put the symbol before the amount ($45, not 45$).
don’t
  • don’t quote an amount. "3400" reads as “three four zero zero”, not the price.

percentages, decimals & time

time is read 24-hour to 12-hour with AM/PM. use a period for decimals (3.2), never a comma.

dates

write DD/MM/YYYY or DD-MM-YY (india, day first). silk reads an ordinal day, then the month name, then the year. use 4-digit years for anything historical or ambiguous. 24/7 and 3-2-1 are not read as dates; they come out as their numbers.

IDs, always quote

put any identifier in double quotes. digits turn into words, letters stay as letters, separators (spaces, -, /) are dropped, and leading zeros are kept.

phone numbers with a country code

write the + as the word plus, and quote the digits:
writing "+918123456789" won’t work; the + inside the quotes isn’t spelled cleanly.

per-model notes

the rules above are the same for both models. these are the only differences. muga. your [tone] tag stays at the very start. normalization leaves tags and <events> alone, so tagging and normalizing never interfere with each other.
mulberry. there are no tone tags to place, the voice comes from description. normalization only ever touches text, so your description reaches the model exactly as you wrote it.

edge cases & gotchas

  • digits stuck to letters are left alone. B2B, COVID19, 12kg are never split.
  • a quoted sentence isn’t spelled out. "see you at 400" reads “see you at four hundred”, not letter by letter. only clean identifiers (every token has a digit) get spelled.
  • leading zeros survive only inside quotes. "0083" reads “zero zero eight three”; an unquoted 0083 becomes “eighty three”.
  • ranges: 4-6 reads “four-six”. write 4 to 6 if you want the word “to”.
  • running the same text through twice is safe; normalized text stays as it is.

turning normalization off

set "normalization": false and silk reads your text as-is. nothing is spelled out or converted. here is the same input both ways:
reach for it when your text is already in the exact spoken form you want, or when you need full control over how something is pronounced.