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
- 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.
- Seedance 2.5 aspect ratio price: 9:16, 1:1 and 21:9 vs 16:9
On Sume, a 10-second 720p Seedance 2.5 clip is $5.78 at 16:9, 9:16 and 1:1, and $5.81 at 21:9, because price follows pixels. See the table and the 1080p row.
- Seedance 2.5 fal list vs Sume billable: 5 s $2.31 to $2.89
fal lists a 5-second 720p Seedance 2.5 clip at about $2.31 and a 30-second one at $13.87. Sume bills list x 1.25: $2.89 and $17.34. What the 25 percent covers.
Written by Sume