Upstream: oruk/orukeet at b59c13a.
A tuned version of parakeet-tdt-0.6b-v3 from Oruk AI. Turns speech into text in 25 European languages, works offline, and runs as fast as v3. Give it a 16 kHz mono WAV and it gives you back text with punctuation and capitals. Swap it in anywhere you use v3. Does not stream and does not translate.
Speech to text in 25 European languages, offline. It is
parakeet-tdt-0.6b-v3 with new weights from Oruk AI: same size, same speed,
same 25 languages, slightly more accurate. If you already run v3, point at
this file instead and you are done.
It does not stream and it does not translate.
Licensed CC-BY-SA-4.0. Ported from upstream commit b59c13a, pinned 2026-10-06. Validated against the NeMo reference at transcribe.cpp commit 65856fac on 2026-10-06.
| Quantization | Download | Size | WER (LibriSpeech test-clean) |
|---|---|---|---|
| F32 | orukeet-F32.gguf | 2.51 GB | 1.86% |
| F16 | orukeet-F16.gguf | 1.26 GB | 1.86% |
| Q8_0 | orukeet-Q8_0.gguf | 740 MB | 1.86% |
| Q6_K | orukeet-Q6_K.gguf | 610 MB | 1.86% |
| Q5_K_M | orukeet-Q5_K_M.gguf | 549 MB | 1.83% |
| Q4_K_M | orukeet-Q4_K_M.gguf | 485 MB | 1.95% |
WER on the full LibriSpeech test-clean split (2,620 utterances), batch size 8, timestamps none, language hint en, decoded on cuda. Measured at transcribe.cpp 37273409.
A bit more accurate than v3 on English and on 20 of the 25 languages. parakeet-ultra is more accurate than both on almost everything.
FLEURS test
| Language | Metric | Q8_0 |
|---|---|---|
| bg | WER | 11.14% |
| cs | WER | 10.22% |
| da | WER | 16.58% |
| de | WER | 5.64% |
| el | WER | 33.12% |
| en | WER | 4.43% |
| es | WER | 3.75% |
| et | WER | 15.16% |
| fi | WER | 11.88% |
| fr | WER | 6.17% |
| hr | WER | 11.26% |
| hu | WER | 13.53% |
| it | WER | 3.11% |
| lt | WER | 17.72% |
| lv | WER | 19.53% |
| mt | WER | 17.18% |
| nl | WER | 6.93% |
| pl | WER | 7.35% |
| pt | WER | 4.56% |
| ro | WER | 10.86% |
| ru | WER | 6.70% |
| sk | WER | 8.99% |
| sl | WER | 24.00% |
| sv | WER | 13.26% |
| uk | WER | 6.53% |
cmake -B build
cmake --build build
build/bin/transcribe-cli \
-m models/orukeet/orukeet-Q8_0.gguf \
samples/jfk.wavAudio has to be 16 kHz mono WAV. Convert anything else first:
ffmpeg -i input.mp3 -ar 16000 -ac 1 output.wavIt figures out the language on its own. Add --language de (or any of the
25 codes) if you want to force one.
Same speed as v3.
Compute latency (mel + encode + decode), speedup over realtime in parentheses; profile asr-publication-v2: mean over 3 iterations after 1 warmup.
| Backend | Sample | Q8_0 | Q4_K_M |
|---|---|---|---|
| Metal | jfk (11.0s) | 59 ms (185.68×) | 65 ms (170.12×) |
| Metal | dots (35.3s) | 159 ms (221.73×) | 164 ms (215.85×) |
| CPU | jfk (11.0s) | 304 ms (36.17×) | 305 ms (36.03×) |
| CPU | dots (35.3s) | 969 ms (36.45×) | 1.03 s (34.29×) |
Apple M4 Max: transcribe.cpp d91374b3 on 2026-10-06.
Compute latency (mel + encode + decode), speedup over realtime in parentheses; profile asr-publication-v2: mean over 3 iterations after 1 warmup.
| Backend | Sample | Q8_0 | Q4_K_M |
|---|---|---|---|
| Vulkan | jfk (11.0s) | 454 ms (24.20×) | 455 ms (24.17×) |
| Vulkan | dots (35.3s) | 1.36 s (25.99×) | 1.38 s (25.59×) |
| CPU | jfk (11.0s) | 730 ms (15.07×) | 776 ms (14.18×) |
| CPU | dots (35.3s) | 2.90 s (12.17×) | 2.95 s (11.97×) |
AMD Ryzen 7 PRO 4750U (Radeon RADV RENOIR): transcribe.cpp 8bab590e on 2026-10-06.
Rerun the benchmark yourself:
uv run scripts/bench/run.py --profile --models orukeetCompared tensor by tensor against NeMo running Oruk's own .nemo file,
using the same tolerances as v3. Everything matches and the test transcript
is identical. Batches of 2, 4 and 8 give the same text as one at a time.
| Field | Value |
|---|---|
| Reference | NeMo, oruk/orukeet orukeet-v0.1.0.nemo |
| Dump script | scripts/dump_reference_parakeet_nemo.py |
| Manifest | tests/golden/parakeet/orukeet.manifest.json |
| Tolerances | tests/tolerances/parakeet.json |
| Command | uv run scripts/validate.py all --family parakeet --variant orukeet --model models/orukeet/orukeet-v0.1.0.nemo |
# get the source checkpoint
hf download oruk/orukeet orukeet-v0.1.0.nemo --local-dir models/orukeet
# convert to F32 GGUF
uv run --project scripts/envs/parakeet \
scripts/convert-parakeet.py models/orukeet/orukeet-v0.1.0.nemo \
models/orukeet/orukeet-F32.gguf --repo-id oruk/orukeet
# make the smaller files
uv run scripts/quantize-all.py models/orukeet/orukeet-F32.gguf
# check it against NeMo
uv run scripts/validate.py all --family parakeet --variant orukeet \
--model models/orukeet/orukeet-v0.1.0.nemo
# measure WER
uv run scripts/wer/ingest.py librispeech
uv run scripts/wer/run.py \
--model models/orukeet/orukeet-F32.gguf \
--manifest samples/wer/librispeech-test-clean.manifest.jsonl \
--out reports/wer/orukeet-F32.librispeech-test-clean.b1.jsonl
uv run scripts/wer/score.py reports/wer/orukeet-F32.librispeech-test-clean.b1.jsonlOruk also ships a transcribe-cpp/orukeet-Q8_0.gguf in their own repo.
It was made with this same converter and works too; ours is just rebuilt
from the F32 so all the sizes come from one place.
- No streaming.
- No translation.
- Timestamps are per token, not per word.
- Licence is CC-BY-SA-4.0. The rest of the parakeet family is CC-BY-4.0. If you make a derivative of the weights, it has to carry the same licence.
- Long files go through in one pass. Nothing cuts them up for you.