CoolFace
Modelpublic

mlboydaisuke/Parakeet-TDT-0.6B-v3-LiteRT

sourceHugging Facecc-by-4.0updated 14h agoView on Hugging Face
0likes
Model Card

parakeet-tdt-0.6b-v3 — LiteRT, 30-second window

parakeet_tdt_0.6b_v3_30s_i8_stateful.tflite is nvidia/parakeet-tdt-0.6b-v3 exported with the litert-samples recipe, the same recipe and quantization (dynamic-range int8) as the 5 s file in litert-community/parakeet-tdt-0.6b-v3, with a 30 s input window instead of 5 s.

python compiled_model_api/speech_recognition/convert/convert_to_tflite.py \
  --model nvidia/parakeet-tdt-0.6b-v3 --input_sec 30 --stateful_after 4 --quant drq \
  --sample_audio <wav> --output parakeet_tdt_0.6b_v3_30s_i8_stateful.tflite

litert-samples convert_to_tflite.py at efca5805 (2026-05-15), litert-torch 0.9.4, NeMo 3.0.0. 630 MB, sha256 378935f8897f0c713ad2aa97d939c73c44e9f26546e12c1cd6af9c76f386f06a.

Why a 30 s window

LiteRT-LM's omni/asr engine cuts an utterance into standalone windows of the export's length and decodes each window on its own. On standalone 5 s windows that start mid-utterance, the original model returns no text for 37 % of them (267 of 724 on LibriSpeech test-clean, measured through NeMo in fp32), so the 5 s file loses text on every utterance longer than one window. With a 30 s window, a LibriSpeech utterance is one window.

Numbers

LibriSpeech through LiteRT-LM omni/asr (main@66058c82 plus the patches below), CPU, Open ASR Leaderboard scoring (Whisper normalizer, corpus WER):

filetest-cleantest-other
5 s file (litert-community), engine as at main17.67 %18.25 %
this file, Slaney/power mel (patches 01 + 03)2.69 %10.54 %
this file, plus the decode stop at the end of the audio (patch 06)2.17 %5.35 %
NeMo fp32 (leaderboard, H200)1.92 %3.59 %

Without the decode stop, a short clip is decoded over up to 28 s of zero-padded frames and the TDT decoder adds text there. What remains at 2.17 / 5.35 is clips under 5 s on test-other (10.2 %, 44 of 1419 empty), the model's own behaviour on short standalone input. Every utterance pays a 30 s encoder pass: RTFx 17–19 on an M4 Max (CPU, 4 threads) against 34 for the 5 s file.

Running it through LiteRT-LM

Three patches to LiteRT-LM main@66058c82, in edge-llm-bench/tools/omni-eval/patches (on macOS also 04, the build fix):

  • —01-mel-slaney-power.patch: a librosa-compatible Slaney/power mel filterbank behind melScale / melPower metadata keys.
  • —03-model-metadata.patch: a parakeet-tdt-0.6b-v3-30s entry in omni/asr/model_metadata.json (inputMilliseconds: 30000, logMelSpectro.nFrames: 3000, this file's URL).
  • —06-valid-length-decode-stop-and-cap.patch: TdtDecoder stops at the last encoder frame that carries audio, with NeMo's cap of 10 symbols per step.

The harness, the per-utterance outputs and the notes: NOTES.md.

Signatures

signatureinputsoutputs
encodeargs_0 [1, 128, 3000] log-meloutput_0 [1, 1024, 375]
decodeencoder output, 4 token ids [1, 4], LSTM state 2 × [2, 1, 640]logits [1, 375, 4, 8198], state
decode_1encoder output, 1 token id [1, 1], LSTM statelogits [1, 375, 1, 8198], state

Tokenizer: tokenizer.json from the source repo, as the engine's tokenizerUrl.

License

CC-BY-4.0, as the source model. The recipe is litert-samples (Apache-2.0).