feat: Add a voice input mode
The speed at which the AI can work means that human typing speeds might be the slow down for conveying prompts. People already use 3rd party transcription apps like SuperWhisper to convey instructions quickly (see the original vibe coding tweet).
But I think this would be a great feature for codex, especially since there is 1st party support for realtime transcription now via the OpenAI Realtime API.
https://platform.openai.com/docs/guides/realtime-transcription#handling-transcriptions
It would work something like:
codex --voice-mode
(colloquially --vibe-mode)
It would start an interactive session same as it does now but with a persistent connection to the realtime API and you can use a push to talk key (Space by default?, but configurable) to provide input / interrupt the AI
Willing to work on a PR for this
16 Comments
1 Zillion PERCENT AGREE!!! ive been waiting for this with cline, claude code, roo and none of them have it which shocks me because the transcription models have gotten so good and are cheap.
The transcription models will have significant quality differences across different languages.
@ercbot Before working on the PR, could you describe briefly here how you think this could be implemented inside the terminal cli?
@tibo-openai I dont know exactly how because its in the terminal, but as a vibe coder, I would love a /speak command which then connects to the whisper api, prompts you to start speaking, you can hit a certain key to stop and then you can see your speech to text translated which you can send off. also theres a nice feature in roo code that tries to improve whatever you said for grammar and technical correctness which you can see with that starry icon
<img width="311" alt="Image" src="https://github.com/user-attachments/assets/7d0a246b-e051-4c6a-b047-31022e48ef4c" />
@tibo-openai
after looking at the implementation in the TerminalChatInput component here is an outline of how i'd implement the voice input:
Two ways to trigger it
--speakflag on thecodexrun command, launches the CLUI with recording on/speakcommand in the CLUI which toggles the recording statusFor both we could add an optional flag to specify a language code supported the by the model (en, zh, fr, etc.)
When recording:
[REC]indicator appears at the front of the input boxWhat do you think?
+1000 this - I have a dream of coding while surfing wearing Shokz OpenSwim Pro...do some coding, catch a wave while codex is working....do some more coding as I paddle out and wait....catch a wave while codex is coding :) :) :)
Thanks for the suggestion! We're primarily focused on the native/Rust implementation of Codex CLI and would love to see if this feature is still relevant on the latest version. If so, we'd be happy to consider a PR to the
codex-rs/implementation.Can you use https://github.com/mbailey/voicemode?
+1 bump
bump
Anyone know why it is marked "closed this as completed". Is it implemented? Can someone give a link to an official documentation describing the feature?
I don't know why this was initially closed. The team did a pass over all bugs at the time that the earlier TypeScript version of codex was retired, so it's possible this was part of that cleanup pass.
There are other open feature requests that cover this feature, so if you'd like to express your support for this enhancement, please submit your upvote here for the CLI and here for the IDE extension.
we need this back please for the CLI!
This feature was already implemented and very useful but was removed here: https://github.com/openai/codex/pull/16114
I'd love to see it back. For now I'm downgrading to version 0.117.0 to keep using the feature:
npm install -g @openai/codex@0.117.0Enable with:
codex features enable voice_transcriptionHi, @etraut-openai is seems that there is no clear issue to upvote this feature request?
How to use it ? I find Voice dictation
Use your voice to prompt Codex. Hold Ctrl+M while the composer is visible and start talking. Your voice will be transcribed. Edit the transcribed prompt or hit send to have Codex start work.
But cannot work ctrl + M