CoolFace
Modelpublic

imYChaudhary22/zen-polish-v3-4bit

sourceHugging Faceapache-2.0updated 6d agoView on Hugging Face
0likes33downloads
Model Card

ZenPolish v3 (4B)

ZenVoice's on-device dictation-enhancement model. Takes the raw, unpunctuated text produced by speech-to-text engines and restores everything dictation loses: punctuation, capitalization, filler removal, spoken numbers, dates, and times. Runs fully on-device on Apple Silicon via MLX — nothing leaves the Mac.

Base model: fine-tuned (LoRA rank 16) from Qwen3-4B-Instruct-2507, then merged in 4-bit MLX. Qwen3 is the starting point; the formatting behavior below is entirely the fine-tune.

Usage

ChatML prompt, thinking disabled:

python
messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": "um yeah so we need to fix this bug by tuesday right check the pull request"},
]
# -> "Um, yeah, so we need to fix this bug by Tuesday. Check the pull request."

The exact system prompt is in the ZenVoice repository (training/common.py).

Evaluation

Measured on ZenVoice's leakage-controlled 234-row eval suite (training/evaluate_v31.py over training/data/eval_v31.jsonl: 7 speech categories, rows appearing in any training mix excluded, ITN values disjoint from training templates), greedy decoding.

MetricZenPolish v3 (4B)ZenPolish v2 (1.7B)Stock Qwen3-4BRaw input floor
WER17.2%30.5%24.4%40.4%
Exact match41.0%23.1%33.3%0.0%
Punctuation F10.7500.6490.7450.000
New-content (hallucination) rate10.8%23.0%17.1%32.5%
Capitalization accuracy95.6%92.4%95.4%76.5%
Sentence-start accuracy80.7%62.1%73.9%0.9%

Per-category WER highlights (v3 vs v2): numbers/dates/money ITN 13.8% vs 37.3%, heavy filler/restart speech 31.8% vs 78.6%, run-on speech 14.4% vs 14.6%, questions 4.9% vs 0.6%.

Scope

  • —English-focused
  • —Formatting and cleanup only — never rewrites meaning, never adds content
  • —Strengths: punctuation, casing, filler/restart removal, spoken money and clock times, dates, percents
  • —Weak spots: over-cleanup on 1-5-word fragments; filler removal on very dense speech is improved but not solved

Training

Pipeline and recipe are in the ZenVoice repo under training/: build_pairs_v31.py (teacher pairs, filler/restart-intensity branch, ITN hard cases), noisifier, synthetic + real ASR pair builders, frozen eval sets, mlx-lm LoRA training (rank 16, ~25k pairs), and the WER no-regression gate. Weights: 4-bit MLX safetensors, 2.1 GB.

License

Apache-2.0, inherited from the Qwen3-4B base.