Hebrish
Experimental Hebrish is an early-stage project, trained on a small code-switching dataset in one speaker's voice. First results are promising. Growing the training data is a long-term effort, and the aim is for every version to get better. Roadmap

Models

Three models, and which to use

Hebrish has three fine-tunes. Parakeet is the main model and what the apps use. Nemotron, trained on the same recordings with the same recipe, is experimental and can stream: text appears while you speak. Whisper Small is a phone-sized model for people who already use FUTO Keyboard on Android. Developer notes and suggested implementations for each are below.

One speaker's voice. All three models are trained on recordings of one person: an English speaker in Jerusalem with an Irish accent. How well they work for other voices has not been tested. Help make them multi-speaker.

White paper

How v1.0 was trained, exported and benchmarked, with every result and its limits: Hebrish v1.0 white paper (PDF, 9 pages).

Side by side

Parakeet fine-tune mainNemotron fine-tune experimentalWhisper Small fine-tune
Base modelnvidia/parakeet-tdt-0.6b-v2nvidia/nemotron-speech-streaming-en-0.6bopenai/whisper-small.en
ArchitectureFastConformer encoder, TDT decoder, 0.6BCache-aware FastConformer encoder, RNNT decoder, 0.6BWhisper encoder-decoder, 244M
How it transcribesThe whole clip, after you stop speakingStreaming, in chunks of 80 to 1,120 ms while you speak (also offline)The whole clip, up to 30 seconds. ACFT lets it process only as much audio as the clip is long
Current checkpointv1.0 · Jachnun: checkpoint 6, run r6-en30, 2026-10-19Checkpoint 2, run r6-nemotron-en30, 2026-10-19Run small-en-en30-acft, 2026-10-17
Trained onRead-Aloud-Voice-Sentences 550bfcaa, 2026-10-19 latest dataRead-Aloud-Voice-Sentences 550bfcaa, 2026-10-19 latest dataRead-Aloud-Voice-Sentences 36845b0d, 2026-10-17 behind
Training dataThe same for both: 339.2 min of code-switched speech (3,224 clips), 95.3 min of the speaker's own English, 48.5 min of LibriSpeech replay. 20 epochs on one L40SEarlier and smaller: Read-Aloud-Voice-Sentences as of 2026-10-17, 1,929 clips (215 min: 152.5 code-switching, 40.5 own English, 22.0 public English). 10 epochs
Validation WER (training) 5.0%6.3% (offline decoding)3.3% (its own validation set)
BenchmarkedYes: v1.0 73.3% term recall, 3.3% WER on the public benchmarkPublic benchmark (offline): 62.2% term recall, 4.7% WER. Streaming at 560 ms: 5.65% CS WER, same as offlineYes, on its own test set: 5.8% code-switching WER in FUTO's runtime. Not comparable with Parakeet's
Formats.nemo, GGUF, ONNX, sherpa-onnx int8, MLX (still PoC-3).nemo only (2.47 GB)whisper.cpp GGML Q8_0 (264 MB), Transformers fp32
Used byThe Hebrish apps, the browser demoNo app yetFUTO Keyboard and FUTO Voice Input (Android), imported by hand
LicenceCC-BY-4.0NVIDIA Open Model License AgreementMIT

The Parakeet and Nemotron validation numbers are raw WER on the same 218-clip validation set, measured during training. Whisper's is on its own, smaller validation set. None of them are benchmark results, and the set is larger than earlier versions' sets, so they do not compare with older checkpoints. Benchmarked results: model card.

Bar charts: on 387 held-out clips, code-switching WER is 11.3% for stock Parakeet, 6.0% PoC-3, 5.1% v1.0, 5.8% Nemotron; held-out terms correct 25.9%, 45.7%, 47.8%, 44.4%; seen test terms correct 27.7%, 63.3%, 72.7%, 68.0%.
Parakeet v1.0 and Nemotron against stock and PoC-3 on the same held-out clips. All results: benchmarks · white paper (PDF).

Which one fits

Parakeet: speak, then insert

The more accurate of the two, and the only one with on-device formats. Use it where text can arrive a moment after you stop speaking:

  • push-to-talk dictation and voice keyboards
  • notes, messages and email
  • transcribing recordings and files

Nemotron: text while you speak

Streaming means the words appear as they are said, with no wait at the end. That opens uses where delay matters more than the last bit of accuracy:

  • live captions for calls, lectures and meetings
  • dictation that shows text as you go
  • voice assistants and agents that need to respond quickly

Whisper Small: inside FUTO Keyboard

The smallest of the three, at 264 MB. Built for FUTO Keyboard on Android, which runs Whisper models:

  • if you already type with FUTO Keyboard and want its voice input to know Hebrew words
  • short dictations; it is weak on clips longer than 30 seconds

Parakeet: suggested implementations

Full model card, results and version history: /model. Every format below is v1.0 except MLX.

