Languages
A session declares the languages it expects. Kheelona listens for those languages, and the voice replies in whichever of them the person speaks.
| Code | Language | Status | Notes |
|---|---|---|---|
en | English | Supported | |
hi | Hindi | Supported | |
mr | Marathi | Beta | Beta: recognition makes more mistakes than in Hindi. Test it with your users. |
bn | Bengali | Beta | Beta: recognition makes more mistakes. Test it with your users. |
as | Assamese | Alpha | Alpha: spoken Assamese is not recognised today: use typed turns. The voice's Assamese pronunciation is limited. |
gu | Gujarati | Supported | |
pa | Punjabi | Beta | Beta: expect mistakes in recognition and pronunciation. A short turn can be taken for English if the session also declares English. |
ta | Tamil | Supported | |
te | Telugu | Beta | Beta: 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. |
kn | Kannada | Beta | Beta: expect mistakes in recognition and pronunciation, and the safety checks stop a few harmless sentences. |
ml | Malayalam | Alpha | Alpha: 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.
Declare the languages
Section titled “Declare the 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.
Supported, beta and alpha
Section titled “Supported, beta and alpha”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.
Steer the reply language
Section titled “Steer the reply language”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).