Smaug-Audio-Decisions-0.7B

Homepage Hugging Face
License Big tier

Audio decisions that beat a frontier API, in 10 ms.
53.0 Earshot audio skill, ahead of Gemini 3.8 Flash (50.5), from a 744M model small enough to ship inside a phone app.

1. Model Introduction

Smaug-Audio-Decisions-0.7B is the 10 ms audio decision tier by Abacus.AI: a fine-tune of Google's EmbeddingGemma 2 (744M parameters, audio tower included) that answers a typed question about a clip with a calibrated probability per option, in one forward pass, on a GPU, a Mac or fully offline on an iPhone.

9.7 ms per decision on an H100, about 0.3 s on an iPhone 14 Pro Max, 744M parameters, 53.0 Earshot audio skill

It scores 53.0 on Earshot, our 6,671-item audio decision benchmark, ahead of Gemini 3.8 Flash (50.5) and the 3B AudioJev (43.6). Put in front of Smaug-Decisions as a confidence-gated cascade, it matches the big model's accuracy (60.1) at 130 ms instead of 210 ms.

import sys
from huggingface_hub import snapshot_download
sys.path.insert(0, snapshot_download("abacusai/Smaug-Audio-Decisions-0.7B", allow_patterns=["smaug_decide.py"]))
from smaug_decide import SmaugDecide                                   # ships with this repo

model = SmaugDecide.from_pretrained("abacusai/Smaug-Audio-Decisions-0.7B")
model("call.wav", "Has the speaker finished their turn?")               # -> {'Yes': 0.91, 'No': 0.09}

Earshot audio skill vs latency: the fast tier alone, the cascade sweep and Smaug-Decisions alone, with API scores as reference lines

2. Highlights

  • Calibrated: ECE 0.086, against 0.204 for Gemini 3.8 Flash.
  • Fast everywhere: 9.7 ms per decision on an H100, about 0.3 s on an iPhone 14 Pro Max, fully offline.
  • Big-model accuracy at 62% of the latency as a cascade in front of Smaug-Decisions.
  • Ready to load: Transformers weights at the root, int8 Core ML models in coreml/ that score the same as float (53.0).

3. Model Summary

ArchitectureEmbeddingGemma 2 (text trunk + audio and vision towers); linear head at a marker token per option
Total Parameters744M
InputAudio up to 30 s (16 kHz mono), plus a question with 2 or more options (images and text are accepted, see below)
OutputA calibrated probability per option (softmax for one answer, sigmoid for select-all)
HardwareNVIDIA GPU, Apple Silicon, CPU; iPhone via Core ML
Precisionfloat32 weights (loaded in bfloat16 on GPUs); int8 Core ML in coreml/
FormatsTransformers (root), Core ML (coreml/)
Base Modelgoogle/embeddinggemma-2
AdaptationFine-tune with a linear marker head

4. Evaluation

Audio: Earshot

Earshot is our audio decision benchmark: 6,671 items, 17.2 hours of audio, four tracks. Skill: 0 is guessing, 100 is perfect; ECE is the calibration error of the top probability. Every model went through the same harness, the APIs with audio in and JSON probabilities out.

Earshot audio skill per track and calibration error, fast tier vs Smaug-Decisions and APIs

All models tested
model audio skill ECE conversation dynamics ext. turn completion sound & music pilot
Smaug-Decisions (4B) 60.1 0.069 48.2 80.8 66.1 45.2
Gemini 4 Argon (API; 5 of 6,671 refused on safety) 59.4 0.123 49.6 76.5 64.7 47.0
Smaug-Audio-Decisions-0.7B (744M) 53.0 0.086 42.4 65.8 58.0 45.8
Gemini 3.8 Flash (API; 36 refused on safety) 50.5 0.204 48.5 81.8 42.4 29.1
AudioJev (Qwen2.5-Omni-3B) 43.6 0.191 26.7 62.0 57.6 28.2
Gemma 4 E4B-it zero-shot (same prompt) 5.0 0.464 3.6 11.2 5.2 0.1
cascade: this tier, escalate to Smaug-Decisions below 0.9 60.1 0.071 48.2 80.8 66.1 45.2

The cascade

Cascade: the fast tier answers confident audio decisions and escalates the rest to Smaug-Decisions

Mean latency per decision on an H100, including escalations.

confidence threshold escalated to Smaug-Decisions audio skill ECE mean latency
fast tier alone 0% 53.0 0.086 9.7 ms
0.8 46% 59.2 0.071 101 ms
0.85 52% 59.4 0.072 114 ms
0.9 60% 60.1 0.071 130 ms
0.95 72% 60.2 0.069 153 ms
Smaug-Decisions alone 100% 60.1 0.069 210 ms

