LC-lfm2.5-350m — dictation cleanup with course-correction

A small, fast on-device voice-dictation cleanup model: it turns messy spoken transcripts into clean written text, and — unlike most cleanup models — it honors spoken self-corrections ("book the 7pm flight no wait the 9pm one" → "Book the 9pm flight.").

Built for MacWispr. This repo ships the fused model (LoRA baked in) so you can pull and run it directly; the standalone LoRA adapter is under lora-adapter/.

  • Base: juanquivilla/sotto-cleanup-lfm25-350m-mlx-5bit (LFM2.5-350M, MLX 5-bit)
  • Method: LoRA (8 layers, 600 iters, LR 5e-6), fused into the base
  • Runtime: MLX (Apple Silicon) — also loadable in Swift via mlx-swift-lm (LFM2)

What it does

  1. Removes fillers and stutters ("um", "uh", "that that" → "that").
  2. Honors self-corrections — drops the retracted item, keeps the replacement, and keeps the rest of the sentence.
  3. Writes numbers as digits ("three seventy-five" → "375").
  4. Fixes light grammar/punctuation/capitalization without summarizing.

Prompt format

Trained on a raw completion format (not a chat template):

### Input:
{raw dictation}

### Output:

Usage (mlx-lm)

from mlx_lm import load, generate
from mlx_lm.sample_utils import make_sampler

model, tok = load("vasanth009/LC-lfm2.5-350m")
raw = "set the oven to three fifty no wait three seventy five for the lasagna"
prompt = f"### Input:\n{raw}\n\n### Output:\n"
out = generate(model, tok, prompt=prompt, max_tokens=64, sampler=make_sampler(temp=0.0))
print(out.split("###")[0].strip())
# -> Set the oven to 375 for the lasagna.

To apply the LoRA to the base yourself instead of using the fused weights:

mlx_lm.generate --model juanquivilla/sotto-cleanup-lfm25-350m-mlx-5bit \
  --adapter-path lora-adapter --prompt "### Input:\n...\n\n### Output:\n"

Honest evaluation (leak-free held-out)

Graded by an LLM judge on a 94-item held-out set generated on topics disjoint from training (0/94 overlap with the training data — verified). This is a real generalization test, not memorized phrases.

Model Course-correction Light cleanup Preserve (anti over-edit)
Base (Sotto LFM2.5-350M) 10/16 12/12 6/8
This model (+LoRA) 13/16 12/12 7/8

Course-correction is the headline improvement (10→13/16). Light cleanup was already strong (tie). Latency ~50–100 ms/utterance on Apple Silicon.

Limitations

  • The base is 5-bit quantized; rare token corruptions can occur ("simmer" → "smear"). A higher-precision base would reduce this.
  • 350M parameters — capable for cleanup, not a general assistant. It only cleans text; it does not answer questions in the transcript.
  • Occasionally over-shortens a long correction (drops a trailing clause).

Provenance

Training data (course-correction / light-cleanup / preserve pairs) was generated and QC-filtered with an LLM on fresh topics, with a hard leakage gate against the held-out eval. See the MacWispr repo's bench/polish_finetune/ for the full, reproducible pipeline.

Downloads last month
252
Safetensors
Model size
66.5M params
Tensor type
BF16
·
U32
·
MLX
Hardware compatibility
Log In to add your hardware

5-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for vasanth009/LC-lfm2.5-350m