#5461: TTS Can't Pronounce Hebrew Inside English

Your TTS reads Hebrew words with English phonetics. Here's why — and why the obvious fix doesn't work yet.

Featuring
Listen
0:00
0:00
Episode Details
Episode ID
MWP-5644
Published
Duration
21:13
Audio
Direct link
Pipeline
V5.2
TTS Engine
chatterbox-regular
Script Writing Agent
DeepSeek 4.1 Flash

AI-Generated Content: This podcast is created using AI personas. Please verify any important information independently.

Multilingual TTS models aren't multilingual the way listeners assume. They don't hold several languages in parallel and route each word to the right one. A single language identifier is applied per generation call, prepended as a token, and from that point every word in the sequence is processed under one set of phonetics. Pass Hebrew and the English words get Hebrew rules. Pass English and the Hebrew words inherit English orthography. The model isn't confused — it was never asked the question.

That explains the split between words that survive and words that don't. "Shabbat" is attested all over English text, so a phoneme mapping for it exists in the training data and the output is recognizable. "Pinui binui" is not an English loanword, so the model applies Latin orthography rules to a string it has no reason to know, and a Hebrew speaker hears something ridiculous. The failure is a frequency failure, and it's documented in an open issue on the Chatterbox repo.

A listener's proposed fix — classify, map to Hebrew script, re-synthesize with the Hebrew language parameter — has precedent, but the difficulty is inverted from what he assumed. The mapping step is mature: Phonikud converts Hebrew to fully specified IPA and handles mixed English-Hebrew with a fallback, running as a real-time ONNX model at around twenty megabytes. The detection step is the gap. No standalone Hebrew-in-Latin-script detector exists. The closest academic work detects transliterated foreign words inside Hebrew script — the mirror image. The asymmetry is the tell: Latin words hiding in Hebrew was a medical NLP and named-entity problem with decades of attention. Hebrew hiding in English is a content-creation problem, and until recently nobody had a reason to build for it.

The most useful reframing is a frequency heuristic: don't ask whether a token is Hebrew, ask whether it's rare in English and structurally plausible as Hebrew. That's a much smaller question, and it composes — run the cheap filter first and send only survivors to something more expensive. Meanwhile, the elegant shortcut of feeding IPA directly is blocked: Chatterbox's IPA characters exist in the tokenizer vocabulary, but the speech they produce isn't usable. The symbols are sitting right there.

Downloads

Episode Audio

Download the full episode as an MP3 file

Download MP3
Transcript (TXT)

Plain text transcript file

Transcript (PDF)

Formatted PDF with styling

#5461: TTS Can't Pronounce Hebrew Inside English

