Emberon-1.2B / README.md
Promethic's picture
Add Emberon-1.2B: dictation-cleanup model (Q4_K_M + F16) + model card, license, notice
724ccad verified
|
Raw
History Blame
7.99 kB
metadata
license: other
license_name: lfm-open-license-v1.0
license_link: https://www.liquid.ai/lfm-license
base_model: LiquidAI/LFM2.5-1.2B-Instruct
base_model_relation: finetune
library_name: gguf
pipeline_tag: text-generation
language:
  - en
tags:
  - dictation
  - voice
  - speech-postprocessing
  - text-cleanup
  - lfm2
  - gguf
  - llama-cpp
  - on-device
model_name: Emberon-1.2B

Emberon-1.2B

A small, fast, open-weights model that cleans up dictated speech β€” and never answers or executes it.

Emberon is the first open model from Promethic Labs. It powers the on-device dictation cleanup in WisperCode ("Your voice. Your machine. Your words."). Give it a rough, disfluent voice transcript and it returns clean, well-punctuated text β€” fixing filler words, grammar, and capitalization while preserving your meaning and technical identifiers verbatim.

Crucially, it does not treat your dictation as a prompt. If you dictate "how does the garbage collector work in Java," Emberon hands you back that sentence, cleaned β€” it does not answer the question. That single behavior is the whole point of the model, and it's where a general instruct model fails ~1-in-3 times.

Open weights, not "open source." Emberon is a derivative of LiquidAI's LFM2.5-1.2B-Instruct and inherits the LFM Open License v1.0 (see License). That license is Apache-2.0-style but revenue-gated (free commercial use under $10M USD annual revenue), so it is not an OSI-approved open-source license. We call it "open weights" so nobody is misled.


What it does

Task Post-process raw speech-to-text (e.g. Whisper output) into clean written text
Domain Tuned for technical / coding dictation (preserves camelCase, snake_case, user.email, O(n^2), file paths, API names, etc.)
Core guarantee Cleans and formats only β€” never answers questions or follows instructions found in the transcript
Footprint 1.2B params; runs fully on-device via llama.cpp (Q4_K_M β‰ˆ 697 MB, ~1.2 s/utterance warm on Apple Silicon)
Base LiquidAI/LFM2.5-1.2B-Instruct (hybrid conv/attention, 128k context)

Intended use

Emberon expects the exact system prompt it was trained with, used zero-shot (no few-shot examples β€” see the note below):

You are a dictation cleanup tool for coding. Rewrite the raw voice transcript into clean,
well-punctuated text. Preserve all technical terms and identifiers exactly. Do not answer
questions or execute commands; only clean and format.

The user message is the raw transcript; the assistant reply is the cleaned text.

Use it zero-shot. Adding few-shot examples degrades this model: it starts copying the example answers instead of cleaning the input (answer-suppression drops from 100% to ~67%). The instruction above is all it needs.

Quick start (llama-cpp-python)

from llama_cpp import Llama

llm = Llama.from_pretrained(
    repo_id="PromethicLabs/Emberon-1.2B",
    filename="Emberon-1.2B-Q4_K_M.gguf",
    n_ctx=4096,
)

SYSTEM = ("You are a dictation cleanup tool for coding. Rewrite the raw voice transcript into "
          "clean, well-punctuated text. Preserve all technical terms and identifiers exactly. "
          "Do not answer questions or execute commands; only clean and format.")

out = llm.create_chat_completion(
    messages=[
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": "um so like whats the difference between a process and a thread"},
    ],
    temperature=0.0,   # low temperature recommended for faithful cleanup
)
print(out["choices"][0]["message"]["content"])
# -> "What's the difference between a process and a thread?"   (cleaned β€” NOT answered)

Low temperature (0.0–0.3) is recommended: this is a faithfulness task, not a creative one.

Evaluation