Text and images

The model is built for audio: text decisions are close to chance (6.9 skill on the public Jev Decision Index text sample) and image decisions are not benchmarked. It knows this (at 0.9 it escalates 98% of text questions), so a cascade answers text at Smaug-Decisions' level.

On phones: int8

The phone apps run this model with int8 weights and an int8 embedding table (Core ML from coreml/ on iOS, int8 ONNX on Android). It loses nothing measurable: on Earshot the Core ML int8 weights score 53.0 skill with ECE 0.090, against 53.0 and 0.086 in float, and the two pick the same answer on 99.6% of items (PyTorch replica of the int8 weights, same harness).

Memory and speed

Fast-tier latency per decision on H100, Mac and iPhone

On an iPhone 14 Pro Max (6 GB) the Cascade app answers in 0.27-0.37 s per decision, fully offline. App size with this model inside: iOS 602 MB, Android about 582 MB (Play download, arm64).

5. Training Approach

  • Marker readout. Each option is preceded by a marker token (<unused0>); a linear head scores the hidden state at each marker (softmax for one answer, sigmoid per option for select-all). One prefill, no decoding.
  • Decision-tuned and calibrated. Fine-tuned from EmbeddingGemma 2 on typed decision tasks, to sit in front of Smaug-Decisions: it answers the confident cases and hands the rest up.

6. Limitations

  • Audio first: text and image questions go to Smaug-Decisions; the cascade routes them automatically.
  • Per request: one clip of up to 30 s (the phone app records 10 s).
  • Thresholds: set the escalation threshold on your own data.

7. Usage

pip install "transformers>=5.20" torch soundfile pillow huggingface_hub
import importlib.util
from huggingface_hub import snapshot_download

def load(repo):                                                   # each tier ships its own smaug_decide.py
    path = snapshot_download(repo, allow_patterns=["smaug_decide.py"]) + "/smaug_decide.py"
    spec = importlib.util.spec_from_file_location(repo.split("/")[1].replace("-", "_"), path)
    mod = importlib.util.module_from_spec(spec); spec.loader.exec_module(mod)
    return mod.SmaugDecide.from_pretrained(repo)                  # CUDA, Apple Silicon (MPS) or CPU, picked automatically

fast = load("abacusai/Smaug-Audio-Decisions-0.7B")
p = fast("call.wav", "Has the speaker finished their turn?")                                # -> {'Yes': 0.91, 'No': 0.09}
fast("song.wav", "Which genre is playing?", ["rock", "jazz", "classical"])                   # choice -> probabilities sum to 1
fast("room.wav", "Which sounds are present?", ["speech", "music", "alarm"], multi=True)      # select-all -> one probability each

if max(p.values()) < 0.9:                                                                   # the cascade: 60.1 at 130 ms on an H100
    big = load("abacusai/Smaug-Decisions")
    p = big("call.wav", "Has the speaker finished their turn?")

from_pretrained downloads about 3 GB. Any runtime can reproduce the readout: render the prompt with smaug_decide.render, then logit_k = head.weight @ h[marker_k] + head.bias at each marker (head.pt), softmax or sigmoid.

iPhone / Core ML (coreml/, all int8 unless noted):

file what it is
trunk_L512_int8, trunk_L1024_int8 the trunk for prompts up to 512 or 1,024 tokens
audio_10s_int8, audio_30s_int8 the audio encoder for 10 s or 30 s clips; audio_conv_10s_fp16 + audio_stack_10s_int8 is the 10 s encoder split for the Neural Engine
embed_tokens_fp16.bin the token-embedding table
embed_tokens_int8.bin + _scales.bin the same table at half the size (int8, one float32 scale per row), as the apps ship it
head.json, readout.json the marker head and readout settings

The iOS app (recording, log-mel features, prompt and readout) is at github.com/abacusai/Smaug-Decisions-Mobile.

8. License

Apache 2.0, the same license as the base model, EmbeddingGemma 2.

9. Citation

@misc{abacusai2026smaugaudio,
  title  = {Smaug-Audio-Decisions-0.7B: a 10 ms calibrated decision tier},
  author = {Abacus.AI},
  year   = {2026},
  url    = {https://huggingface.co/abacusai/Smaug-Audio-Decisions-0.7B}
}

10. Contact Us

If you have any questions, please reach out at Abacus.AI.

Downloads last month
2
Safetensors
Model size
0.7B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for abacusai/Smaug-Audio-Decisions-0.7B

Finetuned
(155)
this model

Collection including abacusai/Smaug-Audio-Decisions-0.7B