Short answer: put the cursor in any PyCharm text surface (Junie prompt, AI Chat, Jupyter cell, docstring, commit dialog), press ⌃+⌥+R on Mac or Ctrl+Alt+R on Windows/Linux, speak, press it again to stop. AICHE inserts cleaned-up text.
The Problem
PyCharm is no longer just a code editor. Since the 2025.1 unified release, the right-hand AI Chat panel is where most of the day happens: typing into Junie when you want the agent to plan a change, typing into the chat when you want to ask about a function, typing in a Jupyter markdown cell to explain why a model evaluation is strange, typing a Google-style docstring under a function definition, typing a commit message in Ctrl+K.
That is a lot of prose. PyCharm does not give you a microphone button in any of those places. The IDE assumes you type.
What Changes
AICHE runs outside PyCharm as a desktop layer. There is no plugin to install, no JetBrains Marketplace listing to depend on, no AI Assistant subscription required. The hotkey works in every text input PyCharm renders, including the ones JetBrains rebuilds across point releases.
Click into the prompt field. Press the hotkey. Talk. Press it again. The text appears at the cursor.
Math: speaking sits around 150 WPM, typing for most developers around 40 WPM. A 200-word Junie task description that takes five minutes to type runs about 80 seconds to speak.
Talking To Junie
Junie is the JetBrains coding agent. It runs in the AI Chat tool window in Code mode (executes a multi-step plan, edits files, runs tests, opens the terminal) or Ask mode (read-only exploration). Like Claude Code or Cursor's agent, it performs better when the prompt carries real context: which files to touch, what the constraint is, what the existing pattern looks like, what counts as done.
Typing those prompts is the bottleneck. So most people send Junie a one-liner, get a half-right plan, type a correction, get closer, and burn three turns on what should have been one.
Workflow with AICHE:
- Open the AI Chat tool window (right toolbar).
- Select Junie, pick Code or Ask, attach any files or symbols the agent should see.
- Click into the prompt input.
- Press ⌃+⌥+R or Ctrl+Alt+R.
- Pace and explain the full task: which module, which test file, what the desired behavior is, which edge cases matter, what to leave alone.
- Press the hotkey again. The cleaned-up prompt lands in the input.
- Hit Enter. Approve actions as Junie asks, or flip on Brave mode if you trust the plan.
The longer the up-front context, the less you fight Junie's plan later. Speaking makes the long version cheap.
Jupyter Notebooks
Jupyter support is one of the things PyCharm Pro genuinely does better than VS Code. Notebooks open as first-class editor windows with the debugger, variable inspector, and diff viewer attached. Cells come in four flavors: code, markdown, SQL, and AI.
Markdown cells are where the typing tax hits hardest. They hold the analysis narrative: what the dataset looks like, what was tried, what the confusion matrix actually means, what to do next. People skip writing them because typing the explanation takes longer than running the next cell.
With AICHE:
- Create a markdown cell above or below the cell you just ran.
- Press the hotkey.
- Narrate what the output means, including the numbers you can see on screen.
- Press the hotkey again.
The narrative cell now exists. Two weeks later, when you reopen the notebook or hand it to a teammate, the story is there.
Same pattern works for SQL cells (dictating the question you want answered, then editing into SQL) and for the AI cell prompt input.
Docstrings
PyCharm supports four docstring formats out of the box: reStructuredText (the default), Google, NumPy, and Epytext. The auto-stub on triple-quote-Enter under a def populates :param:, :return:, :raises: placeholders based on which format you set in Settings > Tools > Python Integrated Tools.
The placeholders are easy. The prose around them is what gets skipped. AICHE handles the prose: put the cursor inside the docstring after the auto-stub, press the hotkey, explain in plain words what the function does and when not to use it, press the hotkey again, then fill the :param: slots manually with the type hints already in your head.
For typed Python, this also pairs well with the type hint inspector. AICHE writes the description. PyCharm's static analysis catches the type drift.
Commit Messages In Ctrl+K
The Commit Changes dialog (Ctrl+K on Linux/Windows, Cmd+K on Mac) is another long-typing surface. JetBrains added "Improve Commit Message with AI Assistant" to do polish, but the raw message still has to come from you, and the dialog is modal: you stop coding, you write the message, you commit.
Press the hotkey inside the message field. Say what you actually changed and why. AICHE drops it in. If your team requires issue keys (PROJ-1234) at the front, type those manually, then dictate the rest. Custom vocabulary handles your project names, service names, and library names so they spell correctly the first time.
The same applies to GitHub and GitLab PR review comments in PyCharm's in-editor review mode.
Refactoring Decisions, Spoken
PyCharm's refactorings (Shift+F6 Rename, Ctrl+Alt+M Extract Method, Ctrl+F6 Change Signature) are not text-entry surfaces themselves. But the chat panel sitting next to them is. When you are mid-refactor and want to think out loud, a useful pattern:
- Pause before clicking through the refactor.
- Open AI Chat, switch to Ask mode.
- Dictate the constraint: "I am about to extract this 80-line block into a method. The block reads from
self._cache, mutatesself._stats, and raisesLookupErroron miss. What's the cleanest signature, and should the cache access move with it?" - Read the answer. Make the decision. Then run the refactor.
This is the kind of question people type a one-line version of, get a one-line answer, and regret. Speaking the full constraint costs nothing.
Multilingual Python Teams
Auto-translation in AICHE settings handles non-English thinkers cleanly. Think in Mandarin, German, Spanish, Japanese, Polish, whatever your internal monologue runs in. AICHE outputs English. Junie and AI Chat read clean English prompts. Comments and docstrings land in English by default, which matters when your team is global and your repo is public.
What You Get
- Unlimited voice notes with AI cleanup - filler words removed, punctuation and paragraph breaks added.
- Software Development profile (Pro) - tuned for code-heavy speech: API names, kebab-case flags, snake_case identifiers, library names like
pandas,scikit-learn,pytorch. - Custom vocabulary - drop in your module names, internal service names, dataset names. Spelled correctly every time.
- Multilingual voice input with auto-translation - speak in your native language, get English text out.
- Zero-retention audio - audio purged immediately after processing, within 1 second.
Plans start at $3.99/mo (annual) with a 7-day free trial, no credit card. See pricing.
Common Questions
Q: Do I need a PyCharm plugin?
A: No. AICHE is a desktop app. It inserts text at the system cursor, so it works in any PyCharm input: AI Chat, Junie, Jupyter cells, docstrings, the Find window, the commit dialog, terminal panes, any of it. No Marketplace listing, no IDE restart, no internal API to break on the next 2025.x release.
Q: Does it work in Junie's Code mode prompt?
A: Yes. The prompt input is a normal text field. Click in, hotkey, speak, hotkey, Enter. Brave mode and Think More toggles stay where they are - AICHE only touches the text input.
Q: What about Jupyter cells inside PyCharm Professional?
A: Same pattern. Code cells, markdown cells, SQL cells, AI cells. The cursor is in the cell, AICHE inserts at the cursor. For markdown cells with headings, dictate the heading text, then add the ## syntax manually if you want PyCharm's outline view to pick it up.
Q: I write docstrings in Google format, not reStructuredText. Does that matter?
A: Not for AICHE. The format is set in Settings > Tools > Python Integrated Tools, and PyCharm auto-stubs the format you chose. AICHE fills in the natural-language parts (the function summary, the description of what each argument does, edge cases). You keep the structural tokens (Args:, Returns:, Raises:) from the auto-stub.
Q: I work with pandas and statsmodels all day. Will it mangle the library names?
A: Turn on the Software Development profile and add your stack to Custom Vocabulary: pandas, numpy, scipy, statsmodels, scikit-learn, xgboost, lightgbm, pytorch, plus your internal package names. Recognition stays clean across sessions.
Q: Does the hotkey conflict with PyCharm's bindings?
A: ⌃+⌥+R on Mac and Ctrl+Alt+R on Windows/Linux are global OS-level shortcuts that AICHE owns. If you have remapped them inside PyCharm to something else, the IDE shortcut still fires inside PyCharm, but AICHE's capture runs at the OS layer. In practice the default IDE bindings on those keys are not commonly used. If there is a conflict, rebind PyCharm's shortcut in Settings > Keymap and keep AICHE on the default.
Q: Linux with Wayland?
A: Yes. Ctrl+Alt+R on Linux. Insertion uses the standard event path that PyCharm runs on, X or Wayland.
Result: the Junie prompts you would have shortened to save typing now carry full context. The markdown narrative cells you would have skipped now exist. The docstrings under your functions actually describe what they do. Typing time on prose drops from minutes to seconds, and PyCharm stops being a place where you type a lot of natural language with no help.
Try it now: open PyCharm, open the AI Chat panel, click into the Junie prompt, press your hotkey, and describe one refactor or analysis task you have been avoiding because typing the full context felt like too much keyboard time.