tyger-models

On-device delivery tiers for TYGER β€” an open-weight speech decision model for full-duplex voice agents β€” plus TYGER-Step-Student, a distilled turn-taker that reads Parakeet Redux features instead of Nemotron's.

TYGER knows when to respond, keep listening, yield, and backchannel. This repo is the shipping form: the same decisions, at device scale, in the formats iOS and macOS load directly. It holds weights and a download manifest, no inference code.

What's here

Path Model Format Size
coreai/ TYGER chain (encoder + turn heads) Core AI .aimodel, fp16 ~0.77 GB
coreml/ TYGER chain Core ML .mlpackage (encoder fp16, step fp32) ~0.86 GB
mlx/ TYGER chain MLX int8-g16 .safetensors (pre-27 macOS) 1.58 GBΒΉ
pathc/ TYGER-Step-Student (turn heads only) Core ML .mlpackage, fp32 56 MB
manifest.json β€” delivery manifest (sha256 per file) β€”

ΒΉ the artifact stores dequantized fp32 weights.

The tiers are interchangeable exports of nineninesix/tyger's model.safetensors (638M Nemotron + 14M GRU heads); see that model page for the architecture, event semantics (endpoint / barge-in / backchannel), guards and thresholds. pathc/ is a different animal and is documented below.

TYGER-Step-Student (pathc/)

The turn-taker alone β€” 14M parameters (a causal GRU, 3 layers, width 768, plus the input projections and five output heads; the same architecture as TYGER's GRU) β€” retrained to read Parakeet Redux encoder features instead of Nemotron layer-15 features.

Why: a voice agent that runs Parakeet for transcription already computes this model's input. The student shares that encoder pass, so the turn model's delivery cost collapses from a second ~0.8 GB encoder chain to 56 MB of heads, identical across device tiers. Total first-use voice download with ASR + TTS + this model: ~375 MB.

Input / output (per 320 ms hop, same contract as TYGER's step):

Input features Parakeet Redux Preprocessor + Encoder output: 188 rows @ 12.5 Hz Γ— 1,024 dims per stream (user + agent)
Tap contract 15 s right-aligned, zero-padded window (mel_length 1501); run both encoder models CPU-only (ANE/GPU drifts from training features and is not faster)
Per-frame extras frame energy + the previous state
State GRU carried state (3, 1, 768), ~9 KiB per conversation
Output, per frame the turn state logits (listen, hold, speak, backchannel) + hazard, yield, backchannel and endpoint scores β€” 8 numbers

Training

Distilled from TYGER (the fp32 Nemotron chain as teacher) on dual-channel English conversation β€” the dualturn-otospeech-turn-taking corpora, codec-round-tripped as in calls: 96 sessions (4.8 h of frames) for training, 24 sessions (1.3 h) held out for evaluation. Targets are the teacher's per-frame 8-vectors; boundary frames are weighted 3Γ— (MSE, equal group weighting). 250 + 200 epochs, AdamW with cosine decay. One training seed. The rules that turn scores into events (warm-up frames, speech gate, silence fallback) live app-side and are unchanged from tyger-s2s's.

Evaluation (in use)

Scored by replaying held-out conversations through the full chain and comparing behavior β€” did the model act at real turn-ends β€” not frame identity with the teacher. 24 validation sessions, 156 human turn-ends:

Metric Teacher (TYGER) Student
Real turn-ends caught 87% 91% (142/156)
False endpoints / min 6.2 6.7
Backchannel precision / recall 20% / 48% 22% / 44%

Core ML export parity against the training-time framework: max |Ξ”| 1e-5 over 400 carried-state frames.

Limits: English only. The evaluation is recorded conversation replayed through the pipeline β€” not a live voice-agent benchmark β€” and one training seed. Frame-identity with the teacher is ~48%: the student learns the teacher's behavior, not its every twitch. Backchannel recall is modest for teacher and student alike. False-endpoint rates are corpus- and threshold-dependent; tune thresholds in the app.

Intended use

Turn-taking control for full-duplex voice agents on device: deciding when the user has finished, when they cut in, when a backchannel fits, and when to hold the floor. The agent above it sees only text and turn events.

Not for transcription (use the ASR alongside it), not for safety-critical decisions, not for non-English speech.

Delivery format

manifest.json pins every file (name, asset, sha256, bytes) with a url_base. Files are flattened (/ β†’ __); name keeps the bundle-relative path so a client can recreate the .mlpackage/.aimodel directory trees and verify each byte before installing. The format is what an app-side download-on-first-use store consumes: fetch the manifest, fetch only the active tier's files.

License

The coreai/, coreml/ and mlx/ tiers are exports of TYGER, whose weights and files are OpenMDW-1.1; NVIDIA's original Nemotron card, figures and license terms travel with that repo (upstream/, licenses/). This repo's tiers and the pathc/ student are distributed under the same OpenMDW-1.1 terms. See LICENSE.md and NOTICE.md.

TYGER-Step-Student was trained by distillation from TYGER on the dualturn-otospeech-turn-taking corpora; see that dataset's own terms for the training data. Its feature extractor is Parakeet Redux (used, not redistributed here).

Provenance & acknowledgments

Citation

If you use these tiers, please cite TYGER and its training data:

@misc{tyger_2026,
  author    = {{NineNineSix}},
  title     = {{TYGER}: Speech Recognition and Duplex Turn Control},
  year      = {2026},
  publisher = {NineNineSix},
  url       = {https://huggingface.co/nineninesix/tyger}
}

@misc{openyap_2026,
  author    = {{The Agentic Data Company}},
  title     = {{Open Yap 1K}: 1,000 hours of full-duplex natural conversation},
  year      = {2026},
  url       = {https://theagenticdatacompany.com/open-yap-1k}
}
Downloads last month
14
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for donpark/tyger-models

Quantized
(1)
this model