rahulrachuri/parakeet-tdt-0.6b-v2-coreai

Model

0

stars

9

commits

1

linked in READMEs

Aug 25, 2026

updated

apple-silicon
asr
automatic-speech-recognition
core-ai
coreai
coreai-aimodel
parakeet
tdt
Browse cluster: On-Device AI Models & CoreAI

README

parakeet-tdt-0.6b-v2 for Apple Core AI

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.

Contents

filewhat 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 manifestsraw fp32 predictor and joint weights, for hosts that implement those two small graphs directly on the CPU
gates_v2.txtverbatim parity gate transcript for this export

Front-end contract

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.

Decode contract

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.

Verification

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.

License and attribution

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.

Contributors

rahulrachuri

9 commits

rahulrachuri/parakeet-tdt-0.6b-v2-coreai

Model

0

stars

9

commits

1

linked in READMEs

Aug 25, 2026

updated

apple-silicon
asr
automatic-speech-recognition
core-ai
coreai
coreai-aimodel
parakeet
tdt
Browse cluster: On-Device AI Models & CoreAI

README

parakeet-tdt-0.6b-v2 for Apple Core AI

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.

Contents

filewhat 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 manifestsraw fp32 predictor and joint weights, for hosts that implement those two small graphs directly on the CPU
gates_v2.txtverbatim parity gate transcript for this export

Front-end contract

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.

Decode contract

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.

Verification

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.

License and attribution

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.

Contributors

rahulrachuri

9 commits