TTS word timestamps for captions: timestamps.words and what you get

Set timestamps.words true on Sume TTS and the result carries words[] with start and end seconds. A 600-character caption script costs $0.02850.

4 min readSume
All posts

Send timestamps: {"words": true} on a Sume TTS request and the completed job result includes words[] with start and end seconds for every word. A 600-character caption script costs $0.02850 at $0.0475 per 1,000 characters, and timings add no separate line.

Cost for caption scripts

The timing request is a flag on the same TTS job, so the price follows characters only.

Sume TTS with word timings (read 2026-10-09)
Script charactersCost
300$0.01425
600$0.02850
1,200$0.05700
3,000$0.14250

Turn words into caption lines

words[] is monotonic. Group words into lines of about seven and use the first start and the last end.

def lines(words, per=7):
    for i in range(0, len(words), per):
        chunk = words[i:i + per]
        yield chunk[0]["start"], chunk[-1]["end"], " ".join(w["word"] for w in chunk)

res = requests.get(f"{API}/v1/jobs/{job_id}/result", headers=H).json()["data"]["result"]
for start, end, text in lines(res["words"]):
    print(f"{start:6.2f} {end:6.2f} {text}")

Gotchas

The exact key names inside each words[] item should be confirmed against a real result before you ship; the schema documents start and end seconds. Timings describe the audio you got, so a retake with a different speed needs fresh timings.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume