Twelve 750-character match recaps a weekend: a year of TTS cost
Twelve recaps of 750 characters every weekend for 52 weeks is 468,000 characters: $7.02 on MAI Flash, $10.30 on MAI-Voice-2.1, $22.23 on Sume TTS.

Twelve match recaps of 750 characters every weekend for a year is 468,000 characters, which costs $7.02 on MAI-Voice-2.1-Flash, $10.30 on MAI-Voice-2.1 and $22.23 on Sume TTS 1.0. At list rates that is 468,000 characters: $10.30 on MAI-Voice-2.1 ($22 per 1M characters), $7.02 on MAI-Voice-2.1-Flash ($15 per 1M), and $22.23 on Sume TTS 1.0 ($47.50 per 1M, or $0.0475 per 1,000 characters).
The inputs are assumptions for this scenario: twelve recaps of 750 characters per weekend, 52 weekends, one narrator. Microsoft's prices are from its announcement page and Sume's from the API reference and pricing page, all read 2026-10-05. The totals are rate times characters, before any per-job rounding.
What the bill looks like
The one-run column is a single weekend of twelve recaps (9,000 characters).
| Model | Rate per 1M characters | One run | Total over 52 weekends |
|---|---|---|---|
| MAI-Voice-2.1 | $22.00 | $0.198 | $10.30 |
| MAI-Voice-2.1-Flash | $15.00 | $0.135 | $7.02 |
| Sume TTS 1.0 | $47.50 | $0.427 | $22.23 |
Same voice, twelve jobs, one weekend
A recap series lives or dies on a consistent narrator, and on getting twelve files out in an hour rather than one file out in a second. That is a throughput and consistency question more than a latency one.
- Pick the voice by
avatar_handleorvoice.idonce and reuse it for every recap, so the narrator does not change between weekends. - Sume jobs are asynchronous: poll each
status_urluntilterminalis true, and a retried recap reuses its job through the idempotency key. - Set
generation_config.volumeandspeedonce in a shared config so the first and the twelfth recap match. - Microsoft lists instant voice matching from a short reference clip for MAI-Voice-2.1; check the voice-rights terms for any voice you clone on either service.
Run it on Sume
This runs the recaps one after another, using the match id in the idempotency key. Replace the two sample recaps with your own text.
import os, time, requests
API = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
def speak(text, key, **extra):
body = {"transcript": text, "language": "en", **extra}
body.setdefault("avatar_handle", os.environ.get("SUME_AVATAR_HANDLE", ""))
r = requests.post(f"{API}/v1/tts-1.0/generate", timeout=60,
headers={**H, "Idempotency-Key": key}, json=body)
r.raise_for_status()
job = r.json()["data"]
while True:
s = requests.get(job["status_url"], headers=H, timeout=30).json()["data"]
if s["terminal"]:
break
time.sleep(s["next_poll_after_seconds"] or 2)
if s["sume_status"] != "completed":
raise RuntimeError(s["sume_status"])
res = requests.get(job["result_url"], headers=H, timeout=30).json()["data"]["result"]
return res
recaps = {"m01": "Home side won two to one after a late goal.",
"m02": "A goalless draw in the rain."}
cfg = {"generation_config": {"speed": 1.05, "volume": 1.0}}
for match_id, text in recaps.items():
res = speak(text, f"recap-wk41-{match_id}", **cfg)
print(match_id, res["artifacts"][0]["url"])
When MAI is the better pick
For a weekend batch the cheapest option is MAI-Voice-2.1-Flash and the gap to Sume is $15.21 over the year on this volume. The case for Sume is that a recap is rarely audio alone: the same account can burn captions and render a vertical video from the file.
Sources
Related posts
More in Pricing
- Station announcements: 50 messages at 160 characters, Flash vs Sume
Fifty pre-recorded announcements of 160 characters are 8,000 characters: 12 cents on MAI-Voice-2.1-Flash, 18 cents on MAI-Voice-2.1 and 38 cents on Sume.
- Stocking-stuffer gift videos: a bigger spend cap for the hero SKU only
In one bulk queue every item can carry its own generation_spend_cap_usd. Give the hero gift a higher ceiling and cheap stocking stuffers a low one.
- STT duration_seconds omitted: Sume reserves one minute. What to send
When you leave duration_seconds out of a Sume transcribe request, one audio minute is reserved. Send the real length, up to 600 seconds, to size the hold.
- Avatar video cost per minute on Sume: Standard, Plus and Max tiers
Avatar 1.0 video is $0.184 to $0.58 per second on Sume; a minute is $11.04 to $34.80. Tier table, product-image surcharge and the $0.95 creation fee.
Written by Sume