Downloads · 30 days
0
0% of all-time downloads
smdesai/canary-1b-v2-int8-coreml
canary-1b-v2-int8-coreml is a automatic speech recognition model from smdesai. Use it when you need speech turned into text. It is set up for coreml. The card lists the license as cc-by-4.0.
Memory-optimized CoreML build of NVIDIA canary-1b-v2 for Apple silicon: the encoder's weights are quantized to INT8 per-channel (linear symmetric) and decompressed in flight on the Apple Neural Engine, so the encoder'…
Downloads · 30 days
0
0% of all-time downloads
All-time downloads
8
Public
Repo size
1.7 GB
Likes
0
Public
Click a slice to open those files.
.bin1.7 GB · 100%
From the Hugging Face model README
Memory-optimized CoreML build of NVIDIA canary-1b-v2 for Apple silicon: the encoder's weights are quantized to INT8 per-channel (linear symmetric) and decompressed in flight on the Apple Neural Engine, so the encoder's resident memory halves with the same FP16 activations and Neural Engine placement as the FP16 reference build (canary-1b-v2-coreml). Decoder and cross-KV stay FP16. Accuracy is within noise of FP16.
Base model: nvidia/canary-1b-v2 (NVIDIA NeMo EncDecMultiTaskModel, 1B parameters, 25 European languages, ASR + speech translation). License: the base model is released under CC-BY-4.0; this conversion carries the same license. Please attribute NVIDIA for the model.
| Encoder | INT8 per-channel weights, Neural Engine-resident, 792 MB on disk, ~0.8 GB resident |
| Decoder / cross-KV | FP16 (unchanged), 271 MB + 34 MB |
| Download | 1.10 GB |
| iOS RAM while transcribing | 1.2 GB (measured) vs 1.9 GB for the FP16 build |
| Encoder latency | ~36 ms per 15 s window (M3 Max, warm) |
All 1B v2 builds share the same preprocessor, tokenizer, package layout, and decode contract; only the weight format of the encoder and/or decoder differs. Download sizes are as hosted on the Hub; iOS RAM was measured in an app while transcribing a 6-minute file.
| Repo | Build | Encoder weights | Decoder weights | Download | iOS RAM |
|---|---|---|---|---|---|
canary-1b-v2-coreml | FP16 (reference) | FP16 | FP16 | 1.89 GB | 1.9 GB (measured) |
canary-1b-v2-int8-coreml (this repo) | INT8 encoder | INT8 per-channel | FP16 | 1.10 GB | 1.2 GB (measured) |
canary-1b-v2-pal6-coreml | 6-bit encoder | 6-bit palette, g=16 | FP16 | 0.92 GB | 1.0 GB (measured) |
canary-1b-v2-int8full-coreml | INT8 full | INT8 per-channel | INT8 per-channel | 0.95 GB | 1.0 GB (measured) |
canary-1b-v2-pal6-int8-coreml | 6-bit + INT8 | 6-bit palette, g=16 | INT8 per-channel | 0.77 GB | 910 MB (measured) |
canary-180m-flash-coreml | 180M Flash | FP16 (17L, d=512) | FP16 (4L) | 0.37 GB | 470 MB (measured) |
| File | Contents |
|---|---|
canary_preprocessor.mlmodelc | FP32 mel front end (128 mel bins, 16 kHz mono, 15 s window) |
canary_encoder.mlmodelc | FastConformer encoder, 32 layers, d=1024, subsampling 8 |
canary_cross_kv.mlmodelc | Cross-attention K/V projection, 8 layers (run once per window) |
canary_decoder_kv.mlmodelc | Stateful single-step Transformer decoder, 8 layers, 16384-way LM head |
canary_spe.model | SentencePiece tokenizer (16384 pieces) |
metadata.json | Shapes, decode geometry, seed tokens, and the weight recipe of this build |
The timestamp/ folder is only needed for word-level start and end times. Transcription and translation do not use it, so skip it if you only need text.
It contains NVIDIA's auxiliary CTC model from canary-1b-v2.nemo, a 24-layer Conformer, which NeMo uses for transcribe(..., timestamps=True). Run it on the same 15 s audio window, then force-align the Canary transcript against its scores with a Viterbi pass. Word boundaries have 80 ms resolution.
This repo ships the INT8 timestamp model (602 MB), which is not included in the download size above. INT8 keeps word timing at FP16 parity. Across 227 words in six English and French test windows, INT8 moves 5 words by one 80 ms frame relative to NVIDIA's PyTorch model; FP16 moves 3. No word moves by more than one frame. On a 15-second English clip, all 55 words match NeMo's own timestamps=True output exactly. On an iPhone 17 Pro (iOS 27.2), the INT8 encoder's compute plan matches FP16 (99.9% of estimated cost on the Neural Engine), and a warm 15 s window takes about 31 ms in the encoder, the same as FP16.
| File | Contents |
|---|---|
timestamp/timestamp_preprocessor.mlmodelc | Mel front end: audio_signal [1, 240000] float32 (16 kHz mono, zero-padded) and audio_length [1] int32 (unpadded samples) → mel, mel_length |
timestamp/timestamp_encoder.mlmodelc | Conformer encoder, INT8 per-channel weights, 568 MB (the FP16 timestamp encoder is 1.1 GB) → encoded [1, 1024, 188], encoded_length |
timestamp/timestamp_ctc.mlmodelc | CTC head → log_probs [1, 188, 16385]; column 16384 is blank; frames are 80 ms apart |
timestamp/tokenizer/ | SentencePiece tokenizer and vocabularies for the alignment targets (tokenizer.model is identical to canary_spe.model) |
timestamp/metadata.json | Shapes, blank id, frame duration, and weight recipe |
timestamp/example-word-timestamps.json | Reference word times for a 15 s English test clip |
Load the timestamp models with MLComputeUnits.cpuAndNeuralEngine. Only frames up to encoded_length are valid.
Download without timestamps, or only the timestamp model:
hf download smdesai/canary-1b-v2-int8-coreml --exclude "timestamp/*"
hf download smdesai/canary-1b-v2-int8-coreml --include "timestamp/*"
Model: NVIDIA NeMo team, canary-1b-v2, CC-BY-4.0.