Chatterbox Nano for Core AI
English Chatterbox Nano conversion for OpenReader and Apple's Core AI runtime.
Official weights revision 71ccd1d0081b430592cea481f4307e764e07bc64; Chatterbox
source revision 5de7a54aa4e5e2baadb0182dde554908b48b85c2 (nano=True loader).
The official default voice, tokenizer, MIT notice and Perth watermark are
included. No personal recordings are included.
T3 has twelve layers, hidden width 768 and twelve attention heads. Projections,
host embeddings, K/V storage and decode attention use FP16. Normalization,
residuals, prefill attention and output logits use FP32. There is no per-token
palette expansion. Ordinary cache inputs/outputs avoid the large attention
errors observed with Core AI mutable state under ANE preference. Prefill and
decode share one asset so the GPU path does not duplicate stored weights.
runtime.json specifies the exact ABI and stage precision.
The checkpoint-matched S3 meanflow decoder and Perth assets remain FP32. Their
trained decoder is byte-identical to Turbo's official meanflow checkpoint. The
pinned source uses two flow steps, preserved here despite the upstream model
card's one-step wording. This pack changes no other OpenReader model's precision.
Transformer storage is about 172 MiB and host embeddings about 95 MiB. The full
runtime is about 818 MiB, including the 538 MiB decoder and 9 MiB watermark.
Download size is distinct from resident memory. files.json gives exact byte
sizes and SHA-256 checksums. The cache has 1024 positions; the graph supports
128 text tokens and 256 speech tokens. OpenReader uses at most 32 text tokens
per synthesis pass, rejects missing EOS and chunks longer narration. Each pass
gets fresh K/V, seeded from the prepared voice-only prefix.
Qualification and compute placement
OpenReader selects GPU preference for T3 and S3 on iPhone. On a physical A17 Pro
in Release, the same accurate split T3 graph averaged 22 ms/token on GPU versus
107 ms/token under ANE preference, with sampled transformer-only footprints
339 MB versus 1.14 GB. The smaller shared-weight GPU pack passed the 64-position
comparison with all top predictions matching and max logit error 0.012289,
below the unchanged 0.02 gate. Its retained-cache run averaged 9 ms/token.
Preferences do not prove which hardware executes each operation; actual ANE
placement was not established. These are not wiped-container cold-start figures.
An independent public fixture records upstream Torch sampling, S3 and Perth.
Portable CDF draws lie inside shared upstream/native bins; expected speech tokens
and waveform are not replaced with native output. Native Mac and iPhone checks
enforce exact sampled tokens, PCM max error below 0.002 and identical prepared
voice reuse. Full-audio precision measurement records rounded logit drift;
it does not claim the FP32 export-parity logit gate of 0.005 passes.
mac-results.json and iphone-results.json state each measurement's scope.
Normal short-document playback also completed on A17 Pro: 4.68 seconds of audio,
first audio after about 5.3 seconds of synthesis/buffering, and about 770 MB
sampled full-pipeline footprint. That run used standalone prefill/decode assets;
the selected pack shares their weights. A four-segment passage using that pack
completed 23.52 seconds of playback, with first audio after 6.22 seconds and
32.62 seconds total including 2.64 seconds of preparation. This is not a guarantee of realtime
performance for arbitrary books or a broad perceptual quality evaluation.
This is a Core AI .aimodel pack, not Core ML, ONNX or a hosted inference
endpoint. Core AI is unavailable on the iOS simulator. Conversion and runtime
sources are in OpenReader, under
tools/chatterbox-nano and OpenReaderKit/Sources/Inference/ChatterboxTurbo.
See PROVENANCE.md for export details and source locks. Official weights are
from Resemble AI.