WhereRuntimeFiles
Android, Linux, Windows, iOSsherpa-onnx, offline NeMo transducer, greedy search. What the Hebrish apps use; see Hebrish-Dictation for working Kotlin and Python codesherpa-onnx int8, ≈ 661 MB
Browserparakeet.js on ONNX Runtime Web (WASM). How /demo works; about 2.3 GB of memory once loadedONNX int8
Pythononnx-asr or ONNX Runtime directlyONNX fp32 and int8
Desktop and Android apps built on transcribe.cpp (Offline Voice Input, Handy)transcribe.cpp v0.1.3GGUF Q8_0 (730 MB), Q4_K_M (475 MB) for phones with 4 GB of RAM or less
Mac (Apple Silicon)pip install parakeet-mlxMLX still PoC-3
GPU, further fine-tuningNVIDIA NeMo.nemo, 2.47 GB

Audio in is 16 kHz mono. Text out is English, with Hebrew words romanized as in the lexicon, never in Hebrew script.

Nemotron: suggested implementations

experimental streaming measured at 560 ms not in any app

Today it runs in NVIDIA NeMo, from the .nemo file. Offline transcription, from the model card:

import nemo.collections.asr as nemo_asr
from huggingface_hub import hf_hub_download

path = hf_hub_download(
    "Hebrish/Nemotron-Speech-Streaming-EN-0.6B-English-Hebrew-Codeswitching",
    "Nemotron-Speech-Streaming-EN-0.6B-English-Hebrew-Codeswitching.nemo",
)
model = nemo_asr.models.ASRModel.restore_from(path)
print(model.transcribe(["clip.wav"])[0].text)  # 16 kHz mono

Streaming works as for the base model, with cache-aware inference. Set att_context_size = [70, N]:

N01613
Chunk80 ms160 ms560 ms1,120 ms

Smaller chunks mean less delay. NeMo's speech_to_text_cache_aware_streaming_infer.py example script shows the loop; see the base model card.

  • Streaming accuracy, measured at 560 ms. On the held-out split (387 clips) it scored 5.65% code-switching WER while streaming, against 5.81% offline: no measurable loss, although it was fine-tuned offline with full context. The smallest chunks (80 and 160 ms) are not measured; check them for your use.
  • No on-device format yet. sherpa-onnx runs NeMo cache-aware streaming transducers, so an ONNX export for sherpa-onnx is the likely route to phones and desktops. Nobody has tried it on this model yet; it is on the projects board.
  • Licence: the NVIDIA Open Model License Agreement, not CC-BY-4.0. Read it before shipping. Not made or endorsed by NVIDIA.

Nemotron fine-tune on Hugging Face

Whisper Small: suggested implementations

A full fine-tune of openai/whisper-small.en, then FUTO's ACFT procedure. FUTO Keyboard runs Whisper with a dynamic audio context: it only processes as much of the 30-second window as the clip is long, which makes short dictations fast. Stock and ordinary fine-tuned Whisper models break under that setting, repeating themselves or never stopping. ACFT fixes it. The base is English-only, so it never writes Hebrew script.

Training data. Read-Aloud-Voice-Sentences at revision 36845b0d (2026-10-17), the same parent dataset the Parakeet and Nemotron fine-tunes use, but two days earlier: 152.5 minutes of code-switched speech against 339.2 for their latest checkpoints. Whisper Hebrish goes back further: its first version (2025-11-17) was trained on 516 desktop clips in English-Hebrew-Mixed-Sentences, recorded that day. 498 of those clips were later brought into Read-Aloud-Voice-Sentences with their spellings made canonical, so they are part of what every current model trains on.

FUTO Keyboard (Android): download ggml-whisper-hebrish-small-en-acft-q8_0.bin (264 MB) on the phone. Open it with FUTO Keyboard, or go to Settings → Languages & Models → Import resource file, and choose English when asked. Revert to Default on the same screen undoes it. These steps come from FUTO Keyboard's source code and were not checked on a phone.

whisper.cpp, with the same dynamic context FUTO uses (for a 6-second clip, 6 × 50 + 32 = 332):

whisper-cli -m ggml-whisper-hebrish-small-en-acft-q8_0.bin -f clip.wav -bs 5 -ac 332

Transformers:

from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="Hebrish/Whisper-Hebrish-Small-ACFT")
print(asr("clip.wav")["text"])   # English-only model: do not pass language/task

Results from the model card, in FUTO's own runtime (q8_0, beam 5), on a 155-sentence code-switching test set whose Hebrew terms were never trained on:

ModelCode-switching WERUnseen-term recallOwn English WER
FUTO's stock English-244 model11.8%26%4.1%
Whisper Hebrish Small ACFT5.8%50%2.8%

This test set is not the one Parakeet's benchmark uses, so these numbers do not compare with Parakeet's. Clips longer than 30 seconds score much worse (21 to 27% WER). A larger sibling, Whisper Hebrish on whisper-large-v3-turbo (809M), scored 5.2% on the same set at full context. Both are MIT-licensed.

Whisper Small fine-tune on Hugging Face

Links