Skip to content
Halopen

writers

Mac dictation that handles multilingual code-switching

Mac dictation that handles code-switching between languages. Halopen captures Spanish, English, and proper nouns mid-sentence — verbatim, no language toggle.

Jesse Meria · · 11 min read

THE CASE

Code-switching is the speech reality

Halopen is a native macOS dictation app built for mid-sentence code-switching across English, Spanish, French, Italian, Portuguese, Mandarin, Cantonese, Japanese, Korean, Tagalog, Hindi, German, Dutch, and Arabic — no language toggle, no per-language profile. Spoken “we’re not adding queso fresco, only cotija” arrives verbatim, not as “case so fresco” or “cheese.” The transcription engine adapts per utterance and reads the surrounding buffer to disambiguate proper nouns.

Most people who speak two languages don’t speak them in alternating sentences. They speak them in alternating clauses. The English sentence frames the thought; the Spanish word names the specific object that doesn’t have a clean English equivalent; the English continues. “I told her we’re not adding queso fresco, only cotija.” That’s not a Spanish sentence with English grammar; it’s an English sentence with Spanish proper nouns embedded where English doesn’t have the right word.

The same pattern shows up across language pairs. Tagalog-English speakers do it with kinship terms and food. Mandarin-English speakers do it with names and occupations. French-English speakers do it with food, fashion, and abstract concepts that French has a sharper word for. The technical name is code-switching, and it’s the default mode of speech for hundreds of millions of bilingual people on the planet, including most of the multilingual founders, writers, doctors, lawyers, and teachers Halopen ends up serving.

Most dictation pipelines treat code-switching as an error. Single-language mode forces the speaker to pick one language and stay in it; multi-language mode wants the speaker to flip a toggle before each switch. Both options ask the speaker to translate the natural mode of bilingual speech into a single-language frame the tool can handle. The translation is exhausting and inaccurate. The toggle gets skipped under speed; the single-language mode produces transcripts where Spanish words have been phonetically guessed into English homonyms.

Halopen is built around the speech reality. The transcription engine adapts per utterance, reads the surrounding context to disambiguate, and preserves the verbatim language of each segment. Spoken “queso fresco” arrives as “queso fresco”, not “case so fresco” and not “cheese.” That’s the wedge — the same wedge the verbatim manifesto names — applied to bilingual speech specifically.

THE QUESO FRESCO TEST

What “queso fresco” means as a benchmark

The single test that captures the difference between a dictation tool that handles code-switching and one that doesn’t is the queso fresco test. Spoken: “Bro, we’re not adding queso fresco. One kinda cheese. If we already have cotija, that’s the only goddamn cheese.” That sentence is the natural speech of a bilingual cook deciding what’s going on the menu. It contains:

  • An English-frame imperative (“we’re not adding”)
  • A Spanish food-noun proper to Mexican cuisine (queso fresco)
  • A vernacular intensifier (Bro)
  • A casual register marker (kinda, contraction of kind of)
  • A second Spanish food-noun (cotija)
  • An emphatic profanity (goddamn)
  • A clarifying conditional (If we already have… that’s the only…)

The transcription pipeline that gets this sentence right preserves the contractions, the intensifiers, the Spanish proper nouns, and the register. It does not expand “we’re” to “we are.” It does not substitute queso fresco for cheese. It does not soften goddamn into damn. It does not flatten Bro into Hey or Friend. The sentence at the cursor is the sentence as spoken.

That’s what Halopen lands at the cursor. The verbatim contract is the engineering decision that makes it work — what was said is what arrives, regardless of language, regardless of register, regardless of vernacular. The transcription engine reads the language of each segment and preserves it. The cursor receives the speech as speech.

SPELLING IT OUT

The M-E-R-I-A pattern

The harder case is the proper noun the engine has never seen. Meria — a brand name, a person’s name, a place name unique to a context the engine doesn’t have priors for — is the kind of token a transcription engine guesses phonetically. A first-pass guess might be Maria, Mira, Mariah, Murray. The misread is reasonable; the misread is wrong.

