New: AI video tools. Cut, clip, caption and dub your videos. See all video tools →
Conversion

Convert speech to a target voice

POST
/api/v1/conversion/convert

Convert the speaker identity of source audio to a target voice.

Keeps the words, timing, and prosody of the source recording while re-rendering it in the target speaker's voice (zero-shot, via the Chatterbox S3Gen stack). Provide either target_voice_id (saved library voice) or target_audio_base64 (6-10s of clean speech).

Use ?sync=true to block until audio is ready. Otherwise poll GET /api/v1/conversion/progress and GET /api/v1/conversion/result.

Query Parameters

sync?Sync

Wait for conversion to complete and return audio directly

Defaultfalse

Request Body

application/json
  1. body
source_audio_base64*Source Audio Base64

Base64-encoded source audio (WAV) whose speech will be converted

target_voice_id?|

Saved library voice to convert to. Either this or target_audio_base64 is required.

target_audio_base64?|

Base64-encoded target reference audio (WAV), 6-10 seconds of clean speech

model_family?|

Voice conversion model. Query GET /api/v1/conversion/models for options. Defaults to chatterbox.

cfg_rate?|

Classifier-free guidance strength for the S3Gen flow. Higher pushes harder toward the target voice. Defaults to 0.7.

steps?|

Flow-matching diffusion steps. More steps can sound smoother but take longer. Defaults to 10.

Response Body

Conversion started (async) or completed result (sync).

application/json
  1. response
started*Started

Whether the generation job was enqueued

queue_position*Queue Position

Position in the generation queue (0 = next to run)

Example Request
curl -X POST 'http://127.0.0.1:8100/api/v1/conversion/convert' \  -H 'Content-Type: application/json' \  -d '{  "source_audio_base64": "UklGRi4AAABXQVZFZm10IBAAAA..."}'
Example Response
{  "started": true,  "queue_position": 0}