Corn
Here's a question for you. What does a language model actually know?
Herman
That's the whole episode, is it?
Corn
It's the front door of it. Daniel sent in a prompt about a problem he keeps running into, and the problem is that the model knows less than it looks like it knows. He lives here, so a lot of what he writes and a lot of what we record naturally has Hebrew in it. Some of it sails through fine. Shabbat comes out of the synthesizer sounding like Shabbat. But something like pinui binui, which is not a word English has ever had a reason to learn, gets read out with English pronunciation rules, and to a Hebrew speaker it sounds ridiculous.
Herman
Pinui binui. Is that the...
Corn
Demolition and reconstruction. Urban renewal, essentially, though I'm told the phrase has a particular flavor here that the English doesn't carry.
Herman
It does. It's a phrase with a reputation.
Corn
So Daniel's proposal. Run a lightweight classifier over the generated script. Its job is to find Hebrew words that have been written out in Latin characters. Then a second model, or maybe the same one, maps those words into Hebrew characters. Then you hand the whole thing to Chatterbox Multilingual, keep the episode in English, but drop the Hebrew language parameter around those specific words so they get pronounced properly.
Herman
And he flagged his own worry.
Corn
He did. He said he can already see the concatenation problem coming. If one sentence has code switching in it, you're generating three separate clips and stitching them together just to get that one sentence out, and you have to make sure there's a decent break between them. He asked whether there's a more elegant way to handle this in multilingual TTS, and then answered himself, no, probably not.
Herman
Then the bigger question.
Corn
Then the bigger question, which is the one I actually want to spend the episode on. Is this viable for anybody generating non-form audio content with TTS, where the material is mostly one language but predictably contains elements of another? And he asked for specific classifiers or small models that would fit the job.
Herman
He also said we've looked at this before and concluded it was too hard to engineer.
Corn
He did. And he thinks the small-model ecosystem has moved enough that it's worth reopening.
Herman
It has.
Corn
So let's take this apart, because the research says the problem is real, the fix is mostly right, and the one piece Daniel is counting on doesn't actually work yet.
Herman
Start with why it happens at all, because the answer tells you what the pipeline can and can't fix. Multilingual TTS models aren't multilingual in the way people assume. They don't hold several languages in parallel and route each word to the right one. You give the model a single language identifier per generation call, and it prepends a language token to the text, and from that point on every word in that sequence is processed under one set of phonetics. Chatterbox Multilingual takes a language_id. You pass it Hebrew, you get Hebrew phonetics applied to everything, including the English words. You pass it English, and the Hebrew words inherit English rules.
Corn
So the model isn't deciding anything.
Herman
It's not deciding. There's no per-word routing happening. The language tag is a global instruction for the whole utterance, and everything downstream obeys it. That's why the failure is so consistent. It's not that the model gets confused. It's that it was never asked the question.
Corn
And Shabbat versus pinui binui.
Herman
That's a frequency story, not a bug. Shabbat is attested all over English text. It's in the training data, so the phoneme mapping for it exists. The model has heard it, in effect, thousands of times, in English contexts, and it produces something a Hebrew speaker recognizes. Pinui binui is not in that data. It's not an English loanword. So the model does the only thing it can do, which is apply English orthography rules to a string of Latin letters, and you get something that sounds like a bad impression.
Corn
The model is being consistent. It's just being consistent about the wrong language.
Herman
And this is documented. There's an open issue on the Chatterbox repo, number 346, opened in November, still open as of January. The person who filed it put it plainly. Foreign words and phrases inherit the accent and phonetic rules of the specified language. That's the whole phenomenon in one sentence.
Corn
What's the architecture underneath, for people who want the shape of it?
Herman
Chatterbox Multilingual is five hundred million parameters, twenty-three languages including Hebrew, and it's two stages. A T3 autoregressive stage and an S3Gen diffusion decoder. The autoregressive part is going to matter later, so hold onto it.
Corn
Noted. So the problem is established. Now the interesting part, which is that Daniel's instinct has precedent, and the precedent is not where he thinks it is. He thinks the classifier is the easy bit and the mapping is the hard bit. It's the other way around.
Herman
It's completely the other way around. The mapping step is mature. There's a project called Phonikud that converts Hebrew text to fully specified IPA, and it handles mixed English and Hebrew with a fallback, and it runs as a real-time ONNX model. There's a follow-up called Renikud that reports eighty-five percent word accuracy on the Hebrew G2P benchmark. Twenty megabytes. ONNX Runtime. No PyTorch dependency. That's a solved problem sitting on a shelf.
Corn
And the classifier.
Herman
The classifier is the gap. There is no standalone Hebrew-in-Latin-script detector. I looked. The closest academic work detects transliterated foreign words inside Hebrew script. That's the mirror image of what Daniel needs. Shacham and Wintner did that one, precision and recall of eighty and eighty-two on a corpus of about four thousand unique words. Good work. Wrong direction.
Corn
So the tool exists for Latin words hiding in Hebrew, and not for Hebrew words hiding in Latin.
Herman
And the asymmetry is the tell. Detecting Latin transliterations inside Hebrew text is a decades-old problem because medical NLP needed it, named entity work needed it. Hebrew inside English is a content-creation problem. It's niche. Nobody's built the tool because until recently nobody had a reason to.
Corn
There is a precedent for the classifier step though. Indonesian-English.
Herman
There is. Handoyo and colleagues added a finetuned BERT for per-word language identification in Indonesian-English code-switching TTS. That's exactly the shape of what Daniel is describing. Per-word language ID feeding a synthesis pipeline. And the Chatterbox issue itself suggests fastText and langdetect as candidate tools, so the maintainers are pointing at the same direction.
Corn
Would a general language ID model work here?
Herman
Partly. FastText will happily tell you a token is not English. The problem is it won't reliably tell you it's Hebrew, because a transliterated Hebrew word in Latin characters is, from the model's point of view, a weird string that doesn't look like much of anything. You'd be filtering for Hebrew among the not-English, and the not-English bucket is enormous. It's a recall problem dressed up as a classification problem.
Corn
Which suggests a different framing. Not, is this word Hebrew, but, is this word rare in English and plausible as Hebrew.
Herman
That's the frequency-threshold heuristic and I think it's the most useful thing to come out of this whole line of thinking. Flag any Latin-script token that's rare in English and structurally plausible as Hebrew. You're not asking the classifier to know Hebrew. You're asking it to know what English doesn't contain, which is a much smaller question.
Corn
And it's the same insight as Shabbat versus pinui binui. The model's failure is a frequency failure, so the detector should be a frequency detector.
Herman
Right. And it composes. You could run the frequency filter first, which is cheap, and only send the survivors to something more expensive.
Corn
Now the part that undercuts the whole pipeline. Phonikud's own documentation says something striking. Modern Hebrew phonemes mostly exist in English, except three. The glottal stop, the Resh, and the Het. And it claims you can fine-tune an English model with as little as one hour of Hebrew data.
Herman
Which means, in principle, Daniel might not need the Hebrew-script mapping step at all. If you had IPA, you could feed the pronunciation directly and skip the round trip through Hebrew characters. The mapping step exists to get you to a representation the model can use. If IPA is that representation, you've collapsed a three-stage pipeline into two.
Corn
And the reason that doesn't work.
Herman
Is that Chatterbox's IPA support is broken. There's a comment on the same issue from January where someone went through the tokenizer vocabulary, found the IPA characters are there, and reported that the speech produced when using IPA is definitely not supported. The symbols are in the vocabulary. The model doesn't produce usable speech from them.
Corn
So the elegant shortcut is blocked by an implementation gap, not a theoretical one.
Herman
It's the most frustrating kind of blocker. The characters are sitting right there in the vocabulary.
Corn
Let's hold on that, because it's the hinge of the episode. Daniel's pipeline has three steps. Detect, map, synthesize. Detection doesn't exist as a standalone tool. Mapping is mature and possibly unnecessary. And synthesis, the step he's actually confident about, is the one with the broken support for the representation that would have made the whole thing clean.
Herman
The order of difficulty is inverted from what he assumed.
Corn
Which is a nice thing to be able to tell a friend. Now his own worry, the concatenation, and this is where it gets interesting, because the field has moved past stitching clips in ways that don't fit Chatterbox.
Herman
His worry is validated, first of all. The issue confirms it. The manual segmentation workaround produces inconsistent prosody, unnatural pauses, and voice characteristic mismatches. That's not a minor inconvenience. If you're generating a podcast, a voice that changes character mid-sentence is worse than a mispronounced word.
Corn
There's a hierarchy of failure there. A wrong vowel is a blemish. A voice that shifts register for one word is uncanny.
Herman
And the prosody problem is structural. You're generating three clips with three separate attention contexts and gluing them. The model has no idea the clips are related. It can't plan a sentence it never saw whole.
Corn
So what has the field built instead.
Herman
Two things, and neither works out of the box. The first is the more interesting one. It's called localized contrastive guidance, from a group at Seoul National University. It's training-free and module-free, which is the striking part. It derives per-frame phrase masks from the model's own self-attention layers. So the model is telling you, through its internal attention, where the foreign phrase lives. Then it applies a separate language-contrastive guidance scale only to those frames. You're not retraining anything. You're not adding a module. You're reading the model's own attention and turning up the foreign-language signal exactly where it belongs.
Corn
What does it buy you.
Herman
The numbers are real. MER drops from five sixty-four to four forty-five. Embedded-phrase language accuracy more than doubles, twenty-three percent to fifty-two. Identification confidence goes from twenty-four seven to fifty-eight eight. Human listeners preferred its output seventy-five and a half percent of the time across four hundred and eighty-eight ratings. And the global quality MOS barely moves. Four point zero zero seven down to three point nine three one.
Corn
So it's a large gain on the thing you care about and a rounding error on the thing you don't.
Herman
That's the shape of a good intervention. And it formalizes the failure mode Daniel is describing. The paper calls it cross-lingual accent leakage. Standard classifier-free guidance applies a uniform scale across the whole sequence, and the paper's phrase is that this aggressively flattens the embedded phrase's accent into the matrix carrier. The foreign word gets averaged into the host language.
Corn
The reason it doesn't apply to Chatterbox.
Herman
It was built for discrete diffusion language model backbones. OmniVoice. Chatterbox's T3 is autoregressive. The paper explicitly flags extensibility to autoregressive models as unverified. So the elegant fix exists, it works, and it's pointed at a different architecture.
Corn
That's a recurring shape in this episode. The right answer exists and is aimed slightly to the left of where you're standing.
Herman
The second approach is more engine-compatible. It segments text by Unicode script and emits SSML with language and voice spans, and synthesizes the whole utterance in a single request. Engine-agnostic, no retraining. That's the closest thing to a drop-in answer.
Corn
And it fails for Daniel's exact reason.
Herman
It only works when the foreign words are already in their native script. It's segmenting by Unicode. If the Hebrew word is written in Latin characters, there's nothing to segment. The framework sees one script.
Corn
So it solves the concatenation problem for people who don't have Daniel's problem, and Daniel's problem is the one that needs solving.
Herman
Which leaves concatenation as the practical answer for a Chatterbox user today, with the prosody cost as the known price.
Corn
There's a warning in the localized guidance paper that I think is worth saying out loud, because it reframes what the classifier step is actually carrying.
Herman
The false negative warning.
Corn
Quote, a false negative is catastrophic. Any missed frame within the embedded phrase region defaults to the matrix accent, triggering an irreversible phrase-foreignness collapse.
Corn
It is. It means the classifier isn't a nice-to-have. It's the load-bearing wall. If it misses a word, you don't get a slightly worse result. You get the failure the whole pipeline was built to prevent, and you can't patch it after the fact. So the step Daniel assumed was easy is not only missing as a tool, it's the step where an error is unrecoverable.
Herman
That's the sentence I'd underline for him.
Corn
There's a market gap worth naming too. Commercial TTS already does this. ElevenLabs, Google Cloud, they handle code-switching. And the issue says plainly that no major open-source TTS model handles it naturally. So the capability exists, it's just behind a paywall and a closed model.
Herman
Which is a familiar shape for people who run local.
Corn
The fine-tuning path. Someone on the issue floated it and then talked themselves out of it. Quote, you'd probably need a lot of clean data with many different speakers, sounds very expensive to me.
Herman
That's the honest answer. Fine-tuning is the general solution to a specific problem, and it costs like it.
Corn
So is this viable. That's Daniel's actual question. Viability for anyone generating non-form audio content with predictable foreign elements.
Herman
I'd say yes for the narrow case and no for the general one, and the narrow case is narrower than it looks. If your foreign language is one with mature G2P tooling, Hebrew qualifies, and if your foreign words are already in native script, you're fine today. SFMS-ALR handles you. If your foreign words are transliterated, which is the whole problem, you're building the detector yourself.
Corn
And the detector is buildable. The frequency-threshold framing makes it tractable. It's just not built.
Herman
There's a broader signal in the research that I find encouraging. The reverse direction, detecting Latin transliterations inside Hebrew text, is decades more mature. And there's a paper on Hebrew to English transliteration that cuts thirty-eight percent of the errors off a baseline for deciding which terms to transliterate versus translate. The methodology exists. It's pointed the other way.
Corn
The problem is tractable, the tools are adjacent, and the specific direction Daniel needs is the one nobody's built yet.
Herman
That's the state of play.
Corn
Hilbert, you've been quiet.