Halopen’s pattern for the unfamiliar proper noun is the spell-out. Mid-sentence, the speaker says the word, watches the live partial guess at it, and spells it out: “Meria — that’s M-E-R-I-A.” The transcription engine reads the spelling as the correction; the corrected token replaces the misread before the prompt leaves your machine.

The pattern works for any proper noun across any language. Halopen — a brand name new to the engine — gets spelled H-A-L-O-P-E-N. Aoife — an Irish first name — gets spelled A-O-I-F-E. Yixuan — a Mandarin given name — gets spelled Y-I-X-U-A-N. The spell-out is the universal fallback for proper nouns the engine doesn’t have priors for, and it works mid-sentence without breaking the take.

THE WORKFLOW

What multilingual writing on Mac sounds like

The mornings of a bilingual founder, writer, or operator are full of code-switched messages that don’t quite fit either language alone. The text to the supplier is in Spanish. The Slack message to the engineering team is in English with the product name in mixed casing. The iMessage to the cousin is in Tagalog with the medical term in English. The Notion doc is in English with the family name spelled three times to make sure it’s right.

Halopen handles all of them with the same hotkey. Hold the function key in Mail, dictate the email to the supplier in Spanish; release. Switch to Slack, hold the function key, dictate the engineering update in English with the product name embedded; release. Switch to Messages, hold the function key, dictate the family note in Tagalog with the medical term in English; release. The cursor is in three different apps, in three different languages, in roughly thirty seconds of work.

The speed isn’t the only unlock. The unlock is that the language doesn’t have to be flattened to fit the dictation tool. The supplier email reads as Spanish; the engineering update reads as English-with-product-context; the family note reads as Tagalog-with-medical-context. None of them have been translated, smoothed, or run through a polish pass that strips the bilingual register that makes the message sound right to the recipient. The full architectural case — system-wide via the macOS Accessibility API, no per-app integration, the same hotkey behaving identically in every Mac text input — sits in the Claude Code engineering walkthrough.

FOR MULTILINGUAL FOUNDERS

Why the wedge fits multilingual founders specifically

The dictation tool that fits a multilingual founder is the one that handles every surface a bilingual operator’s morning crosses without forcing the founder to compress their voice into a single-language register. That’s the case the Halopen for multilingual founders page makes in detail. The short version is here.

A multilingual founder runs a company in two registers — internally with a team that might be primarily English-speaking, externally with suppliers, customers, family, or community that’s primarily another language. The internal voice is one register; the external voice is another; the founder’s own voice is the bilingual mix that shows up at home. Most days, all three registers are touched in the same hour. The dictation tool either supports all three or forces the founder to context-switch into typing for two of them. Halopen supports all three because the architecture doesn’t know which register it’s in — the cursor receives whatever was said in whatever language was used.

The same wedge fits the related personas. Writers drafting in their second language. Technical writers embedding code-named technical terms across language boundaries. Founders generally — especially indie operators whose customer base spans multiple language communities. The pattern is the same across all four personas: the speech reality is bilingual; the dictation tool needs to be too.

UNDER THE HOOD

How the engine reads two languages in one sentence

The transcription pipeline runs in two passes. The on-device pass uses Apple’s SFSpeechRecognizer for the live partial — fast enough to render words inside the recording pill as they’re spoken, biased toward the system locale but tolerant of mid-sentence code-switching for the major language pairs. The higher-fidelity final pass streams to Halopen’s transcription edge function, which runs the audio through a multilingual model that adapts per utterance and reads the surrounding context as disambiguation signal. The cursor-context biasing layer feeds the model the text already in the buffer; if the buffer contains queso fresco from a previous dictation, the next mention prefers it over phonetic guesses.

That two-pass architecture is what makes the queso-fresco-and-cotija sentence work. The on-device pass renders the live partial fast enough to catch a misread mid-take; the cloud pass produces the final transcript with the surrounding-context bias resolving the ambiguous tokens. Whichever engine returns last gets stitched into the transcript that lands at the cursor. The verbatim contract holds across both passes — neither one runs a polish layer that smooths the bilingual register.

