Skip to content

Voices and TTS capabilities ​

Find voices and supported languages, models, and audio formats for TTS.

List voices ​

GEThttps://api.voicelab.uz/v1/voices?language=en

List voices available for a supported language.

Requires voices:read. language is optional; if supplied it must be a code returned by GET /v1/tts/languages.

Use /v1/voices as the canonical route. GET /v1/tts/voices is a compatibility alias with identical authentication, visibility, filters and pagination.

Example response:

json
{
  "data": [
    {
      "id": "voice_01J9NEUTRAL0000000000000001",
      "display_name": "Lison Neutral",
      "description": "A clear, balanced voice for everyday narration.",
      "language": "en",
      "kind": "system",
      "visibility": "public",
      "short_description": "Tiniq · muvozanatli",
      "orb_palette": "calm"
    }
  ],
  "request_id": "req_01J..."
}

Use the returned opaque id as voice_id in TTS requests. Do not use a display name or an internal provider/model identifier.

The catalog is account-scoped. Unrestricted system voices are available to all authenticated accounts; restricted system voices appear only for allowed users. Private custom voices are returned only to their owner. Approved public custom voices may also appear, subject to language and availability rules. A voice ID does not bypass authorization for synthesis.

Own cloned voices include can_manage: true; system and foreign voices do not. This flag indicates ownership, not this key's write permission. Create a verified private clone or edit/delete your existing clone through Voice Cloning. Mutation requires voices:write.

List languages and model metadata ​

GEThttps://api.voicelab.uz/v1/tts/languages

List supported languages and public TTS model metadata.

Requires tts:read. The response contains:

  • provider: public product name, currently Lison-VoiceLab.
  • sample_rate: current default output rate, currently 24000.
  • data: enabled language codes and names.
  • models: public model cards and output formats.

The catalog shows VoiceLab Lison with the Studio Quality badge. Internal provider and model names are not exposed.

Example model output metadata:

json
{
  "id": "lison",
  "name": "VoiceLab Lison",
  "badge": "Studio Quality",
  "description": "Natural, expressive multilingual speech for voiceovers, audiobooks, narration, and content creation.",
  "recommended": true,
  "languages": ["en", "uz", "ru"],
  "outputs": [
    {
      "format": "wav",
      "label": "WAV 24 kHz (Lossless)",
      "content_type": "audio/wav",
      "sample_rate": 24000,
      "streaming": false
    }
  ]
}

Use models[].id only as a display/catalog identifier. The TTS request does not currently accept a model field; VoiceLab selects the configured model.

Language selection in a client ​

  1. Call /v1/tts/languages with a key that has tts:read.
  2. Render data[].name and data[].native_name.
  3. Store data[].code when the user selects a language.
  4. Call /v1/voices?language={code} with a key that has voices:read.
  5. Store voices[].id and send it as voice_id to /v1/tts.

Do not hardcode a list of languages or assume every voice supports every language. The catalog can change without changing the API version.

Current output limitations ​

REST TTS returns complete WAV audio: 24,000 Hz, mono, 16-bit PCM.

Offer other formats, bitrates or sample rates only when the catalog's outputs array lists them. Realtime TTS uses a separate raw PCM protocol.