Parakeet TDT 0.6B v3 路 Core ML
Model version 1.0.1 路 FP16
NVIDIA鈥檚 multilingual Parakeet v3, converted from the original checkpoint for offline speech recognition in BuilderHelmAudio. There is no additional training. Encoder, predictor and joint use unquantized FP16 weights/computation; the frontend and floating-point interfaces remain FP32.
The portable model packages target Apple Silicon Macs, M1 and later, on macOS 15+, and iOS 18+. Current physical validation uses an M5 Mac and iPhone 13. Performance on other chips and 8 GB configurations is unmeasured. Packages compile locally; no M5-only compiled model is distributed.
Contents
| Component | Function |
|---|---|
Preprocessor.mlpackage |
FP32 bounded features plus whole-window normalize_w15/normalize_w30; original functions retained |
Encoder.mlpackage, EncoderTail.mlpackage |
Two sequential FP16 Conformer stages; each shares weights across w15 and w30 |
Predictor.mlpackage |
Original two-layer, 640-unit TDT LSTM predictor |
Joint.mlpackage |
All 8,193 token logits and five duration logits |
vocab.json, config.json |
Original 8,192 pieces and checksum-pinned runtime contract |
The bundle is approximately 1.27 GB before download compression. Allow additional storage for Core ML鈥檚 compiled cache. The two window functions share constants; adding the long function increased the bundle鈥檚 size by approximately 3.3%, rather than duplicating the encoder.
Swift
Use BuilderHelmAudio 0.2.0 or later:
import BuilderHelmAudio
let recognizer = try await SpeechRecognizer.load(.parakeetTdtV3)
let transcript = try await recognizer.transcribe(file: audioURL)
print(transcript.text)
The SDK downloads a pinned commit, verifies file SHA-256 values, compiles portable packages and reuses its cache. Reuse the recognizer; requests are serialized and cancellation is cooperative. Active synchronous Core ML calls may finish before cancellation returns. Audio and transcripts stay on the device.
For a folder you manage, pass .parakeetTdtV3 to SpeechRecognizer(directory:model:). The input is resampled to 16 kHz mono. Short requests use the 15-second function; longer requests use the 30-second function. The runtime retains both encoder stages for one window size at a time. First use of a function can incur preparation cost.
The encoder is partitioned into two sequential programs below 1 GB each. The weights and model math are preserved; corresponding short/long stages share constants, keeping the download approximately 1.27 GB.
The FP32 frontend extracts at most 401 raw log-mel frames per DFT prediction, then normalizes the assembled complete 15/30-second window. Pre-emphasis is evaluated in FP32 in the runtime. All weight bytes and the original frontend functions are preserved. This bounded path makes repeated full decoding stable on the hosted macOS 15 CPU runner; frozen features match the validated full-window reference within 0.0000005. The older model 1.0.0 remains immutable for reproduction.
Offline long recordings
There is no fixed SDK recording-length limit. Audio is read in bounded blocks of up to 480,001 samples. Windows retain right context, prefer quiet-pause cuts, and join where overlapping token sequences agree. Emission-frame ownership supplies a fallback. Entirely blank speech-bearing windows can receive bounded subdivision retries. Active, varying audio inside a partially blank window can receive up to four short-window retries. Insertions require matching token anchors near the same audio time and preserve all primary tokens. Predictor state resets per window; the failed state-carry experiment is not shipped.
This is an offline API. It does not provide live partial results, CTC, keyword spotting, aligned word/segment timestamps, subtitles or speaker labels. ctcTranscript is nil and tokens is empty for V3. Internal emission frames are not word alignments.
Accuracy
English uses Whisper EnglishTextNormalizer; other languages use BasicTextNormalizer with NFC and diacritics retained. Errors and empty speech remain in scoring.
| Evaluation | Files | Native NVIDIA CPU FP32 WER | SDK FP16 WER |
|---|---|---|---|
| Reserved multilingual speech | 200 | 14.52% | 14.46% |
| Separate final multilingual confirmation | 75 | 13.44% | 13.21% |
| Pooled unique reserved short recordings | 275 | 14.24% | 14.14% |
| Natural continuous earnings-call excerpts | 29 | 10.74% | 10.78% |
| Separate natural-call confirmation excerpts | 18 | 11.92% | 11.86% |
The 275 recordings were held out from this engineering process; pretraining overlap and speaker disjointness are unknown. The natural English excerpts recover exact adjacent source chunks with no inserted silence or changed source time. They come from a corpus previously used in 110M research; the separate confirmation uses different source intervals from the same calls and is not speaker-independent.
Long20 comprises 20 known LibriSpeech composites. The old V3 overlap policy scored 14.03% WER; the current production SDK on M5 scores 1.83% with bounded partial-blank recovery. This is a regression-set result, not a new held-out accuracy claim. Synthetic multilingual long composites are additionally tested and reuse their short recordings; they are not independent natural conversations. See metrics for counts.
Quantization decision
INT8 block-32, INT8 block-16 and INT4 encoder candidates were evaluated before choosing FP16. The 50-clip selection protocol required pooled drift of at most 0.3 percentage points and every language drift of at most 2 points, with no additional failures/empty speech. The small per-language sample makes the language percentages coarse; thresholds were not relaxed after results were seen.
| Candidate | Selection WER | Worst language drift | Result |
|---|---|---|---|
| FP16 | 12.02% | baseline | Selected |
| INT8, block 32 | 11.91% | +3.57 pp, Maltese | Rejected |
| INT8, block 16 | 12.02% | +2.70 pp, Croatian | Rejected |
| INT4 | 14.68% | +14.29 pp, Swedish | Rejected |
Those weight-only trials used the 15-second export. Integer-weight variants are not included. This release must not be described as INT8/INT4 or as integer-activation inference.
Device and performance scope
The default requests CPU plus Neural Engine for the encoder and CPU for the frontend, predictor and joint. CoreML determines operation placement. V3 GPU mode is supported on Mac; iOS V3 GPU requests fail during loading because long-window diagnostics did not complete reliably. CPU and Neural Engine remain available on iOS. First preparation, system load, memory pressure and power management can affect latency.
The production-SDK iPhone 13 run completed 172 paced requests over 20.0 minutes: 177 ms median, 215 ms p95 and 327 ms maximum, with 0 requests over one second. Repeated transcripts stayed stable and the app remained active. Thermal state stayed at or below fair. All 63 following long-file requests completed. File/PCM reuse, short reuse after long audio and long silence checks passed. Phone WER was 11.98% on the 18 natural confirmation excerpts, 1.83% on Long20 and 13.44% on 25 multilingual long composites. This is paced dictation followed by a bounded long batch; it does not measure all-day thermals or inference energy.
Process footprint omits some accelerator allocations and is not total model memory. Charging-device battery changes cannot measure inference energy. No universal battery, latency or hardware-performance guarantee is made.
Source and reproduction
- Original NVIDIA model
- Checkpoint SHA-256:
3cbdc85877e668ca7b82d0d56770eb1fac76691f55d6b97545e8d61ca588d10d - BuilderHelmAudio exporter: pinned dependencies, full 15-second export, 30-second frontend/encoder export, constant-deduplicating merger, and bounded frontend staging.
Model weights remain NVIDIA CC BY 4.0. Preserve attribution and the modification notice in NOTICE.md. Runtime/exporter source uses its repository license. No audio, private evaluation transcript, device-specific cache or source training checkpoint is included.
- Downloads last month
- 111
Model tree for BuilderHelm/Parakeet-TDT-0.6B-V3-CoreML
Base model
nvidia/parakeet-tdt-0.6b-v3