circuit-audio-7b

v1.2 (2026-09-22). The options of a choice question are encoded side by side, so the answer cannot depend on the order they are listed in: 2.9% of answers change under reordering (v1.1: 11.7%), the rest on deliberately ambiguous items; grid .898 / ECE .050. config.json carries "parallel_options": true; serve it with the circuit repo's scorer, which applies the mask. See Versions.

v1.1. Same base, head and recipe as v1.0, with real recordings (LibriSpeech, FSDD) and Kokoro-voiced calls added to the training data. "Audio grid v2" below names the dataset, not the model. See Versions.

A System One decision model for sound: a state that carries a clip (speech or not) plus optional text, typed questions in, calibrated probability distributions out, one forward pass, no transcription. It is the audio member of the circuit family behind decision-circuits, next to circuit-1.7b, circuit-8b, and circuit-vl-4b.

circuit-audio-7b is a LoRA adapter on the language model of Qwen/Qwen2-Audio-7B-Instruct (audio encoder frozen) plus the same pointer readout head as the rest of the family. Each option is wrapped in delimiter tokens and the sequence ends with a decide token; the head scores every option's closing delimiter against the decide token and applies softmax. Qwen2-Audio's vocabulary lacks the box tokens the text models use, so three of its unused timestamp tokens serve as delimiters (recorded in config.json as pointer_tokens).

Results

Audio generalization grid v2: scripted support calls, spoken lists and number readbacks in 27 Kokoro voices and their blends; real LibriSpeech recordings (CC BY 4.0) with questions labeled from the transcript; real people reading digits (Free Spoken Digit Dataset, CC BY-SA 4.0) stitched into account numbers; generated beeps, noise, and silence. 14 cells, every label computed by the code that built the clip. 420 held-out clips, accuracy / ECE (15 bins).

model decidable clips (385) all 420 ms per clip, M-series laptop
Qwen2-Audio-7B-Instruct, raw, letter logits 73.2% / 0.199 68.1% / 0.232 1,260
circuit-audio-7b 94.5% / 0.039 88.8% / 0.073 1,220

Per cell the fine-tune is at 100% on classifying calls and sounds, counting listed items, "does the speaker say the word X", "which sentence was read", and every negation and consistency cell; 96% on real spoken digits; 89% on word order and on comparing two spoken amounts. The raw base sits at 39% to 85% on most of those. Counting beeps remains the weak cell: 44% (raw 8%).

On the 35 clips made undecidable (speech drowned in noise, the clip cut before the key words, two equal amounts) the fine-tune's mean confidence is 0.54 against the raw base's 0.69: still not the flat distribution the label asks for, but the closest in the family.

Caveats: the grid is ours; the scripted speech is synthesized; the real speech is read audiobook prose, not phone calls. Expect a drop on real call audio until real calls are in the mix.

Training

  • Base: Qwen/Qwen2-Audio-7B-Instruct (Apache 2.0), frozen. LoRA rank 16, alpha 32, on the language model's attention and MLP projections only (40M params). Pointer head: two 4096 x 256 linear maps.
  • Data: the audio grid v2 (uv run --group audio python -m s1proto.data.audio_grid in the circuit repo), 1,400 clips, 14 cells, about 8% made ambiguous with soft labels. Speech from Kokoro-82M (Apache 2.0), LibriSpeech dev-clean (CC BY 4.0), and the Free Spoken Digit Dataset (CC BY-SA 4.0). No teacher-model outputs.
  • 1 epoch, batch 2, max 1,024 tokens, lr 1e-4 (LoRA) / 1e-3 (head), bf16, soft-target cross-entropy, early stopping on validation ECE (best at step 300: ECE 0.052, accuracy 84.2%). About 55 minutes on an Apple laptop GPU; no rented hardware.

Versions

tag date what changed
v1.2 2026-09-22 Options encoded side by side: order-stable answers. Same data and recipe as v1.1 otherwise.
v1.1 2026-09 Trains on audio grid v2: scripted calls plus real recordings.
v1.0 2026-09 First release, rendered or scripted data only.

Pin one with revision="v1.0" in huggingface_hub.

Use

Score a JSONL of {"state": {"audio": path, "text": ...}, "question": ...} items with the circuit repo's evaluator (clips are resampled to 16 kHz mono):

uv run python scripts/eval_audio.py data/audio/grid/eval.jsonl --lora runs/circuit-audio-7b --out results/agrid.json

Files: adapter/ (PEFT LoRA, language-model targets), head.pt (pointer head, keys q.weight, k.weight), config.json (base, hidden size, head type, layout, modality, pointer tokens, training args). It is served at api.decisioncircuits.com: send state as {"audio": "<data URI or https URL>", "text": "<optional>"} with "model": "circuit-audio-7b".

Intended use and limits

Research and evaluation of calibrated decision models over recorded speech and sound. Not a production system for decisions that affect people. English only.

License

Adapter and head: Apache 2.0. Base model: Apache 2.0 (Qwen2-Audio).

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

Model tree for jbarney/circuit-audio-7b

Adapter
(22)
this model