Skip to content

Voices and versions

A Kheelona voice is a complete character: how it sounds, its personality, how it speaks and how strict its safety rules are. You pick a voice. You never pick or see what runs underneath.

Each voice has an ID, such as lumi-dragon, which you pass as voice_id when you create a session.

You only see the voices Kheelona has enabled for your account, and that list can differ from another partner’s. There is no public catalogue. Look in two places:

  • the Voices page of your console: each voice with its name, its safety level and a sample clip to listen to;
  • GET /v1/voices with your API key (the voices:read scope): the same list as data. See List voices.

The docs use lumi-dragon as the example voice. Yours may be different.

A voice changes over time as Kheelona improves it. Each change is published as a new version, and a published version never changes afterwards.

  • A new session uses the current version and keeps exactly that version until it ends. If Kheelona publishes an update in the middle of a conversation, that conversation is not affected.
  • session.ready and the answer of POST /v1/sessions tell you which version a session has pinned (voice.id, voice.version, voice.name).
  • A voice behaves the same for as long as its version is the same. If you need to know when it changes, check the version in GET /v1/voices.

Every voice can be used in all 11 languages; see the stages: Malayalam and Assamese are alpha, and their spoken use is early. You choose which languages a session uses when you create it. See Languages for how to declare them and Supported languages for the notes on each language and its stage.

Each voice has a safety level, child or general, set by Kheelona. You cannot change it, and your instructions cannot switch it off. See Safety levels.

You can add instructions to a session, for example the child’s first name. They shape the voice for that session. They are never stored in readable form. See Sessions.