Hilbert: It's the wrong number.
Corn
Which number?

Hilbert: Twenty-three percent. The language accuracy figure. You said it more than doubled and that's right, but the way you said it makes it sound like the system works half the time. It works about half the time on the embedded phrase. The rest of the utterance is fine. That's a different claim.
Herman
That's fair. That is a different claim.

Hilbert: I spent a year and a half at a language lab doing forensic speaker identification. Assistant work. The job was transcribing recordings of people switching between languages mid-sentence, and I spent most of it arguing with a linguist about whether a word was Hebrew or Yiddish or just English spoken badly. There's no classifier for that. There's a person, and there's a shoebox.
Corn
A shoebox.

Hilbert: Index cards. He kept them in a shoebox under the desk. Every word nobody could classify got written on a card and dropped in. Transliterated, no agreed spelling, no agreed language. By the time I left there were a few hundred cards in there. The software we had, which was expensive, got maybe two thirds of them right. The shoebox got all of them right eventually, because somebody would walk past and recognize one.
Corn
What happened to it.

Hilbert: I don't know. He retired. I think about it more than I should. It's the only piece of work I've ever done where the answer was a box of paper and not a system.
Herman
The thing your lab had that Daniel's pipeline doesn't is a native speaker in the loop.

Hilbert: The thing your pipeline has that the lab didn't is that nobody has to agree. That's the whole difference. A classifier doesn't need consensus. It needs a threshold. The shoebox needed a person to say, yes, that one, and there's no threshold for that.
Corn
The human judgment isn't a fallback for when the classifier fails. It's a different kind of answer.

