Instructions to use RobertasTa/lt-ausys with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use RobertasTa/lt-ausys with NeMo:
import nemo.collections.asr as nemo_asr asr_model = nemo_asr.models.ASRModel.from_pretrained("RobertasTa/lt-ausys") transcriptions = asr_model.transcribe(["file.wav"]) - Notebooks
- Google Colab
- Kaggle
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.
- Original model: https://huggingface.co/kristijonas/kmynas-parakeet-lt-v4
- Author: Kristijonas Jakubsonas
- Base:
nvidia/parakeet-tdt-0.6b-v3(CC BY 4.0) · data: LIEPA-3 (CC BY 4.0)
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
Model tree for RobertasTa/lt-ausys
Base model
nvidia/parakeet-tdt-0.6b-v3