14-page read-aloud video: per-page TTS, one concat, page-turn offsets
Narrate 14 pages of 160 characters with Sume TTS ($0.11), join for $0.01, set page starts from segments[]. About $0.32 with a 2-minute render.

For a 14-page read-aloud video, make one Sume TTS job per page, join the 14 files with one timeline audio concat, and use the returned segments[] starts as each page image's video[].start in a Timeline render. At 160 characters a page the voice costs 2,240 x $0.0475 / 1,000 = $0.106, the concat $0.01, and a 2-minute render $0.20, about $0.32 in all.
Why one job per page
A page turn has to land on a known second. If you narrate the whole book in one TTS job you must find the page boundaries afterwards. If you narrate per page and concatenate, the concat result gives the exact start and duration of every page. The concat is sample-domain, with no silence at the seams, and 14 parts is inside the 20-part cap.
| Step | Quantity | Arithmetic | Cost |
|---|---|---|---|
| TTS, 14 jobs | 2,240 characters | 2.24 x $0.0475 | $0.106 |
| Timeline audio concat | 1 job, 14 parts | flat | $0.01 |
| Timeline render | assumed 8 s per page = 112 s, reserves 2 min | 2 x $0.10 | $0.20 |
| Total | $0.316 |
Building the slots
Each page image is a Timeline video[] slot. Stills are static holds: a slot with a still and a duration stays on screen for that time. The first slot must start at 0, later starts must increase, and the last slot can stop at most 0.5 seconds before the end of the spine. Set video[n].start to segments[n].start and video[n].duration to segments[n].duration_seconds, so that every page changes exactly when its sentence ends.
Add a fade transition of 0.25 seconds on slots after the first for a soft page turn; the transition duration must be at most 1 second and at most half of the shorter neighbouring slot.
Details that bite
Four details decide whether the page turns sit on the right syllable.
- Use the same voice, language and output format for every page, or the concat can fail with
audio_parts_channel_mismatch. - Use wav for the page files. The docs warn that mp3 adds priming padding at every edge, which becomes a small gap at each page boundary.
- Import the page images and the audio to media.sume.com first; Timeline reads only this workspace's files.
- The 8 seconds per page is an assumption. Use the real concat duration in
audio.duration_seconds, and re-check the reserve with the unbilled plan call.
If a page is much longer than the rest
Pages do not need equal lengths, and the concat does not care: each part keeps its own duration. A page that runs long just holds its still longer. If one page is under 0.2 seconds long it cannot be a slot, because a video[] duration must be at least 0.2 seconds, so merge a one-word page into its neighbour before you narrate it. Keep a record of the page number against each segments[] index; the concat output lists them in order, and that order is the only link between the audio and the picture.
A note on engines
Microsoft's MAI-Voice-2.1 lists audiobooks and voice-over among its uses at $22 per 1M characters, which would put these 2,240 characters at about $0.049. Sume does not list MAI, so that voice cannot be dropped into this workflow without bringing its audio in as a file first.
Sources
Related posts
More in Use cases
- 150-second YouTube Short from three avatar jobs (60+60+30): cost
A 150-second avatar Short built from 60, 60 and 30 second jobs costs $27.60 at standard video, plus $0.125 music and $0.30 Timeline render.
- 24x36 poster from Nano Banana 2.1 at 4K: 3392x5056, about 140 dpi
Google's size table gives Nano Banana 2.1 at 4K and 2:3 as 3392x5056. On a 24x36 inch print that is about 140 dpi. Sume bills the 4K image at $0.20.
- 3-second product hook: Seedance 2.5 bills 4 s, Wan 3.0 bills 3 s
Seedance 2.5 on Sume starts at 4 seconds, so a 3-second hook at 720p bills 4 x $0.5778 = $2.31. Wan 3.0 accepts 2 seconds: 3 x $0.125 = $0.375.
- 300x1200 half-page ad image: it is exactly 1:4, so request 1:4
A 300x1200 slot is 1:4. Nano Banana 2.1 lists 1:4 on Sume, from $0.075 at 0.5K to $0.20 at 4K per image. Request body, crop math for 160x600, and gotchas.
Written by Sume