Voice typing in Claude Code and Cursor in your own language
The prompt in your head is not in English, but the code words inside it are. Here is how to speak a prompt in your own language and paste clean English into Claude Code or Cursor.
You can speak a prompt to Claude Code, Cursor, Windsurf, Copilot Chat or ChatGPT in the language you think in. Clean English then appears in the text box. Lipo is our app, and it does this with two settings that work together. Vibe Coding mode keeps function names and library names exactly as you said them. Translation turns a spoken Hindi, Bangla, Spanish or Japanese prompt into English before Lipo pastes it. Speaking a prompt like this is voice typing, which many developers call voice dictation.
Here is how Lipo works. You hold the hotkey (a key you press to start recording; the default is the right Option key) and speak. When you release the key, Lipo transcribes your speech (turns it into text). Then Lipo cleans the text. It removes filler words (sounds like "um" and "so") and false starts (a sentence you began and then changed). It adds punctuation and fixes small mistakes. Then Lipo pastes the finished text where your cursor is (the blinking mark that shows where text will go). Lipo does not type letter by letter and it does not show text while you speak.
When developers type a prompt in their second language, the prompt becomes shorter and less clear, and the AI tool gives a worse answer.
Why are spoken prompts better than typed ones for coding?
You can describe a bug in 40 seconds of speech. Typing the same description would take five minutes, so you type "fix the auth bug" instead.
Claude Code and Cursor give better answers when you give them more context. Context means which file, what you expected, what happened instead, and what you already tried. Typing 150 words feels like writing an email. Speaking 150 words takes less than one minute.
Why do English-only voice tools fail non-English developers?
The prompt you would speak is not in English. The parts that are in English are the technical words, and those are the words speech tools get wrong most often.
A developer in Pune describes a bug in Hindi.
You say: "useEffect में dependency array गलत है, इसलिए हर render पे API call जा रही है."
A voice tool set to English hears the Hindi as noise and guesses. A voice tool set to Hindi writes "useEffect" the way it sounds in Hindi. Now the prompt contains an invented name, and the AI tool will search your code for it.
Translation is the second problem. Dictation apps made for developers do not translate. If you speak Spanish into them, you get Spanish text in Cursor's chat box. Claude Code accepts a Spanish prompt, but its tools, documentation and commit messages are in English, and English prompts usually get better results.
How to set up Lipo for Claude Code and Cursor
Setup takes about ten minutes.
- Install Lipo (macOS 15.2 or later) from uselipo.com. There is a free trial. Choose your spoken language under Dictation, then Language. Lipo can also auto-detect the language (guess it from your speech). A Hindi sentence full of English code words is hard to detect, so choose the language yourself.
- Open Dictation modes and look at Vibe Coding. This mode keeps technical words exact and does no cleanup by default, so Lipo does not rewrite your phrasing. It comes with a preset word list (Cursor, SwiftUI, TypeScript, npm, Xcode).
- Use App modes to pin Vibe Coding to Cursor and to your terminal app (Terminal, iTerm2, Warp or Ghostty).
- Open the custom dictionary and add your project's words to the Vibe Coding list. Add table names, functions you say often, libraries (Supabase, Prisma, Zustand), teammates' names and your product's name. Lipo uses your spelling in every language and after translation. Each mode has its own list, so your column names do not appear when you dictate a WhatsApp message.
- Open the Translation tab, set "Lipo pastes" to English, and choose Translate with this hotkey. Your normal hotkey pastes text in your language, and a second hotkey pastes English.
With translation on, Lipo transcribes, then cleans the text, then translates the cleaned text, then pastes it. Raw speech about code is full of false starts, such as "no wait, not the hook, the reducer". A translator that sees the raw version translates the mistake together with the fix.
Claude Code specifics
Claude Code runs in a terminal, and Lipo pastes into any terminal text input. Put your cursor on the prompt line, hold the hotkey, speak and release.
For a long prompt, switch Lipo to Toggle mode in settings. In Toggle mode you press the hotkey once to start and once to stop, so you do not hold a key while you think. Also remember that in a terminal, Return sends the prompt. Toggle mode lets you end a dictation with Return, but here that would send a half-finished prompt. Stop with the hotkey instead, read the pasted text, then press Return yourself. Press Esc to cancel a dictation you do not want to send.
Cursor specifics
Cursor has two places for prompts. Cmd+L opens the chat panel, for long prompts and requests across many files. Cmd+K opens inline edit, a one-line box above the code you selected.
Toggle mode fits the chat panel. Hold-to-talk fits Cmd+K. Select a function, press Cmd+K, hold the hotkey, and say "extract the validation into its own function and return early on null". Release the key and press Enter. Windsurf's Cascade panel and Copilot Chat in VS Code work the same way. Lipo only checks which mode you pinned to the app that owns the text field (the box where you type).
What does a translated prompt look like?
Here is a prompt spoken in Hinglish (Hindi mixed with English), with filler words and a false start.
You say (Hindi and Hinglish, into Cursor's chat): "अच्छा तो, ये जो login page है ना, उसपे user login करता है तो, मतलब पहली बार तो ठीक है, लेकिन refresh करने पे 401 आ रहा है। मुझे लगता है useEffect में... नहीं, useEffect नहीं, वो जो Supabase का session वाला call है, वो shuru में ही चल रहा है token आने से पहले। इसको fix करो, और, और एक test भी लिख दो इसके लिए।"
Lipo pastes (Vibe Coding mode, output language set to English): On the login page, the first login works, but refreshing the page returns a 401. I think the Supabase session call is running before the token is available, rather than a useEffect problem. Fix this and add a test for it.
The Hindi was translated and "useEffect", "401", "Supabase" and "token" were left exactly as you said them. The false start, "नहीं, useEffect नहीं", is gone and the correction it pointed at was kept, so the prompt carries the real theory about the cause. Typed in English by someone in a hurry, this prompt would have been "login breaks on refresh, 401, fix it", and the AI would have had to guess the rest.
Here is a Spanish one, for Cursor's inline edit, with the hotkey held instead of toggled.
You say (Spanish, Cmd+K with a function selected): "Este handler, eh, hazlo async y que... que devuelva un Result en vez de tirar la excepción. Usa el tipo ApiError que ya tenemos, no crees uno nuevo. Y el timeout ponelo en treinta segundos, no en diez. El archivo se llama api guion bajo client punto ts, por si lo necesitás."
Lipo pastes: Make this handler async and have it return a Result instead of throwing. Use the existing ApiError type, do not create a new one. Set the timeout to 30 seconds, not 10. The file is api_client.ts if you need it.
Four things worth noticing. "ApiError" kept its exact capital letters because it is in the dictionary; without that entry a speech tool writes "API error", and Cursor then hunts for a type that does not exist. The spoken numbers became digits and the correction was kept, so the timeout is 30 and not 10. "Api guion bajo client punto ts" became api_client.ts, because spoken symbols turn into real symbols when the surrounding words are clearly a file name. And "eh" and the false start are gone.
One thing to know before you copy this setup. Vibe Coding does no cleanup by default, which is the point: your phrasing reaches the AI untouched. The tidying in these two examples comes from the translation step, which always rewrites as it converts. If you dictate in English with translation off, you get your words as spoken, filler included. Turn on Polish text for Vibe Coding in the Dictation tab if you want the cleanup without the translation. Each mode keeps its own setting, so this does not change Casual or Formal.
Lipo is not perfect. Some very short names sound like ordinary words, such as a variable called "data" inside a Hindi sentence. Lipo sometimes translates such a name when it should stay, and a dictionary entry fixes most of these cases.
Show the bug instead of explaining it
Some bugs take ten seconds to show and ten minutes to describe. A layout that is slightly wrong is one example.
AI tools such as Claude, ChatGPT and Cursor read only text. Lipo's Visual Brief lets you record your screen while you describe the problem in your language. Start it from the menu bar icon and record your full screen or one window for up to 5 minutes. When you stop, Lipo transcribes what you said and analyzes the recording. Then Lipo writes a structured prompt in your output language and pastes it into Claude Code's terminal or Cursor's chat. Visual Brief is in beta. It needs the Screen Recording permission (a system setting that allows an app to record your screen). Lipo deletes the recordings from your computer after 7 days.
For smaller things, use the screenshot button. While you are recording, Lipo shows a small floating window, which Lipo calls the pill. Click the screenshot button on the pill, capture the error, and keep speaking. When you release the hotkey, Lipo pastes your text and attaches the screenshot to the same message. Before that, the screenshot editor lets you blur an API key. Screenshots also need the Screen Recording permission.
What about Wispr Flow, Willow Voice, Aqua Voice and superwhisper for coding?
All four apps support dictation into Cursor.
| Lipo | Wispr Flow | Willow Voice | Aqua Voice | superwhisper | |
|---|---|---|---|---|---|
| Languages listed | 50+ | 100+ | 100+ | 49 | Depends on the model |
| English words inside a sentence in your language, written in your script | Yes | No, one language per recording | Switches mid-sentence, script not stated | Not documented | Not documented |
| Voice typing translation: speak one language, paste another | Yes, any pair | No | No | No | Into English only |
| Tone modes | Casual, Formal, Vibe Coding | Yes | Yes | Yes | Custom modes |
| Screenshot attached to dictated text | Yes | No | No | No | No |
| Video prompt for AI tools (Visual Brief) | Yes | No | No | No | No |
| Clipboard history | Yes | No | No | No | No |
A long language list means the app can recognize those languages. It does not mean the app is equally accurate in all of them. There is only one way to know. Speak one real sentence in your language, with a person's name and one English word in it, and read the result. Lipo is built to be accurate in every language it supports, and Bangla, Arabic and Hindi receive the same attention as English. Of the five, Lipo is the only one that translates into any language, not only into English.
Is it safe to dictate about code?
Lipo stores your dictation history on your computer, not on our servers. Transcription and cleanup use cloud processing, so your audio and text pass through our providers during the request. Our privacy policy says what is sent and what is kept. Do not dictate a secret that you would not paste into Claude Code or Cursor. If a prompt needs a live API key, type that part.
Frequently asked questions
Can I use voice typing in Claude Code?
Yes. Claude Code runs in a terminal, and Lipo pastes into any terminal text input. Put the cursor on the prompt line, hold the hotkey (or use Toggle mode for long prompts), speak, and release. Lipo pastes the text. Press Return yourself to send it.
Does voice to text work in Cursor's chat and inline edit?
Yes, in both. The Cmd+L chat panel suits Toggle mode for long prompts. The Cmd+K inline edit box suits hold-to-talk for one-line instructions. Pin Vibe Coding mode to Cursor so technical words stay exact.
Can I speak Hindi or Bangla and get an English prompt?
Yes. Set "Lipo pastes" to English in the Translation tab and choose a separate translation hotkey. Lipo transcribes, cleans, then translates, and keeps names like useEffect and Supabase unchanged.
Will it get function names and library names wrong?
Vibe Coding mode keeps technical words as you said them and comes with a preset word list. Add your project's names to the custom dictionary. Lipo then uses your spelling in every language and after translation.
What is Vibe Coding mode?
It is Lipo's dictation mode for code editors and AI coding tools. It keeps technical words exact and does no cleanup by default, so Lipo does not rewrite your phrasing. It comes with a preset word list, and you can pin it to specific apps.
Can I attach a screenshot of the bug to my prompt?
Yes. Click the screenshot button on the floating pill while you record, capture the error, and keep speaking. When you release the hotkey, Lipo attaches the screenshot to the same message. For longer bugs, Visual Brief records your screen and writes a structured prompt from your description.
Is dictating code prompts private?
Dictation history stays on your computer. Transcription and cleanup use cloud processing. Do not dictate secrets that you would not paste into an AI tool. Type those parts instead.
How much does it cost?
Lipo has a free trial and paid plans. Translation has a monthly word limit on the smaller plan. Same-language dictation has no word limit. See pricing for plans and limits.
Keep reading
From the docs: Dictation modes · Visual Brief