Akash-Sakala/flan-t5-large-transcript-formatter
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
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).
