ExperimentalHebrish 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.
The 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 L40S
Earlier 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
FUTO Keyboard and FUTO Voice Input (Android), imported by hand
Licence
CC-BY-4.0
NVIDIA Open Model License Agreement
MIT
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.
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.
Where
Runtime
Files
Android, Linux, Windows, iOS
sherpa-onnx, offline NeMo transducer, greedy search. What the Hebrish apps use; see Hebrish-Dictation for working Kotlin and Python code
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
experimentalstreaming measured at 560 msnot 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]:
N
0
1
6
13
Chunk
80 ms
160 ms
560 ms
1,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.
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):
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:
Model
Code-switching WER
Unseen-term recall
Own English WER
FUTO's stock English-244 model
11.8%
26%
4.1%
Whisper Hebrish Small ACFT
5.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.