0
stars
9
commits
1
linked in READMEs
Aug 25, 2026
updated
Parakeet v2 exported to Apple's Core AI .aimodel format, split into the three graphs a host drives for TDT inference. This is, to my knowledge, the first public Core AI port of v2, which remains the strongest Parakeet for English transcription. Measured end-to-end on an M4 Pro over a 340 minute long-form corpus, the pipeline built on these assets reaches 291x real time at peak (about 284x typical, and roughly 260x under desktop load) at full precision.
The full story of the port, including the measurements behind the performance notes below, is written up in A 10-hour audiobook, transcribed on an iPhone in 5 minutes.
| file | what it is |
|---|---|
parakeet_encoder_float16_L2885.aimodel (1.1 GB) | FastConformer encoder plus projection, fp16, static 2885-frame mel window |
parakeet_predict_float32.aimodel (29 MB) | prediction network single step, fp32, explicit LSTM state in and out |
parakeet_joint_float32.aimodel (2.5 MB) | joint network, fp32, emits 1025 token logits plus 5 duration logits |
bundle_assets/ | tokenizer.json, retagged tokenizer_config.json, and the 128x257 slaney mel filterbank as f32 binary |
pred_*.bin, joint_head_*.bin with manifests | raw fp32 predictor and joint weights, for hosts that implement those two small graphs directly on the CPU |
gates_v2.txt | verbatim parity gate transcript for this export |
The encoder expects log-mel features computed exactly as follows: 16 kHz mono input, preemphasis 0.97, centered 400-sample Hann window inside a 512-point frame with constant padding, hop 160, 128 slaney mel bins with fmax 8000, natural log, then per-bin mean and variance normalization computed over the full 2885-frame window. Audio shorter than the 28.85 second window must be silence-padded at the waveform level before the STFT. Padding the mel matrix with zeros instead will substantially degrade transcripts, because the encoder has no length mask and normalization statistics span the whole window. The encoder emits 361 frames after three stride-2 subsamplings.
Greedy TDT: start the predictor from the blank token with zero LSTM state, take token and duration argmax from the joint at each encoder frame, force duration 1 when the argmax is blank with duration 0, advance the frame pointer by the duration, and feed emitted tokens back through the predictor. Config: vocab_size=1025, blank_token_id=1024, durations=[0, 1, 2, 3, 4].
Performance notes from measurement rather than folklore: pin the predictor and joint graphs to the CPU compute unit (they are dispatch-dominated on GPU), keep the encoder on GPU, and drive back-to-back encoder passes through ComputeStream with two or three outstanding invocations rather than awaited run() calls. Never allow two concurrent run() calls on one loaded function, since GPU outputs interleave silently.
Export gates, all recorded in gates_v2.txt: encoder eager fp32 cosine 1.000006, GPU per-token cosine mean 0.999998 with minimum 0.999970, decoder 82 of 82 token-exact against the PyTorch oracle, and end-to-end 82 of 82 exact on GPU. LibriSpeech accuracy in the shipping configuration: 1.97 percent WER on test-clean and 4.29 percent on test-other across all 5559 utterances, with the caveat that this fixed-window design pays a known penalty on utterances far shorter than the window and beats the published 1.69 percent figure in the 10 to 20 second range. The HF-format checkpoint these assets were exported from is at https://huggingface.co/rahulrachuri/parakeet-tdt-0.6b-v2.
The original model is by NVIDIA, licensed CC-BY-4.0, and this repository redistributes converted weights under the same license with attribution. Changes made: export to Core AI .aimodel format with the precision split and static window described above, with no retraining or weight modification beyond dtype casting.
9 commits
0
stars
9
commits
1
linked in READMEs
Aug 25, 2026
updated
Parakeet v2 exported to Apple's Core AI .aimodel format, split into the three graphs a host drives for TDT inference. This is, to my knowledge, the first public Core AI port of v2, which remains the strongest Parakeet for English transcription. Measured end-to-end on an M4 Pro over a 340 minute long-form corpus, the pipeline built on these assets reaches 291x real time at peak (about 284x typical, and roughly 260x under desktop load) at full precision.
The full story of the port, including the measurements behind the performance notes below, is written up in A 10-hour audiobook, transcribed on an iPhone in 5 minutes.
| file | what it is |
|---|---|
parakeet_encoder_float16_L2885.aimodel (1.1 GB) | FastConformer encoder plus projection, fp16, static 2885-frame mel window |
parakeet_predict_float32.aimodel (29 MB) | prediction network single step, fp32, explicit LSTM state in and out |
parakeet_joint_float32.aimodel (2.5 MB) | joint network, fp32, emits 1025 token logits plus 5 duration logits |
bundle_assets/ | tokenizer.json, retagged tokenizer_config.json, and the 128x257 slaney mel filterbank as f32 binary |
pred_*.bin, joint_head_*.bin with manifests | raw fp32 predictor and joint weights, for hosts that implement those two small graphs directly on the CPU |
gates_v2.txt | verbatim parity gate transcript for this export |
The encoder expects log-mel features computed exactly as follows: 16 kHz mono input, preemphasis 0.97, centered 400-sample Hann window inside a 512-point frame with constant padding, hop 160, 128 slaney mel bins with fmax 8000, natural log, then per-bin mean and variance normalization computed over the full 2885-frame window. Audio shorter than the 28.85 second window must be silence-padded at the waveform level before the STFT. Padding the mel matrix with zeros instead will substantially degrade transcripts, because the encoder has no length mask and normalization statistics span the whole window. The encoder emits 361 frames after three stride-2 subsamplings.
Greedy TDT: start the predictor from the blank token with zero LSTM state, take token and duration argmax from the joint at each encoder frame, force duration 1 when the argmax is blank with duration 0, advance the frame pointer by the duration, and feed emitted tokens back through the predictor. Config: vocab_size=1025, blank_token_id=1024, durations=[0, 1, 2, 3, 4].
Performance notes from measurement rather than folklore: pin the predictor and joint graphs to the CPU compute unit (they are dispatch-dominated on GPU), keep the encoder on GPU, and drive back-to-back encoder passes through ComputeStream with two or three outstanding invocations rather than awaited run() calls. Never allow two concurrent run() calls on one loaded function, since GPU outputs interleave silently.
Export gates, all recorded in gates_v2.txt: encoder eager fp32 cosine 1.000006, GPU per-token cosine mean 0.999998 with minimum 0.999970, decoder 82 of 82 token-exact against the PyTorch oracle, and end-to-end 82 of 82 exact on GPU. LibriSpeech accuracy in the shipping configuration: 1.97 percent WER on test-clean and 4.29 percent on test-other across all 5559 utterances, with the caveat that this fixed-window design pays a known penalty on utterances far shorter than the window and beats the published 1.69 percent figure in the 10 to 20 second range. The HF-format checkpoint these assets were exported from is at https://huggingface.co/rahulrachuri/parakeet-tdt-0.6b-v2.
The original model is by NVIDIA, licensed CC-BY-4.0, and this repository redistributes converted weights under the same license with attribution. Changes made: export to Core AI .aimodel format with the precision split and static window described above, with no retraining or weight modification beyond dtype casting.
9 commits