Skip to content

Languages

A session declares the languages it expects. Kheelona listens for those languages, and the voice replies in whichever of them the person speaks.

CodeLanguageStatusNotes
enEnglishSupported
hiHindiSupported
mrMarathiBetaBeta: recognition makes more mistakes than in Hindi. Test it with your users.
bnBengaliBetaBeta: recognition makes more mistakes. Test it with your users.
asAssameseAlphaAlpha: spoken Assamese is not recognised today: use typed turns. The voice's Assamese pronunciation is limited.
guGujaratiSupported
paPunjabiBetaBeta: expect mistakes in recognition and pronunciation. A short turn can be taken for English if the session also declares English.
taTamilSupported
teTeluguBetaBeta: recognition makes more mistakes, and the safety checks stop a few harmless sentences, so a child may get the gentle "talk to a grown-up" reply instead of an answer.
knKannadaBetaBeta: expect mistakes in recognition and pronunciation, and the safety checks stop a few harmless sentences.
mlMalayalamAlphaAlpha: spoken Malayalam is often not recognised, so a turn may come back with no transcript. Typed turns work. The safety checks stop a few harmless sentences.

Sessions default to en, hi when you declare no languages.

The same list is on the supported languages page and comes from GET /v1/languages.

Send languages when you create the session: 1 to 11 distinct codes from the table, for example ["en", "ta"]. Without it a session uses ["en", "hi"], English and Hindi.

We recommend English plus one Indian language. Recognition listens only for the languages you declare, so a shorter list is more accurate. Declare what the child really speaks.

For the most reliable recognition, declare only the language the child speaks, for example ["pa"]. When a session declares English and an Indian language, Kheelona decides for every turn which of the two it hears. On a clear microphone that works well. With short turns in a noisy room, or a phone or laptop on loudspeaker, it can pick the wrong one, more often in beta and alpha languages. If the child also speaks English, declare English too.

Every language has a stage. The table above shows it, and so does GET /v1/languages (stage).

  • Supported (English, Hindi, Gujarati, Tamil): tested end to end. Speech is recognised reliably, and Kheelona tells the language apart from English.
  • Beta (Telugu, Marathi, Bengali, Punjabi, Kannada): works, but speech recognition makes more mistakes. Some words are misheard, and a short turn can be taken for English when the session also declares English. Test with your users before you launch.
  • Alpha (Malayalam, Assamese): early. Spoken turns are often not recognised, or come back wrong. Use typed turns, or use these languages for trials only, not as a child’s main language.

In Telugu, Kannada and Malayalam the safety checks are also less precise: some harmless sentences may get the gentle “talk to a grown-up you trust” reply instead of an answer. See Safety levels.

Beta and alpha languages are accepted, not refused. The answer to POST /v1/sessions carries a warnings list that says so:

  • beta_languages: lists the beta languages of this session;
  • alpha_languages: lists the alpha languages of this session;
  • multiple_indian_languages: you declared more than one Indian language, which makes recognition less certain.

warnings is empty when there is nothing to say. Show the warnings to whoever configures the product. They are advice for you, not an error.

The voice follows the person: it answers in the language it hears. To set a preference for a session, say so in the instructions you send when you create it, for example “Answer in simple Hindi, even if the child speaks English.” Instructions are text only the voice sees. They are never stored in readable form. A language you steer towards should be one you declared.

Typed turns work in every language. The transcript.final event tells you the language that was heard and its stage (language_stage: supported, beta or alpha; language_beta is true for the last two).