Voice dictation deletes/rewrites previous word when switching language mid-sentence (PT/EN code-switching)
Summary
Voice dictation (/voice) is locked to a single language setting for the whole session, with no auto-detect and no multi-language support. This was already requested and closed as "not planned" in #36908 and #58062. This issue is about a distinct, more disruptive symptom of the same root cause that I believe deserves separate tracking: when a word from a different language is spoken mid-sentence, the transcription engine doesn't just mis-transcribe it, it retroactively deletes or rewrites the previously spoken word as it re-decodes the streaming buffer.
Who this affects
This is an everyday, essential-use issue for Brazilian developers (and likely other non-English-speaking dev communities). We speak Portuguese as our primary language, but constantly mix in English technical terms mid-sentence, things like "commit", "branch", "endpoint", "deploy", "pull request", "hook", "async", class/function names, etc. This isn't an edge case, it's how technical Portuguese is normally spoken. Since dictation forces a single fixed language, whichever one isn't currently selected gets partially erased whenever it shows up mid-sentence, making dictation unreliable for a very large chunk of our day-to-day usage.
Steps to reproduce
- Set
languagetoportuguese(orpt) via/configorsettings.json. - Start
/voicedictation. - Speak a sentence that mixes Portuguese and an English technical term mid-sentence, e.g. "vamos revisar o pull request antes do deploy".
- Observe that the English word(s) get deleted or silently rewritten as the engine continues decoding, instead of being transcribed as spoken.
- The same happens in reverse with
languageset toenand a Portuguese word spoken mid-sentence.
Why this is different from #36908 / #58062
Those issues ask for full multi-language/auto-detect support, understandably a bigger feature ask, and were closed as not planned. This issue isn't asking for auto-detection of a whole spoken language. It's flagging that the current single-language behavior actively destroys already-spoken content instead of just mis-transcribing the out-of-language word or leaving it as-is. Even a partial mitigation (e.g. don't retroactively delete/rewrite previously finalized tokens when an out-of-vocabulary word appears; keep the raw ASR guess instead of silently dropping it) would meaningfully improve usability without requiring full multi-language detection.
Related issues
- #36908 (multi-language dictation support, explicitly mentions Portuguese + English as the use case; closed "not planned")
- #58062 (multilingual / auto-detect language for
/voice; closed) - #52384, #47806 (dictation ignores/mishandles language setting)
- #66001, #69936 (language selector / separate language setting requests)
Environment
- Claude Code voice dictation (
/voice) languagesetting configured via/config/settings.json