160 earnings briefs a year at 3,200 characters: TTS cost, MAI vs Sume

Forty companies, four quarters, 3,200 characters each is 512,000 characters: $7.68 on MAI Flash, $11.26 on MAI-Voice-2.1 and $24.32 on Sume TTS.

5 min readSume
All posts

Forty companies over four quarters is 160 audio briefs; at 3,200 characters each that is 512,000 characters and $7.68 on MAI-Voice-2.1-Flash, $11.26 on MAI-Voice-2.1 and $24.32 on Sume TTS 1.0. At list rates that is 512,000 characters: $11.26 on MAI-Voice-2.1 ($22 per 1M characters), $7.68 on MAI-Voice-2.1-Flash ($15 per 1M), and $24.32 on Sume TTS 1.0 ($47.50 per 1M, or $0.0475 per 1,000 characters).

The inputs are assumptions for this scenario: 40 companies, four quarters, one 3,200-character brief each. 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 brief; the total is all 160.

Cost of 3,200 characters, and of 512,000 characters over 160 briefs, at list rates (read 2026-10-05)
ModelRate per 1M charactersOne runTotal over 160 briefs
MAI-Voice-2.1$22.00$0.070$11.26
MAI-Voice-2.1-Flash$15.00$0.048$7.68
Sume TTS 1.0$47.50$0.152$24.32

What a financial brief needs from a TTS service

Numbers and tickers are where listeners notice errors. The cost per brief is about 15 cents on Sume and 7 cents on MAI-Voice-2.1, so the useful comparison is how each lets you control and audit the reading.

  • Spell out figures the way they are read, for instance 'four point two billion dollars', in the script before sending it.
  • Request word timings with timestamps.words so you can check a number against the audio position.
  • Keep the script text and the job id together in your own records, so a disputed figure can be traced to the exact text you sent.
  • A 3,200-character brief is a single job well inside the 20,000-character limit.

Run it on Sume

This turns a brief into audio and prints the timing of every word that contains a digit, so a reviewer can jump to each number.

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

brief = "Revenue rose to four point two billion dollars, up eight percent."
res = speak(brief, "brief-q3-0007", timestamps={"words": True})
print(res["artifacts"][0]["url"])
for w in res["words"]:
    if any(ch.isdigit() for ch in w["word"]) or w["word"] in {"four", "billion"}:
        print(w["word"], w["start"], w["end"])

When MAI is the better pick

On cost alone MAI-Voice-2.1 is cheaper by about $13 a year at this volume. Microsoft's page recommends it for audiobook-style and voice-over work where fidelity matters more than speed. Choose Sume if you need the audio, a timed transcript and a rendered clip from one set of job URLs.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume