AI Audio

AI Podcast

Multi-voice podcast generation — auto / manual / reuse-script modes

AI Podcast synthesizes a multi-role script into a multi-speaker conversation, with per-role voices, background music, subtitles, and single/multi-track output. Async task; poll for status after submitting.

Base URL: https://api.aiclonevoicefree.com | Auth: Authorization: Bearer sk_...

POST /api/v2/voice/podcast

FieldTypeRequiredNotes
modestringauto (generate script from topic) / manual (bring your own segments) / from_db (reuse a script)
topicstringTopic for auto mode
languagestringzh / en
rolesobject[]Role list (below)
segmentsobject[]Required in manual mode; per-line text + voice (below)
reference_podcast_idstringScript id reused in from_db mode
backgroundobjectBackground music: intro_url / background_url / intro_volume / background_volume
pause_msintPause between segments (ms)
tts_modelstringTTS model, defaults to server config
single_trackboolReturn per-role timeline-aligned tracks (handy for video editing)
generate_subtitleboolGenerate SRT subtitles

roles[]: { name, voice_id, audio_url (reference), volume, model (optional per-role override) } segments[]: { text, voice_id, audio_url, role, speed_ratio, pitch_ratio, volume_ratio, emotion_mode, emotion_vector, emotion_text, pause_ms_after }

Billing

By synthesized character count: CJK chars 2 credits each, others 1 credit each, settled on completion. 402 at submit if insufficient.

Example (manual mode)

curl -X POST https://api.aiclonevoicefree.com/api/v2/voice/podcast \
  -H "Authorization: Bearer sk_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "manual",
    "language": "en",
    "roles": [
      { "name": "Host",  "audio_url": "https://your-cdn.com/host.wav" },
      { "name": "Guest", "audio_url": "https://your-cdn.com/guest.wav" }
    ],
    "segments": [
      { "role": "Host",  "audio_url": "https://your-cdn.com/host.wav",  "text": "Welcome to the show." },
      { "role": "Guest", "audio_url": "https://your-cdn.com/guest.wav", "text": "Glad to be here." }
    ],
    "generate_subtitle": true
  }'

Response 202{ "task_id": "...", "status": "pending", "capability": "voice", "action": "multi-segment" }

Getting the result

Poll GET /api/v2/tasks/{task_id}; audioUrl is the merged track and srtUrl the subtitle (if enabled). See also AI Dubbing.

On this page