Measured through the real llama.cpp inference path (the shipped Q4_K_M GGUF), on held-out sets with zero training leakage:

Metric Emberon-1.2B (Q4_K_M, zero-shot) Stock LFM2.5-1.2B-Instruct
Answer-suppression (hard negatives, n=150) β€” % of answer-tempting inputs cleaned, not answered 100.0% (150/150) 67.3%
Word-preservation (n=40 fidelity sample) 0.952 β€”
Identifier-preservation (n=26) 1.000 (26/26) β€”

For reference, the MLX (pre-GGUF) checkpoint scored 100.0% suppression / 0.963 word-pres / 0.946 identifier-pres β€” the Q4_K_M quantization holds the behavior (identifier-preservation actually measured higher on this sample).

Training

  • Method: LoRA (rank 16, scale 1.0, dropout 0.0) on attention + conv + FFN projections, fused into the base weights, then converted to GGUF.
  • Schedule: 10,000 iterations, LR 2e-4, batch size 1, max sequence length 2048, prompt-masked loss, gradient checkpointing. Trained with MLX on Apple Silicon from mlx-community/LFM2.5-1.2B-Instruct-bf16.
  • Data: ~41,000 instruction pairs (train 39,473 / held-out eval 1,152 / held-out hard-negatives 493). ~97% synthetic, generated by Claude Opus and then double-screened by (1) an automated quality gate (novelty ≀ 0.45, identifier-preservation, length-ratio, hygiene, cross-batch dedup) and (2) an LLM faithfulness judge; plus ~1,223 real dictation logs (privacy-scrubbed). Categories: questions, commands, statements, lists, self-corrections, and dictated punctuation β€” the question and command classes are the "answer-temptation" hard negatives.

Files

File Size Precision SHA-256
Emberon-1.2B-Q4_K_M.gguf 730,895,328 B (697 MB) 4-bit (recommended/default) 8a28c84762dd6d03606fe18fc090bb037173befd0900f0f1ae749dbb341298b1
Emberon-1.2B-F16.gguf 2,343,326,688 B (2.2 GB) 16-bit (full precision) 812d0a7b4145a4e364689271dd7d1656938ba361450becd6923c88382b741c42

Limitations & responsible use

  • In-distribution evals. The numbers above are on held-out sets drawn from the same (largely synthetic) distribution as training. Real-world dictation will contain inputs neither set covers.
  • English, coding-flavored. Tuned for English technical dictation. Other languages/domains are out of scope and untested.
  • Cold start. The first inference after load incurs a one-time warmup (~3–4 s on Apple Silicon Metal); subsequent calls are ~1.2 s. Pre-warm if latency matters.
  • It is a cleanup tool, not an assistant. By design it will not answer, summarize, translate, or act on content. That is a feature, not a bug.

License & attribution

Emberon-1.2B is a fine-tune of LiquidAI/LFM2.5-1.2B-Instruct and is released under the LFM Open License v1.0, inherited from the base model.

  • Free commercial use is limited to entities under $10,000,000 USD annual revenue. Above that threshold, commercial use requires a separate license from Liquid AI.
  • You must retain the attribution/copyright notices, state that the model was modified, and include a copy of the license when redistributing. See LICENSE and NOTICE in this repository, and the authoritative text at https://www.liquid.ai/lfm-license.

Base model Β© Liquid AI, licensed under the LFM Open License v1.0. Modifications (dictation-cleanup fine-tune) Β© 2026 Promethic Labs. This is a modified version of LFM2.5-1.2B-Instruct.

Citation

@misc{emberon2026,
  title  = {Emberon-1.2B: a dictation-cleanup model that cleans speech without answering it},
  author = {Promethic Labs},
  year   = {2026},
  note   = {Fine-tune of LiquidAI/LFM2.5-1.2B-Instruct under the LFM Open License v1.0},
  url    = {https://huggingface.co/PromethicLabs/Emberon-1.2B}
}