generate_voiceover

Generate voice-over

Start a voice-over generation from text. This spends credits, or runs on the user's own key, and returns immediately. Pass subject to read in the voice bound to one of the account's Subjects — her model, voice, delivery and language — or pick model and voice yourself; omit both to use the default model's default voice.

Lines of one script must sound like one take: generate the whole script once and cut it, or keep the model, voice and delivery fixed across lines.

Models:

  • elevenlabs-tts (Eleven v3): ~8.5 per 1,000 chars; up to 3000 chars; default voice Rachel; controls language/speed; custom voice ids
  • eleven-v4 (Eleven v4): ~7 per 1,000 chars; up to 4000 chars; default voice JBFqnCBsd6RMkjVDRZzb; controls language; custom voice ids; stitches lines (continues_from)
  • gemini-3.1-flash-tts (Gemini 3.1 Flash TTS): ~11 per 1,000 chars; up to 4000 chars; default voice Kore; controls style prompt/language
  • kokoro-82m (Kokoro 82M): ~0.5 per 1,000 chars; up to 4000 chars; default voice af_bella; controls speed
  • minimax-speech-2.8-hd (MiniMax Speech 2.8 HD): ~4.5 per 1,000 chars; up to 4000 chars; default voice Wise_Woman; controls language/speed/emotion; custom voice ids
  • inworld-tts-2 (Inworld TTS 2.0): ~2.5 per 1,000 chars; up to 2000 chars; default voice Ashley; controls language/speed; custom voice ids

Scope

Behaviour

Writes
Creates or changes items in the caller's own account.
Adds or updates
Adds or updates; nothing the caller already has is deleted or overwritten.
Stays in the account
Stays inside the caller's private Kuro account: any media provider it calls acts on Kuro's account, and the result is visible to no one else.

Credits

What the tool's description says about credits, verbatim.

Inputs

Example call

A tools/call request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "generate_voiceover",
    "arguments": {
      "text": "<text>"
    }
  }
}

Input schema

As the server sends it in tools/list.

{
  "type": "object",
  "properties": {
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Optional. Pass the same value to retry one operation without spending twice; omit it for a new operation. Different arguments under a reused key are refused."
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The words to speak. Each model has its own ceiling, shown in its roster line (\"up to N chars\"); a longer script is split into lines."
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "A Subject's name or id. Reads in her bound voice; model, voice, style_prompt and language_code then come from the binding and may not be passed."
    },
    "model": {
      "type": "string",
      "enum": [
        "elevenlabs-tts",
        "eleven-v4",
        "gemini-3.1-flash-tts",
        "kokoro-82m",
        "minimax-speech-2.8-hd",
        "inworld-tts-2"
      ]
    },
    "voice": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "style_prompt": {
      "type": "string",
      "maxLength": 4000
    },
    "language_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 35
    },
    "speed": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 5
    },
    "emotion": {
      "type": "string",
      "enum": [
        "auto",
        "neutral",
        "happy",
        "sad",
        "angry",
        "fearful",
        "disgusted",
        "surprised",
        "calm"
      ]
    },
    "continues_from": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 3,
      "description": "The generation ids of up to three earlier lines of the same script, oldest first, on a model whose roster line says it stitches; keeps the voice continuous across separately generated lines. Same model and voice as those lines."
    },
    "runs_on": {
      "type": "string",
      "enum": [
        "credits",
        "replicate",
        "fal",
        "siray",
        "runware",
        "higgsfield",
        "sunra",
        "comfy"
      ],
      "description": "Who pays: \"credits\", or one of the user's own keys by vendor (get_credits lists them). Leave out to follow their payer order; set it only when the user chose."
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}

Related tools

Every tool· This page as Markdown