LT_ausys — Lithuanian ears for Home Assistant and Wyoming (Parakeet-TDT 0.6B, ONNX / int8)

This is not a new model. It is kristijonas/kmynas-parakeet-lt-v4 exported to ONNX and quantized, so that it runs on a CPU without PyTorch or NeMo — nothing more.

All of the work that makes this model understand Lithuanian is Kristijonas Jakubsonas's: he fine-tuned NVIDIA's parakeet-tdt-0.6b-v3 on the LIEPA-3 corpus (3 087 h, Vilnius University) and published it under CC BY 4.0. The export, the quantization recipe, the measurements and the Wyoming server are ours; the model is his.

Versions. v0 (this one, 2026-10-24) is the conversion only. A v1, further fine-tuned on home voice commands (one speaker, a conference speakerphone, radio in the background), is planned and will be measured on the same bench before it replaces v0.

ℹ️ Made with AI: the conversion, the server and this card were written by Claude (Anthropic) together with Robertas, and measured on real hardware.

Why this exists

A Lithuanian voice assistant at home needs ears that are fast on a small CPU. Whisper-family models pay a fixed 30-second-window cost for every utterance: on a Ryzen 7 8845HS a 2-second command takes 3.5 s with Paprika (Whisper large-v3-turbo, int8). A transducer only processes the audio it is given. The same command through this model takes 0.2 s on the same CPU — and it is more accurate on commands, not less.

The original checkpoint is a .nemo file: running it needs NeMo and PyTorch and 5.8 GB of RAM. This repository removes that: onnx-asr + onnxruntime + numpy, 1.6 GB of RAM for int8.

Files

File What Size
encoder-model.onnx + encoder-model.onnx.data Conformer encoder, fp32 (weights in one external file) 42 MB + 2.44 GB
decoder_joint-model.onnx prediction network + joint, fp32 73 MB
encoder-model.int8.onnx encoder, int8 dynamic quantization of MatMul only (see below) 882 MB
decoder_joint-model.int8.onnx ⚠️ the same fp32 decoder under the name onnx-asr expects for quantization="int8" — the decoder is small and quantizing it costs accuracy for 54 MB 73 MB
vocab.txt 8 196 SentencePiece tokens + <blk> (= 8 197 lines)
config.json nemo-conformer-tdt, 128 mel features, subsampling 8

Usage

pip install "onnx-asr[cpu,hub]"
import onnx_asr

model = onnx_asr.load_model("RobertasTa/lt-ausys", quantization="int8")   # CPU: int8 (0.9 GB download)
# model = onnx_asr.load_model("RobertasTa/lt-ausys")                     # fp32 (2.5 GB)
print(model.recognize("komanda.wav"))        # 16 kHz mono 16-bit WAV, or a float32 numpy array + sample_rate=

Output is punctuated, cased Lithuanian, numbers as words — exactly as the original model writes.

Home Assistant / Wyoming: the companion repository RobertasTa/lt-ausys has a small Wyoming speech-to-text server (lt_ausys_server.py, systemd unit, LXC install steps) that serves this model to Home Assistant's Wyoming integration or to any Wyoming client, offline.

Conversion details

Source kmynas-v4-last.nemo (2 509 352 960 B, md5 8e6fd9c9264b48e39df18658b1908230)
Export NeMo 3.0.0 model.export("model.onnx") on CPU, opset 17, legacy TorchScript exporter (dynamo=False) — 14 s
Encoder packing the >2 GB encoder is written by the exporter as 294 per-tensor files; repacked with onnx.save(..., all_tensors_to_one_file=True) into one .onnx.data
Quantization onnxruntime.quantization.quantize_dynamic(weight_type=QInt8, per_channel=True, op_types_to_quantize=["MatMul"]), onnxruntime 1.31.0
Decoder left in fp32
Converted 24 October 2026

Why MatMul only. The usual recipe (quantize everything, encoder QUInt8) made the model worse: on our command exam it dropped from 101 to 96 correct out of 119, and every variant that quantized the convolutions lost 5–19 commands and became 2–4× slower on this CPU. Quantizing only the matrix multiplications keeps the exam at 101/119 and is the fastest variant of all. Quantizing the decoder as well costs one more command (100/119) for 54 MB — not worth it.

What was measured, and what was not

All numbers below: one machine, AMD Ryzen 7 8845HS, 4 threads, greedy decoding, no VAD, Lithuanian forced. Paprika is the same CTranslate2 int8 conversion that runs in wyoming-faster-whisper; tiny is faster-whisper-tiny int8. Normalisation: lower-case, punctuation removed, Lithuanian letters kept; WER = all errors / all reference words.

model FLEURS lt test, 986 read sentences: WER · median · RTF 127 home voice commands (one speaker, speakerphone): WER · median 500 non-speech clips: % with any text · characters invented peak RAM
LT_ausys v0 int8 10.58 % · 0.35 s · 0.035 17.4 % · 0.21 s 40 % · 5 608 2.3 GB
LT_ausys v0 fp32 10.55 % · 0.59 s · 0.059 18.1 % · 0.24 s 34 % · 4 471 3.4 GB
Paprika (Whisper large-v3-turbo, CT2 int8) 11.97 % · 3.90 s · 0.363 23.4 % · 3.55 s 43 % · 19 099 (median 7.2 s per clip) 1.4 GB
faster-whisper tiny int8 99.4 % · 0.79 s · 0.107 102.6 % · 0.73 s 13 % · 1 756 0.3 GB
  • fp32 ONNX reproduces the NeMo checkpoint exactly: 127/127 command transcripts identical, character for character.
  • int8 vs fp32: FLEURS 10.58 % vs 10.55 %; on the command exam (transcript → the assistant's command dictionary) both get 101 of 119 right. The int8 transcripts are bit-identical across two different CPUs (Zen 5 desktop and the Zen 4 mini PC above), unlike faster-whisper tiny int8, whose text changed between the same two machines.
  • The command set is 127 recordings of one speaker. It says how the model behaves on short home commands, not how it generalises across speakers; FLEURS is the neutral read-speech figure.
  • 18 % of FLEURS references write numbers as digits that the speaker never said; this penalises every model that writes numbers as words (all of the above), so the absolute figures are pessimistic for all of them.

Not measured: GPU execution providers, batching, utterances longer than 20 s (the original was trained on ≤ 20 s clips; onnx-asr recommends VAD for long audio), other quantization schemes (static, fp16), and other speakers.

Acknowledgements

  • Kristijonas Jakubsonas — kmynas v4, the model itself, and the honest model card it came with.
  • NVIDIA — Parakeet-TDT 0.6B v3. Vilnius University / raštija.lt — the LIEPA-3 corpus.
  • Ilya Stupakov — onnx-asr, which made the CPU path a few lines long.
  • Open Home Foundation — the Wyoming protocol.

License

CC BY 4.0, the same as the original. If you redistribute or change these files, credit Kristijonas Jakubsonas and say what you changed — as this card does.

Downloads last month
19
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for RobertasTa/lt-ausys

Quantized
(3)
this model