AI voiceover for short videos: 9:16 with voice and music

Make an AI voiceover for a Reel, Short or TikTok: script to speech, clips on the beat of the voice, optional music bed, one vertical MP4.

4 min readSume
All posts

An AI voiceover for a short video is a spoken track made from your script, laid under vertical clips. On Sume: generate the voice with POST /v1/tts-1.0/generate, then assemble the clips on that voice with POST /v1/timeline-1.0/render, whose default output is a 1080x1920 MP4. Add a music bed and burned-in captions as optional steps.

Facts are from the Timeline 1.0, Video captions and Music Router docs and the Sume API reference, read 2026-09-29.

What are the steps?

From the Sume docs and API reference, read 2026-09-29.
StepCallNote
VoicePOST /v1/tts-1.0/generateUse WAV and timestamps.words for timing
Music bed (optional)POST /v1/music-router/generateAsk for "Instrumental, no vocals."
AssemblePOST /v1/timeline-1.0/renderVoice as audio.url; music as soundtrack
Captions (optional)POST /v1/video-captionsNeeds audible speech; the fixed $0.20 estimate covers videos up to 60 s

How do I keep the music under the voice?

Use the render's soundtrack field: it takes a url, gain_db, loop, fade_out_seconds up to 10 and duck_db 0-20, and ducking needs a real voice spine, not silence.

curl -X POST https://api.sume.com/v1/timeline-1.0/render \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: short-001" \
  -d '{
    "audio": { "url": "https://media.sume.com/artifacts/artf_demo/voice.wav", "duration_seconds": 24 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 12 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 12, "duration": 12 }
    ],
    "soundtrack": { "url": "https://media.sume.com/artifacts/artf_demo/bed.mp3", "gain_db": -18, "duck_db": 8, "loop": true }
  }'

How long can the short be?

The render's audio.duration_seconds runs 1 to 1,800, well beyond any short-form cap, so your platform's limit decides. Check the platform's own current rules for length before you export.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume