Flan-T5-Large Transcript Formatter (distilled, < 1 GB target)
Raw speech-to-text transcript in → clean, formatted transcript out (punctuation, casing, filler/disfluency removal, ITN, homophones, proper nouns, URLs/emails, and layout). The model takes the raw transcript as its only input (no system prompt) and emits the formatted transcript.
Distillation
- Teacher: GPT-OSS-120B → Phase-1 distilled GPT-OSS-20B formatter, which reproduces the L0–L5 + RL curriculum behaviour at ~99.5% adjusted accuracy.
- Student:
google/flan-t5-large(783M, encoder–decoder). - Method: off-policy / sequence-level knowledge distillation (prompt distillation). Trained on (raw → formatted) pairs using the curriculum gold targets (cleaner than propagating the teacher's residual errors).
Data
Sampled from the layered curriculum (L0–L5 + RL), de-duplicated latest-layer-wins, with the per-layer val splits held out and made disjoint from train: 18,129 train / 2,713 validation pairs, 21 formatting categories.
Training
| Hardware | 1× RTX 5090 (32 GB), bf16 |
| Optimizer | Adafactor, lr 1e-4, warmup_ratio 0.03 |
| Batch | 8 × grad-accum 2 = effective 16 |
| Seq length | max 640 tokens (covers the longest pair, 552 tok; zero truncation) |
| Regularization | gradient checkpointing; early stopping (patience 3), best-checkpoint by val loss |
| Result | best val loss 0.005784 @ step 2250 (~epoch 2.0); early-stopped at step 3000 |
Usage
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tok = AutoTokenizer.from_pretrained("Akash-Sakala/flan-t5-large-transcript-formatter")
model = AutoModelForSeq2SeqLM.from_pretrained("Akash-Sakala/flan-t5-large-transcript-formatter")
raw = "i went to the the store yesterday it was closed so i couldnt get the milk"
ids = tok(raw, return_tensors="pt")
print(tok.decode(model.generate(**ids, max_new_tokens=640, num_beams=1)[0], skip_special_tokens=True))
Limitations
A 783M student shows a capacity step-down from the 20B teacher on the hardest L4 layout cases (long email/list blocks); T5 was pretrained mostly at 512 tokens. For an int8, CPU-only deployment (< 1 GB) convert with CTranslate2.
License Apache-2.0 (matches the openai/gpt-oss base and the curriculum dataset).