| --- |
| license: cc-by-4.0 |
| library_name: coreai |
| pipeline_tag: automatic-speech-recognition |
| base_model: nvidia/parakeet-tdt-0.6b-v3 |
| tags: [core-ai, coreaikit, parakeet, tdt, rnn-t, transducer, asr, on-device, apple] |
| --- |
| |
| # Parakeet-TDT-0.6B β Core AI |
|
|
| [`nvidia/parakeet-tdt-0.6b-v3`](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3) (cc-by-4.0, 600M) |
| converted to **Apple Core AI** `.aimodel` β the first **transducer / TDT (RNN-T family)** ASR in the |
| [zoo](https://github.com/john-rocky/coreai-models-community). Transcribes β€~29 s clips in 25 |
| European languages as **three stateless graphs + a host greedy loop** (no LLM runtime). |
|
|
| - `parakeet_encoder_float16_L2885.aimodel` β FastConformer encoder + projector (fp16, ~1.2 GB), |
| `mel[1,128,2885] β enc_proj[1,361,640]`. |
| - `parakeet_predict_float32.aimodel` β embedding β 2-layer LSTM β projector (fp32), |
| `token[1,1],h,c[2,1,640] β dec_out[1,640],h',c'`. |
| - `parakeet_joint_float32.aimodel` β `head(relu(enc_frame+dec_out))` (fp32), |
| `β token_logits[1,8193], dur_logits[1,5]`. |
| - `tokenizer.json` (+ `tokenizer_config.json`), `mel_filters_128x257_f32.bin` (librosa-slaney). |
|
|
| Gated **77/77 token-exact** end-to-end vs the HF `ParakeetForTDT` reference, and again token-exact |
| through the Swift **CoreAIKit** `KitParakeetModel`. blank 8192 Β· durations [0,1,2,3,4] Β· 16 kHz. |
|
|
| <!-- gen-cards:use-it begin id=parakeet-tdt-0.6b-v3 (managed by scripts/gen-cards β edit cards.json / QuickStart.swift, not this block) --> |
|  |
| *Parakeet-TDT 0.6B on iPhone 17 Pro β the zoo's coreai-audio app, real speed.* |
|
|
| ## Use it |
|
|
| βΆοΈ **Run it (source)** β the [Transcribe runner](https://github.com/john-rocky/coreai-kit/tree/main/Examples/Transcribe) |
| (GUI + CLI, one app for every speech-to-text model in the catalog): |
|
|
| ```bash |
| git clone https://github.com/john-rocky/coreai-kit |
| open coreai-kit/Examples/Transcribe/Transcribe.xcodeproj |
| # β Run, then pick "Parakeet-TDT 0.6B v3" in the model picker |
| |
| # agents / headless (macOS): |
| cd coreai-kit/Examples/Transcribe |
| swift run transcribe-cli --model parakeet-tdt-0.6b-v3 --audio sample.wav |
| ``` |
|
|
| π» **Build with it** β complete; the glue is kit API, copy-paste runs: |
|
|
| ```swift |
| import CoreAIKit |
| |
| let transcriber = try await KitTranscriber(catalog: "parakeet-tdt-0.6b-v3") |
| let samples = try AudioFile.pcm16kMono(url) // any wav/m4a/mp3 β 16 kHz mono Float |
| let result = try await transcriber.transcribe(samples: samples) |
| // result.text (25 EU languages) |
| ``` |
|
|
| The take-home is [`Examples/Transcribe/Sources/QuickStart.swift`](https://github.com/john-rocky/coreai-kit/blob/main/Examples/Transcribe/Sources/QuickStart.swift) |
| β this exact code as one typed function, no UI; both the runner's GUI and its CLI call it. |
| Recording? `MicRecorder` (kit API) captures mic audio as 16 kHz mono `[Float]` β the record |
| button and permission prompt are your app's own chrome. |
|
|
| **Integration checklist** |
|
|
| - SPM: `https://github.com/john-rocky/coreai-kit` β product **CoreAIKit** |
| - Info.plist: `NSMicrophoneUsageDescription` β only if you record |
| - Entitlements: none needed (macOS) |
| - First run downloads the model β 1.3 GB (Mac) β then it loads from the |
| local cache (Application Support; progress via the `downloadProgress` callback) |
| - Measure in Release β Debug is ~3Γ slower on per-token host work |
| <!-- gen-cards:use-it end --> |
|
|
| ## Use (CoreAIKit) |
|
|
| ```swift |
| let parakeet = try await KitParakeetModel(model: .parakeetTDT) |
| let result = try await parakeet.transcribe(samples: pcm16kMono) // 16 kHz mono Float |
| ``` |
|
|