Looma Dictation SLM (looma-dictation-slm)
A fine-tuned, lightweight Speech Normalization & Disfluency Removal SLM (Small Language Model) built specifically for real-time speech-to-text post-processing and private smart dictation.
Unlike standard conversational instruction-tuned LLMs that mistakenly answer questions when users dictate thoughts (e.g. answering "What is our budget?" with conversational text), Looma Dictation SLM strictly operates as a non-dialogue text restructuring engine. It removes filler words ("um", "uh", "basically"), fixes grammar, restores capitalization, and inserts proper punctuation while faithfully preserving speaker intent.
Model Details
- Model Name: Looma Dictation SLM (
looma-dictation-slm) - Developed by: Twashin ilahi / Looma Team
- Shared by:
tsilahi - Model Type: Sequence-to-Sequence (Seq2Seq) Encoder-Decoder
- Base Model:
google/flan-t5-small(~60M parameters) - Language(s): English (
en) - License: Apache 2.0
- Target Deployment: WebAssembly / ONNX (In-Browser with Transformers.js), Desktop, and Mobile devices (100% offline, $0 cloud cost)
Intended Uses
Direct Use
- Voice Dictation Normalization: Transforming raw, messy automatic speech recognition (ASR) transcripts into clean, punctuated, professional sentences.
- Speech Disfluency Stripping: Removing verbal pause fillers ("um", "uh", "er", "like", "you know", "basically") and stuttered word repetitions ("the the", "we we").
- Zero-Reply Punctuation & Capitalization: Structuring dictated questions ("how can we solve this" $\rightarrow$ "How can we solve this?") without triggering conversational chatbot replies.
Out-of-Scope Use
- Conversational chat or QA assistant (the model is explicitly tuned to never generate conversational answers).
- Long-form creative writing or open-ended text synthesis.
- Non-English audio transcript correction without further multi-lingual fine-tuning.
How to Get Started with the Model
Using Hugging Face transformers in Python
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_id = "tsilahi/looma-dictation-slm"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
raw_spoken_text = "um what is our total budget for the upcoming fiscal quarter"
# Use the task prefix "fix grammar: "
inputs = tokenizer(f"fix grammar: {raw_spoken_text}", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=40)
polished_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("Input: ", raw_spoken_text)
print("Output:", polished_text)
# Output: What is our total budget for the upcoming fiscal quarter?
Examples of Speech Normalization
| Raw Spoken Input (ASR) | Looma Dictation SLM Output |
|---|---|
what is our total budget for the upcoming fiscal quarter | What is our total budget for the upcoming fiscal quarter? |
um how can i reach customer support if the system goes down | How can I reach customer support if the system goes down? |
uh uh basically we need to refactor the database schema | We need to refactor the database schema. |
er i think like you know we should ship this feature by friday | I think we should ship this feature by Friday. |
Training Details
Training Data
Trained on speech-to-dictation paired datasets containing conversational speech transcripts matched with cleaned, punctuated, and grammatically restructured targets. Training examples explicitly cover question formats to neutralize conversational RLHF dialogue weights.
Training Procedure
- Task Prefix:
fix grammar: - Optimizer: AdamW
- Epochs: 5
- Batch Size: 8
- Learning Rate: 3e-4 with linear decay
- Precision: FP32 on Apple Silicon Metal Performance Shaders (MPS)
- Final Training Loss:
0.0080(converged from0.3228)
Environmental Impact
- Hardware Type: Apple Silicon M-Series GPU (MPS acceleration)
- Hours Used: ~0.02 hours (72 seconds total training time)
- Carbon Emitted: Estimated < 0.001 kg CO2 eq. (negligible energy footprint)
Model Architecture & Objective
- Architecture: T5 (Text-to-Text Transfer Transformer) small
- Parameters: ~60 Million parameters (quantizable to ~35MB INT8)
- Objective: Seq2Seq cross-entropy loss over tokenized speech targets with teacher forcing.
Contact & Organization
- Developed for: Looma (Private In-Person Interview & Smart Dictation)
- Organization: Looma AI
- Maintainer:
tsilahi