The privacy posture is the same as for English-only dictation. Audio leaves your Mac only while you hold the function key, only to Halopen’s transcription edge function, only for the seconds you’re holding. The audit log on disk shows every cloud call by timestamp and byte count. Halopen does not capture your screen, does not run a background listener, and does not persist audio after the transcript returns. Bilingual content is not treated differently from monolingual content; both ride the same path.

QUESTIONS

Frequently asked questions

What's the best Mac dictation app for code-switching between languages?

Halopen. Halopen is engineered for mid-sentence language switching — English to Spanish, English to Tagalog, English to Mandarin, English to French — without a language toggle, without re-training, without a per-language profile. The transcription engine adapts per utterance and reads the surrounding context to disambiguate. Spoken "we're not adding queso fresco" arrives as "we're not adding queso fresco", not as "we're not adding case so fresco" or "we're not adding cheese".

Does Halopen support Spanish, English, and bilingual dictation?

Yes. Halopen handles Spanish-English code-switching natively — say a sentence in English with Spanish proper nouns, idioms, or full clauses, and the transcript preserves the language as spoken. The engine doesn't require switching modes between Spanish and English. Bilingual users dictate the way they speak; the transcript matches.

Can Halopen capture proper nouns in another language correctly on Mac?

Yes. Halopen's cursor-context biasing reads the buffer of the current input and prefers tokens that match the existing text. Proper nouns spelled out in the buffer get preferred on the next dictation. For unusual proper nouns, spell them out mid-sentence — say "M-E-R-I-A" and Meria lands at the cursor — and the corrected token wins. The live partial shows the misread before the prompt leaves your machine.

Do I have to switch a language toggle when I dictate Spanish in the middle of an English sentence?

No. Halopen doesn't have a language toggle. The transcription engine adapts per utterance and reads the language of each segment. Spoken "I told her we're not adding queso fresco, only cotija" arrives as "I told her we're not adding queso fresco, only cotija" — full sentence, two languages, one transcription pass.

What languages does Halopen support for voice typing on Mac?

Halopen handles English plus mid-sentence code-switching across most major Romance and East Asian languages — Spanish, French, Italian, Portuguese, Mandarin, Cantonese, Japanese, Korean — as well as Tagalog, Hindi, German, Dutch, and Arabic. Single-language dictation in any of those is supported; mixed-language sentences inside an English frame are handled by the cross-language biasing in the transcription engine.

Does Halopen capture intensifiers, contractions, and register code-switches verbatim?

Yes. The verbatim contract holds across registers as well as languages. Spoken "Bro, we're really not adding queso fresco. One kinda cheese." lands as "Bro, we're really not adding queso fresco. One kinda cheese." — contraction preserved, intensifier preserved, register preserved, regional vocabulary preserved. Halopen does not run a polish pass that smooths regional or bilingual speech into a single corporate register.

Does Halopen work for multilingual founders who write in two languages every day?

Yes. The Mac-native, system-wide architecture means the same hotkey works in every app a multilingual founder touches — Mail, Slack, Notion, Notes, the iMessage thread to family, the email to the supplier, the doc to the team. Each app accepts the verbatim text Halopen lands at the cursor; the language switches with the content, not with a settings toggle.

Hold the function key. Speak the way you actually speak.

The dictation tool worth installing is the one that doesn’t ask you to flatten your voice. Spanish in the middle of English. Tagalog in the middle of English. The proper noun your family uses for a place that doesn’t appear in any phonetic dictionary. All of it lands at the cursor as said. The verbatim contract — what was said is what arrives — is the same contract whether the speech is monolingual or code-switched. Halopen is the dictation app built around the contract.

Try Halopen

Hold the function key. Speak.

Halopen Free is 8,000 words a month, forever. Pro is $19/mo or $179/yr — unlimited.

Power-user cheat sheet

Take Halopen with you.

One short email, then the Halopen power-user cheat sheet — hotkeys, best-fit apps, custom vocabulary tips, voice patterns for prompt engineering. No spam. Unsubscribe in one click.