File size: 4,972 Bytes
1011cdf 8c5ef97 1011cdf 8c5ef97 1011cdf 8c5ef97 1011cdf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | ---
license: cc-by-4.0
base_model: moondream/parakeet-redux
language: [en, de, fr, es, it, pt, ru, uk, hr, sl, lv, lt, et, fi, sv, da, nl, pl, cs, sk, hu, ro, bg, el, mt]
pipeline_tag: automatic-speech-recognition
tags: [coreml, parakeet, tdt, ternary, speech-recognition, apple-silicon]
library_name: fluidaudio
---
# parakeet-redux-coreml
Core ML build of [moondream/parakeet-redux](https://huggingface.co/moondream/parakeet-redux), the ternary
(every encoder weight β {-1, 0, +1}) re-training of `nvidia/parakeet-tdt-0.6b-v3`. Same 25 languages, tokenizer and
output conventions as v3. Encoder is **183 MB** (vs 445 MB for the 6-bit v3 encoder); whole model dir ~220 MB.
The encoder keeps the checkpoint's exact ternary weights: 2-bit palettized codes with the model's own per-row,
per-128 fp16 scales (iOS 18 / macOS 15 `constexpr_lut_to_dense` + `constexpr_blockwise_shift_scale`), so no
re-quantization noise is added. Decoder and JointDecision are re-exported from the redux checkpoint (its post-training
recovery also touched the joint). Preprocessor and vocabulary are the v3 ones.
## Usage (FluidAudio β₯ next release)
```swift
let models = try await AsrModels.downloadAndLoad(version: .redux) // iOS 18+ / macOS 15+
let asr = AsrManager()
try await asr.initialize(models: models)
let result = try await asr.transcribe(audioFileURL)
```
```bash
swift run fluidaudiocli transcribe audio.wav --model-version redux
swift run fluidaudiocli asr-benchmark --subset test-clean --max-files 100 --model-version redux
```
## Files
| File | Notes |
|------|-------|
| `Encoder.mlmodelc` | 183 MB, 2-bit ternary, iOS 18+/macOS 15+, fixed 15 s window (`mel [1,128,1501]` β `encoder [1,1024,188]`) |
| `Decoder.mlmodelc` | RNNT prediction net, fp16, iOS 17+ |
| `JointDecisionv3.mlmodelc` | single-step joint + argmax/softmax + top-64, fp16, iOS 17+ |
| `Preprocessor.mlmodelc` | mel front-end, identical to parakeet-tdt-0.6b-v3-coreml |
| `parakeet_vocab.json` | identical to v3 |
## Compute units
The encoder runs on the **Neural Engine** by default in FluidAudio, like v3, so iOS apps can keep transcribing in the
background (iOS does not allow GPU work there). The first ANE load compiles the 2-bit weights for several minutes
(~7 min measured on an M-series Mac); Core ML caches the result and later loads take seconds. Warm, it runs
45β52 ms per 15 s window.
Pass `encoderComputeUnits: .cpuAndGPU` to skip the long first compile when background execution does not matter: the
GPU decompresses the 2-bit weights in-kernel, loads in about a second and runs β21 ms per window.
Requires iOS 18 / macOS 15 (the 2-bit encoding uses iOS 18 Core ML ops). On iOS 17 / macOS 14 FluidAudio refuses to
load Redux and points to
[parakeet-ultra-coreml](https://huggingface.co/FluidInference/parakeet-ultra-coreml) instead.
## Accuracy
Full LibriSpeech, FluidAudio `asr-benchmark`, default compute units (ANE), both models back to back, M-series Mac. Corpus WER (total edit distance over
total reference words); RTFx = total audio / total processing time.
| Set | parakeet-tdt-0.6b-v3-coreml | parakeet-redux-coreml |
|-----|---------------------------:|----------------------:|
| test-clean (2620 files) | **2.27 %** | 2.71 % |
| test-other (2939 files) | **4.12 %** | 5.12 % |
| RTFx, test-clean | **128.6Γ** | 83.9Γ |
On English this build is 0.44 (clean) and 1.00 (other) points behind v3 β the same gap the upstream card reports
(+0.44 / +1.21). Absolute values are above the card's because FluidAudio decodes in 15 s windows and uses a simpler
text normalizer than the Open ASR Leaderboard; both models are scored identically here.
The Core ML transcripts match a PyTorch fp32 decode of the redux checkpoint to 0.19 % WER, so this is the
checkpoint's behaviour and not a conversion loss.
### FLEURS, 24 languages, 100 samples each
| | parakeet-tdt-0.6b-v3-coreml | parakeet-redux-coreml |
|---|---:|---:|
| mean WER | 14.81 % | **13.06 %** |
| duration-weighted WER | 14.65 % | **12.89 %** |
| languages won | 11 | **13** |
| RTFx | **149Γ** | 134Γ |
(`es_es` is absent from FluidAudio's FLEURS set; both models are scored on the same 24.)
Redux wins the multilingual average by 1.74 points, taking the low-resource languages by wide margins β Latvian
β11.1, Maltese β7.7, Slovene β7.2, Estonian β7.0, Greek β5.2, Lithuanian β5.1 β and conceding the high-resource
ones: French +3.7, Russian +2.6, Dutch +1.9, English +1.9, Polish +1.7, Ukrainian +1.4. The per-language direction
matches the upstream card in 23 of 24 languages.
**Pick this model for multilingual work and for download size; pick
[parakeet-tdt-0.6b-v3-coreml](https://huggingface.co/FluidInference/parakeet-tdt-0.6b-v3-coreml) for English.**
## License
CC-BY-4.0, same as the upstream checkpoint and nvidia/parakeet-tdt-0.6b-v3. Model by moondream (vik); Core ML
conversion by Fluid Inference (conversion recipe: `mobius/models/stt/parakeet-redux/coreml`).
|