Newsletter to audio: a 2,000-word issue costs about $0.57
A 2,000-word newsletter is about 12,000 characters, which fits one Sume TTS request under the 20,000 limit and bills $0.57. When to split, and a Python loop.

A 2,000-word newsletter issue turns into audio for about $0.57 on Sume TTS. At a rough six characters per word including spaces (my planning assumption), the issue is around 12,000 characters, under the 20,000-character limit per request, so it is one job.
Issue size to bill
| Words | Characters (assumed) | Requests | Sume TTS |
|---|---|---|---|
| 500 | 3,000 | 1 | $0.1425 |
| 2000 | 12,000 | 1 | $0.57 |
| 3500 | 21,000 | 2 | $0.9975 |
| 5000 | 30,000 | 2 | $1.425 |
Splitting longer pieces
Above 20,000 characters, split on paragraph boundaries, not mid-sentence, so each file starts clean. Then join the files without a gap using Timeline audio concat, which accepts 1 to 20 ordered parts and joins in the sample domain with no re-synthesis.
import os, re, requests
text = open("issue.txt", encoding="utf-8").read()
chunks, cur = [], ""
for para in re.split(r"\n\s*\n", text):
if len(cur) + len(para) + 2 > 18000 and cur:
chunks.append(cur); cur = ""
cur += para + "\n\n"
if cur.strip():
chunks.append(cur)
for i, c in enumerate(chunks):
r = requests.post("https://api.sume.com/v1/tts-1.0/generate",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Idempotency-Key": f"nl-issue-12-part-{i}"},
json={"transcript": c.strip(), "voice": {"id": os.environ["VOICE_ID"]}})
print(i, len(c), r.status_code)Practical notes
A single TTS job that would run longer than 1,200 seconds of audio fails with tts_duration_exceeded, so keep very dense parts well under the 20,000-character cap. TTS is an asynchronous job; poll the job or take a webhook, then read the mirrored audio artifact. A stable Idempotency-Key per part means a retry returns the first job instead of charging twice.
Weekly for a year is $29.64 of voice at the 12,000-character size. The recurring cost is the human review of how it reads aloud, not the API.
Related posts
More in Use cases
- Newsroom: 20 images a day, 440 a month, from $10.89 on Sume
A desk that makes 20 illustrations a day over 22 workdays makes 440 images: $10.89 on GPT Image 2.5 low or $44.00 on Nano Banana 2.1 at 1K on Sume.
- Nine Performance Max videos (3 ratios x 3 concepts): Sume cost
Three concepts in 16:9, 1:1 and 9:16 at 10 seconds each is 90 video seconds. At Wan 3.0 720p that is $11.25 on Sume; Seedance 2.5 is about $52.
- Nonprofit donation appeal: a 15-second video from two Omni clips
A 15-second appeal in 9:16 is two Omni clips, 10 and 5 seconds, joined on Sume. $1.875 at 720p for both. Where to put captions, and what the watermark means.
- Edit a 10-second product clip with Omni Flash 1.1: $1.50 list, $1.88
Gemini Omni Flash 1.1 video edit at 1080p lists at $0.15 a second on fal, $1.50 for 10 s. Sume reserves list x 1.25, $1.875. What the edit call rejects.
Written by Sume