Podcasts

A podcast is a clip made from a long script — up to 100 000 characters, about 80 minutes of audio. Voixa splits the script into sentences, produces the parts in parallel and joins them into a single WAV with natural pauses.

How it is produced

  • Paragraphs matter. Blank lines in text mark paragraphs and become a 600 ms pause; sentences within a paragraph are separated by 250 ms. Other whitespace collapses.
  • Parts run in parallel. The clip reports parts and, while processing, partsDone — enough for a progress bar.
  • One file at the end. When every part is done the clip turns ready with one url, like any other clip. A part that fails fails the podcast, and its characters go back to your allowance.

An 80-minute Vietnamese episode takes around ten to twenty minutes; the other languages are faster.


POST/v1/podcasts

Create a podcast

Always answers at once with "status": "processing" and "kind": "podcast". Poll GET /clips/{clipId} every few seconds, or let the SDK's makePodcast() wait (up to two hours).

Required attributes

  • Name
    voiceId
    Type
    string
    Description

    Any voice, including your clones.

  • Name
    text
    Type
    string
    Description

    Up to 100 000 characters. Keep blank lines between paragraphs.

Optional attributes

  • Name
    title
    Type
    string
    Description

    Shown in the library and on the share page. Defaults to the first words of the text.

  • Name
    project
    Type
    string
    Description

    A content group, as for speak.

Request

POST
/v1/podcasts
curl -X POST https://api.voixa.vovix.io/v1/podcasts \
  -H "x-api-key: $VOIXA_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "voiceId": "vi-minh-duc",
    "title": "Episode 12",
    "text": "<up to 100 000 characters>",
    "project": "my-show"
  }'

Response

{
  "clip": {
    "clipId": "33b084f0-1cd5-4b22-b5de-4fa2b5fb0210",
    "kind": "podcast",
    "title": "Episode 12",
    "voiceId": "vi-minh-duc",
    "chars": 48210,
    "parts": 196,
    "partsDone": 0,
    "status": "processing"
  }
}

Was this page helpful?