parakeet-ultra-mlx

moondream/parakeet-ultra in the layout mlx-audio-swift's ParakeetModel reads, at bfloat16. Made for OpenMeet; anyone else running Parakeet through MLX on Apple silicon can use it too.

The upstream model is published for Photon, which this is not. It is the same weights under different names.

What was changed

Nothing was retrained, quantized below bf16, or pruned. The weights are the upstream ones with their names and memory layouts translated:

upstream (HF ParakeetForTDT) here (NeMo/MLX)
encoder.subsampling.layers.N.* encoder.pre_encode.conv.N.*, weights NCHWโ†’NHWC
encoder.subsampling.linear.* encoder.pre_encode.out.*
encoder.layers.N.conv.norm.* encoder.layers.N.conv.batch_norm.*
conv.depthwise_conv / pointwise_conv{1,2} same names, channels transposed (0,2,1)
self_attn.{q,k,v,o}_proj self_attn.linear_{q,k,v,out}
self_attn.relative_k_proj self_attn.linear_pos
self_attn.bias_{u,v} self_attn.pos_bias_{u,v}
encoder_projector.* joint.enc.*
decoder.decoder_projector.* joint.pred.*
joint.head.* joint.joint_net.2.*
decoder.embedding.* decoder.prediction.embed.*
decoder.lstm.weight_{ih,hh}_lN decoder.prediction.dec_rnn.lstm.N.{Wx,Wh}
decoder.lstm.bias_ih_lN + bias_hh_lN โ€ฆlstm.N.bias, summed

Dropped, because the NeMo graph has nowhere to put them: vad_head.* (6 tensors, Photon's voice-activity head) and the 24 conv.norm.num_batches_tracked counters, which are BatchNorm bookkeeping rather than weights. 729 โˆ’ 6 โˆ’ 24 โˆ’ 2 = 697, the tensor count of mlx-community/parakeet-tdt-0.6b-v3, name for name and shape for shape.

config.json and the tokenizer are taken from that reference unchanged. The model card upstream says "same architecture, same tokenizer", and the vocabularies were compared token by token before relying on it: 8192 of 8192 identical.

How it was checked

  • 697/697 tensor names and shapes match the reference exactly.
  • Cosine similarity against the reference across all 697 tensors: median 1.0000, mean 0.9998, every tensor above 0.8. parakeet-ultra is a post-train of the same base, so near-identity is expected; a wrong transpose would read near zero.
  • It transcribes. On a 7-second clip it returns the reference text word for word, punctuation included.

The upstream accuracy gains were not reproduced here. Against mlx-community/parakeet-tdt-0.6b-v3 on synthesized speech โ€” clean, 10/5/0 dB SNR, and German โ€” the two produced identical text in every case except one token at 0 dB, where this model was the worse of the two. That is a statement about the test, not the models: synthesized speech is far easier than the human corpora the Open ASR Leaderboard numbers on the upstream card are measured against, and both models saturate it. Anyone wanting the published gains should measure on real audio.

Throughput was a wash: 176โ€“189ร— real time here against 184โ€“192ร— for the reference, on the same 19-second clip on the same machine.

Licence and credit

CC-BY-4.0, inherited. Credit belongs to moondream for parakeet-ultra and to NVIDIA for parakeet-tdt-0.6b-v3 underneath it. This repository is a format conversion and claims nothing else.

Downloads last month
-
Safetensors
Model size
0.6B params
Tensor type
BF16
ยท
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for selcukkubur/parakeet-ultra-mlx

Quantized
(1)
this model