School-year lecture capture: 150 hours of transcripts, MAI vs Sume
Five 50-minute classes a week for 36 weeks is 9,000 audio minutes: about $81.00 on MAI-Transcribe-2-Streaming and $91.80 on Sume STT with 900 jobs.

A department that records five 50-minute classes a week for 36 weeks ends up with 180 recordings and 150 hours of audio. That is 9,000 audio minutes, about $81.00 on MAI-Transcribe-2-Streaming ($0.54 an audio hour, an introductory rate Microsoft says runs through the end of 2026) and $91.80 on Sume STT 1.0 ($0.01 per audio minute) including the one-cent split job that cuts each recording into pieces of 10 minutes or less.
Inputs are assumptions: five classes a week, 36 weeks, 50 minutes each, English. Microsoft's rate is from its announcement and Sume's from the API reference, pricing page and timeline audio docs, all read 2026-10-05.
What the bill looks like
Each 50-minute class is five 10-minute transcription jobs and one split on Sume, so the year is 900 transcription jobs.
| Option | Rate | Total | Jobs |
|---|---|---|---|
| MAI-Transcribe-2-Streaming | $0.54 per audio hour (intro rate through end of 2026) | $81.00 | Streaming; no chunking |
| Sume STT 1.0 (transcription) | $0.01 per audio minute ($0.60 an hour) | $90.00 | 900 jobs of up to 10 minutes |
| Sume timeline audio split | $0.01 flat per job | $1.80 | 180 split jobs, up to 20 ranges each |
| Sume total | $91.80 |
Plan the pipeline once, then forget it
At 180 recordings the work is an automation problem. A queue of jobs with stable idempotency keys is easier to rerun than a live stream that has to be captured correctly the first time. Sume STT 1.0 takes duration_seconds from 1 to 600, so a recording longer than 10 minutes is cut into pieces first. The timeline audio split job takes up to 20 ranges, so one split covers up to 200 minutes of audio.
- Name keys by course, date and chunk, for example
bio101-2026-10-05-3. - Check
GET /v1/jobs/{id}/statusforsume_status; onlycompletedjobs have a result. - A failed or canceled job has no result;
/resultanswers409 job_not_completed. - Add 600 seconds per chunk index to the word timings when you stitch the class transcript back together.
Run it on Sume
This transcribes one class recording; call it from the loop that lists the day's new files.
The recording URL passed in must already be a media.sume.com audio file, because the split job only reads Sume-hosted audio; import it first.
import os, time, requests
API = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
def run(path, body, key):
r = requests.post(API + path, headers={**H, "Idempotency-Key": key}, json=body, timeout=60)
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(2)
if s["sume_status"] != "completed":
raise RuntimeError(s["sume_status"])
return requests.get(job["result_url"], headers=H, timeout=30).json()["data"]["result"]
def transcribe_long(media_url, total_s, key):
ranges = [{"start": a, "end": min(a + 600, total_s)} for a in range(0, total_s, 600)]
split = {"operation": "split", "url": media_url, "ranges": ranges, "output": {"format": "mp3"}}
parts = run("/v1/timeline-1.0/audio", split, key + "-split")["segments"]
texts = []
for i, p in enumerate(parts):
body = {"audio_url": p["audio_url"], "language_code": "en",
"duration_seconds": min(600, total_s - 600 * i)}
texts.append(run("/v1/stt-1.0/transcribe", body, f"{key}-{i}")["text"])
return " ".join(texts)
course, date = os.environ["COURSE"], os.environ["CLASS_DATE"]
text = transcribe_long(os.environ["CLASS_URL"], 50 * 60, f"{course}-{date}")
open(f"{course}-{date}.txt", "w", encoding="utf-8").write(text)
When MAI is the better pick
MAI-Transcribe-2-Streaming is $10.80 cheaper over the school year, and Microsoft gives the $0.54 rate only through the end of 2026, so the cost after that is not yet known. If you also want accessible captions burned into the class video, the same Sume account can render them.
Sources
Related posts
More in Pricing
- Why Seedance 2.5 at 1080p costs 2.46x its 720p price, not 2.25x
1080p has 2.25x the pixels of 720p, yet Seedance 2.5 on Sume costs 2.46x as much. The 1080p tier has its own list rate. Prices for 4, 5, 10 and 30 s.
- Seedance 2.5 at 1080p costs 2.5x the 720p price, not 2.25x
Going from 720p to 1080p on a 10-second Seedance 2.5 clip raises the Sume price from $5.78 to $14.22: pixels grow 2.25x, and the 1080p rate is higher too.
- Seedance 2.5 API pricing: ByteDance lists none, Sume reserves by size
ByteDance's Seedance 2.5 page states no price and says the API is coming via BytePlus ModelArk. On Sume, 10 s costs about $5.78 at 720p and $14.22 at 1080p.
- Does aspect ratio change Seedance 2.5 price? 1:1, 9:16, 21:9, 4:3
On Sume, 16:9, 9:16 and 1:1 price the same for Seedance 2.5; 4:3, 3:4 and 21:9 add about two cents at 5 s. Auto is estimated as 16:9. Full table.
Written by Sume