Replace line 7 of 12 voiceover lines: one TTS job and a concat
Fixing one 180-character line of a 12-line voiceover costs $0.02 (one TTS job at the 1-cent floor plus a $0.01 concat) vs $0.12 to redo all 12. Read 2026-10-08.

If a 12-line voiceover has one wrong line, redoing line 7 and concatenating the twelve files again costs $0.02: one TTS job at the 1-cent minimum plus one Timeline audio concat at $0.01. Redoing every line would cost 12 x $0.01 = $0.12, because each 180-character line sits under the 211-character point where Sume's TTS list price passes the floor.
The three options
The arithmetic uses the catalog's $0.0475 per 1,000 characters and 1-cent minimum, and Timeline audio's $0.01 per job. Twelve lines of 180 characters is 2,160 characters.
| Approach | Jobs | Cost | Why |
|---|---|---|---|
| Redo all 12 lines (12 jobs) | 12 | $0.12 | each 180-character line is under the 211-character floor |
| Redo line 7 (1 job) + concat 12 files | 2 | $0.02 | concat is sample-domain, no re-synthesis |
| All 2,160 characters as one job | 1 | $0.1026 | one file; any edit means regenerating it |
What changes downstream
A concat result includes segments[] with start and duration_seconds for each part, and the docs say to use those offsets to re-base the Timeline video[].start values. If the new line 7 is 0.4 seconds longer than the old one, every segment after it shifts by 0.4 seconds, so rebuild the video placements from the new offsets instead of reusing the old ones. The join itself adds no silence at the seams.
The job record helps you match the new line to the old ones: a completed TTS job records the model id, voice, language, output format and the synthesis settings, with null for anything the request did not send (Jobs and results). Read those from the line-6 job and send the same values for line 7 so the voice does not drift.
When to regenerate everything
Regenerate the whole script as a single job only when the change touches the voice or settings for all lines, for example after switching voice, or when the read must flow across line boundaries. In that case the cost is the character math, $0.1026 for the 2,160 characters here, and one file replaces the twelve.
The same arithmetic for a 40-line script
Scale the example up. Forty lines of 180 characters with one wrong line costs $0.02 to fix and $0.40 to regenerate in full, so the saving grows with the script. The concat step stays one job as long as the script has 20 parts or fewer; a 40-line script takes two concats and a third to join them, or you can hand two joined files to the render as audio.parts. In both cases the cost of the fix is the one TTS job plus the concats that touch the changed file.
Per-line files also give you a clean audit trail. If a client approves lines 1 to 6 and 8 to 12, you can leave their jobs untouched and show exactly which job changed, which is easier than explaining that the whole read was regenerated.
Sources
Related posts
More in Developers
- Reserve, capture, refund: a 20-clip batch with 3 failures, 2 cancels
Worked example of how a Sume balance moves across a 20-job batch when 3 jobs fail and 2 are canceled while queued: what is held, captured and released.
- Retry a timed-out Omni Flash submit without paying twice (Node)
Node 18+ code that retries a Gemini Omni Flash 1.1 POST to Sume's /v1/videos on timeout or 429 with one Idempotency-Key, so a retry returns the same job.
- Retry a timed-out POST /v1/videos with one Idempotency-Key, pay once
A Python submit wrapper that retries network errors, 429 and 5xx with a stable Idempotency-Key, so a replay returns the original job instead of a second charge.
- Retry an avatar video submit without paying twice on Sume
Use one Idempotency-Key per paid avatar video submit and poll the job instead of resubmitting after a timeout. A Python example and the rules from Sume docs.
Written by Sume