Hilbert: It's a different question. The classifier asks, is this Hebrew. The linguist asked, does this sound wrong to somebody who'd know. Those aren't the same test and they don't have the same failure pattern. One of them you can put in a pipeline.
Corn
The other one you put in a shoebox.

Hilbert: I've got a thing at half past. I'll be back for the next one.
Corn
That shoebox is going to bother me. But let's pull this together, because I think the state of play is clearer than it was an hour ago. If the detector doesn't exist and the elegant fix doesn't fit Chatterbox, the practical answer today is concatenation and its prosody cost. The real move might just be waiting for the open-source ecosystem to catch up to what commercial TTS already does.
Herman
Or building the detector. The frequency-threshold framing makes it a weekend project with a real chance of working, and the mapping step is already sitting on a shelf.
Corn
There's something worth noticing in the asymmetry. The reverse direction has decades of work behind it because a hospital needed it. The forward direction has almost nothing because a podcaster needed it. That's the whole story of which problems get solved.
Herman
If you've built something like this, or hit the same wall, send it in. Daniel's prompt is exactly the kind of thing that gets better with more voices in the room.
Corn
This has been My Weird Prompts. Hilbert Flumingtop produces the show. If you want to hear more, everything lives at my weird prompts dot com, and you can email us at show at my weird prompts dot com.
Herman
We'll be back soon.

This episode was generated with AI assistance. Hosts Herman and Corn are AI personalities.