# Parakeet that knows what a makolet is: an English-Hebrew code-switching fine-tune

> Source: <https://dev.to/danielrosehill/parakeet-that-knows-what-a-makolet-is-an-english-hebrew-code-switching-fine-tune-1p9d>
> Published: 2026-10-16 19:04:52+00:00

I live in Jerusalem and speak English, so I talk like this all day:

*"I have to go to Bituach Leumi tomorrow."*

*"Can you grab some bamba from the makolet?"*

*"We're doing Motzei Shabbat at my savta's."*

The sentences are English, but a few of the words are Hebrew, and nobody uses an English

word in their place. This is **code-switching**, and speech recognition handles it badly.

Today I'm releasing

**[Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching](https://huggingface.co/danielrosehill/Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching)**,

a fine-tune of NVIDIA's `parakeet-tdt-0.6b-v2`

that writes those Hebrew words correctly, in Latin letters. It comes as `.nemo`, GGUF, ONNX

and sherpa-onnx, and it runs offline on an Android phone.

|  | Transcript | 
|---|---|
| Stock Parakeet v2 | I want to go to the **Micollette** today to buy my groceries. | 
| **This fine-tune** | I want to go to the **makolet** today to buy my groceries. | 

*Makolet* (מכולת) is the Israeli corner grocery shop. Stock v2 has never heard the word, so

it guesses an English-looking name.

On a held-out test set where **none of the Hebrew words appear in training**:

|  | Stock v2 | This fine-tune (v2) | 
|---|---|---|
| Code-switching WER | 9.9% | **4.8%** | 
| Hebrew words never seen in training, correct | 29% | **50%** | 
| Hebrew words seen in training, correct | 38% | **75%** | 
| Long-form dictation WER (~3 min files) | 7.8% | **4.5%** | 
| My plain English WER | 2.7% | 2.4% | 
| LibriSpeech test-clean WER | 1.2% | 1.1% | 

Code-switching errors halved, and English did not get worse.

Parakeet v2 is one of the most accurate English models small enough to run on a phone. NVIDIA

also released v3, which adds 25 European languages, but in my own dictation v2 was more

accurate for English. Since most of what I say is English, I fine-tuned v2.

v2's tokenizer has no Hebrew characters. Replacing the tokenizer would re-initialise the

decoder and need far more data than I have. So the model writes Hebrew words in **Latin letters, with one canonical spelling per word**: 

Before training, I ran stock v2 over every code-switched recording I had: 1,154 occurrences

of 615 Hebrew terms. It got **28%** of them right.

The 165 terms it always gets right are mostly names, well-known places, and words that are

already English: Shabbat, Pesach, Bamba. The 390 it never gets right are the everyday

vocabulary of life in Israel: *Misrad Hapnim*, *Bituach Leumi*, *tzaharon*, *rofe mishpacha*, 

Earlier attempts used a desktop microphone. This time every new recording was made on the

phone that runs the model (a OnePlus Nord 3), with its built-in microphone, in the rooms

where I actually dictate.

I built a small capture app in the style of Mozilla Common Voice: it shows a sentence, I

read it, play it back, keep it or retake it, and move on. Takes are pushed in batches to a

public Hugging Face dataset. The sentences come from a bank of about 7,700 prompts, each

built around one or two Hebrew terms, and recording is weighted toward the words stock v2

gets wrong.

Everything is public, audio included:

`Read-Aloud-Voice-Sentences`` English-Hebrew-Codeswitching-Sentences`
The code-switching literature is blunt about one risk: fine-tune only on mixed-language

speech and the model's English collapses. In one study, Whisper-small went from 3.4% to

13.3% WER on LibriSpeech after fine-tuning on code-switched data alone

([Liu et al. 2025](https://arxiv.org/abs/2509.24310)). Mixing monolingual data back in fixes

most of it. Even 10% replay of the original domain cuts forgetting sharply

([Pekarek Rosin & Siegert 2023](https://arxiv.org/abs/2307.07280)).

So the training mix, by audio duration, is about:

| Share | Data | 
|---|---|
| ~70% | Code-switching takes | 
| ~20% | My own plain English, recorded on the same phone | 
| ~10% | LibriSpeech replay, with cased and punctuated LibriSpeech-PC transcripts | 

A version is only published if neither my own English nor LibriSpeech gets worse than stock

v2. Neither has so far.

|  | v1 | **v2 (current)** | 
|---|---|---|
| Code-switching training audio | 77 min | 120 min | 
| Plus English | ~30% | 29 min own + 17 min LibriSpeech | 
| Training time | 19 min, one GPU | 23 min, one GPU | 

Both versions and stock v2 are scored on the same test split, so the bars compare like with

like:

What the extra 43 minutes did: words the model has recordings of improved from 67% to 75%,

and phone dictation got slightly better. Words it has never heard stayed flat (52% vs 50%

is a difference of 3 hits out of 113, which is noise). The real gain on unseen words came

in v1. **The model learned how my Hebrew maps to the romanization, not only the training words**, and almost doubled its recall on words it had never heard.

Training is cheap: about twenty minutes on one GPU. The bottleneck is recording.

My own test set is drawn from my own dataset, so I also built a separate, frozen benchmark:

the [English-Hebrew Code-Switching ASR Benchmark](https://huggingface.co/datasets/danielrosehill/English-Hebrew-Codeswitching-ASR-Benchmark),

with a [runner](https://github.com/danielrosehill/English-Hebrew-Codeswitching-ASR-Benchmark)

and a [leaderboard](https://huggingface.co/spaces/danielrosehill/English-Hebrew-Codeswitching-ASR-Leaderboard).

Its headline metric is **term recall**: the share of Hebrew words written with the canonical

spelling. A model can post a low WER and still mangle every Hebrew word.

The fine-tune gets 65.7% of Hebrew terms right, against 45.9% for Whisper Large V3 and 32.6%

for the stock Parakeet it started from, and it has the lowest WER of the group (4.2%). The

benchmark is early and has known issues; all of them are documented on the leaderboard.

| You want to… | Get | Run it with | 
|---|---|---|
| **Dictate on Android** | [GGUF Q8_0](https://huggingface.co/danielrosehill/Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching-GGUF) (730 MB) | [Offline Voice Input](https://play.google.com/store/apps/details?id=dev.notune.transcribe) | 
| Android with ≤ 4 GB RAM | GGUF Q4_K_M (475 MB) | Offline Voice Input | 
| Dictate on a desktop | GGUF Q8_0 | [Handy](https://github.com/cjpais/Handy) | 
| sherpa-onnx apps (Voxtype and others) | [sherpa-onnx int8](https://huggingface.co/danielrosehill/Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching-sherpa-onnx-int8) | sherpa-onnx | 
| Python on CPU | [ONNX](https://huggingface.co/danielrosehill/Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching-ONNX) (int8 / fp32) | [onnx-asr](https://github.com/istupakov/onnx-asr) | 
| GPU, or fine-tune it further | [`.nemo`](https://huggingface.co/danielrosehill/Parakeet-TDT-0.6B-v2-English-Hebrew-Codeswitching) (2.47 GB) | NVIDIA NeMo | 

On Android, [Offline Voice Input](https://play.google.com/store/apps/details?id=dev.notune.transcribe)

is the one voice keyboard I found that loads arbitrary Parakeet weights. Import the Q8_0 file

and set the app as the system voice input, or use a keyboard whose mic key opens it

(SwiftKey, HeliBoard, FlorisBoard). On five held-out clips, Q8_0 matched the full-precision

model word for word.

Or just try it in the browser: the

[demo Space](https://huggingface.co/spaces/danielrosehill/English-Hebrew-Codeswitching-Parakeet-Demo)

runs stock v2 and the fine-tune side by side on your own audio.

Everything is collected on the

[project page](https://huggingface.co/spaces/danielrosehill/English-Hebrew-Codeswitching-Parakeet)

and in the

[Hugging Face collection](https://huggingface.co/collections/danielrosehill/parakeet-v2-english-hebrew-codeswitching-finetune-6ad26d79c70d28a49ed71c78).

v3 is planned at 180 minutes of code-switching audio, with a comparison of 0%, 10%, 20% and

30% English to find how little English the mix can get away with. The sentence bank keeps

growing: place names, hospitals, Israeli brands and acronyms, and the vocabulary of the 2026

election.

**If you speak English in Israel and want this to work for your voice too**, recordings from

other speakers are the most useful contribution there is. Get in touch through

[danielrosehill.com/contact](https://www.danielrosehill.com/contact). For professional

work or collaboration, reach me at [carrotcakeai.com](https://carrotcakeai.com).

The model, the data and the benchmark are all CC-BY-4.0, like the base model.
