Supertonic 3: Core ML (Neural Engine) and smaller ONNX files
Unofficial derived files for Supertone/supertonic-3, which is Copyright (c) 2026 Supertone Inc. This repository is not affiliated with or endorsed by Supertone. The files are not a standalone model: the duration predictor, configs and voice styles are not included; use Supertonic's own files for those.
License
Derivative of Supertonic 3, released under the BigScience OpenRAIL-M License (LICENSE is the same text as in the original repository). The use-based restrictions in its Attachment A apply to these files, and anyone who redistributes them or builds on them has to pass those restrictions on. The changes made to the original model are described under "How they were made".
Files
| Path | What | Size |
|---|---|---|
coreml/vector_estimator.mlmodelc |
Core ML (iOS 18+), int8 weights (per output channel), float16 compute. One multifunction model with 6 shape buckets (text ids Γ latent frames: 64Γ32, 128Γ64, 256Γ128, 384Γ256, 512Γ384, 512Γ512); weights shared between buckets. | ~97 MB |
coreml/vocoder.mlmodelc |
Core ML (iOS 18+), float16, one function per latent-length bucket. | ~51 MB |
int8/vector_estimator.onnx |
ONNX, per-channel int8 weights for ONNX Runtime's CPU kernels. The 1Γ1 convolutions are rewritten as MatMul (exactly equivalent) and quantized dynamically. | ~66 MB |
fp16/text_encoder.onnx, fp16/vocoder.onnx |
ONNX with the weights stored as float16, each followed by a Cast to float32 that ONNX Runtime folds at load: they run exactly like the float32 models, from half the file. | ~18 MB, ~51 MB |
How they were made
- Core ML: ONNX β onnx2torch β
jit.traceβ coremltools 8.3 (ML Program, float16, iOS 18 target), compiled to.mlmodelc. Before each of the vector estimator's 28 edge pads, padded latent frames are filled with the last real frame, so bucketed output equals unpadded output. The vector estimator's weights are then quantized withlinear_quantize_weights(linear symmetric, per channel, int8). - int8 ONNX:
onnxruntime.quantization.quantize_dynamic, per-channel QInt8, MatMul weights only. - float16 ONNX: float32 initializers of 1024+ values stored as float16 behind a Cast.
Source: Supertonic 3 at revision 3cadd1ee6394adea1bd021217a0e650ede09a323.
Quality
Judged by Whisper base.en word error rate on 10 sentences Γ 2 noise seeds, with the same noise per clip:
- Core ML pack: WER 0.5% (float16 Core ML: 0.8%), no cut-off endings, speech length unchanged, 64Γ real time on an Apple M4's Neural Engine (float16: 54Γ). One denoising step is 0.56% from float32 (float16: 0.43%).
- ONNX on the CPU (int8 vector estimator, float16-stored text encoder and vocoder): WER 0.5%, same as float32. The vocoder's output is 54 dB SNR from float32's, the text encoder's embedding 0.04% off.
- Rejected: int8 vocoder weights (Core ML and ONNX), at 16β17 dB SNR, which is audible.
Not measured on a phone yet.
Integrity
SHA256SUMS lists the SHA-256 of every model file. From the root of this repository:
shasum -a 256 -c SHA256SUMS
Model tree for singgihnn/supertonic-3-coreml-int8
Base model
Supertone/supertonic-3