Skip to main content

Voice Input

Speech-to-text dictation built on the OpenAI Realtime API, with an optional AI correction pass over the dictated text in agent input bars.

Updated
Reviewed

Overview

Voice Input lets you dictate into any agent's hybrid input bar. Audio streams to the OpenAI Realtime API, and text appears in the input bar as you speak. An optional AI correction pass cleans up the dictated passage before you send the command, fixing punctuation, technical terms, and filler words.

You need two things to get started: an OpenAI API key and microphone permission at the OS level. One key handles both transcription and AI correction, so there's only one to configure.

Note
Voice Input is disabled by default. Enable it in Settings > Voice Input.

Upgrading from an Earlier Version

Version 0.10.0 changed the transcription backend from Deepgram to the OpenAI Realtime API. On first launch after upgrading, Daintree migrates your saved settings. Any OpenAI key you had saved for correction is reused as your transcription key, old Deepgram keys are dropped, and legacy transcription model selections are rewritten to the current model.

Prerequisites

  • OpenAI API key (starts with sk-). This one key handles both real-time transcription and the AI correction pass. Create one at platform.openai.com/api-keys. The key is validated when you save.
  • Microphone access granted at the OS level (macOS, Windows, or Linux).

Transcription is billed per minute of audio, correction per token, both on your OpenAI account. See OpenAI's pricing for current rates.

Setup

Enable Voice Input

Voice Input is a global setting. The same configuration applies across all your projects.

  1. Open Settings > Voice Input.
  2. In the Speech-to-text section, toggle Voice input on.
  3. Grant microphone permission if you haven't already (see below).
  4. Choose your microphone (see Select a Microphone).
  5. Enter your OpenAI API key (starts with sk-). The key is validated when you save and shows as Configured once accepted.
  6. Choose your language from the 10 supported options: English, Spanish, French, German, Japanese, Chinese, Korean, Portuguese, Italian, and Russian.
  7. Select a paragraph break strategy. Spoken commands (default, English only) lets you say "new paragraph" to insert a break. Manual Enter requires you to press Enter instead. Non-English languages fall back to Manual Enter automatically.

Grant Microphone Permission

Daintree needs microphone access from your operating system before it can capture audio. The settings panel shows your current permission status and gives instructions for your OS.

Open System Settings > Privacy & Security > Microphone and enable Daintree. If permission hasn't been requested yet, Daintree shows a Request button that triggers the system dialog.

If permission was denied earlier, click Open System Settings in the Daintree settings panel to go straight to the Microphone privacy settings. Toggle Daintree on, then click Re-check back in Daintree.

Select a Microphone

The Microphone dropdown sits just below the permission row in the Speech-to-text section. It defaults to System default, which follows whatever input device your OS is using. Pick a specific device from the list to pin dictation to it regardless of the system default.

The list comes from your operating system's audio inputs. It refreshes when devices change, so plugging in a headset or USB mic mid-session adds it to the list. A refresh button next to the dropdown re-enumerates the inputs manually if you need it.

Starting and Stopping Dictation

There are three ways to start voice dictation:

  • Mic button. Each agent panel has its own mic button in the hybrid input bar. Click it to start recording for that panel.
  • Keyboard shortcut: Cmd+Shift+V on macOS, Ctrl+Shift+V on Windows/Linux. Toggles voice dictation for the focused panel. When an agent input bar has focus, the same shortcut pastes clipboard content as plain text instead of toggling voice.
  • Action palette: search for "Toggle Voice Dictation".

While recording, the mic button shows an animated ring that pulses with your audio level, and a square stop icon replaces the mic icon. Click it again or press the shortcut to stop. In agent input bars, pressing Enter also stops recording and triggers the wait-before-submit flow. Press Escape to cancel an active recording; the text dictated so far stays in place.

Text appears in the input bar as you speak. Interim (in-progress) transcription shows at reduced opacity, then solidifies once the transcription is final. The session moves through five states: idle, connecting (up to 10 seconds), recording, finishing (up to 3 seconds to drain final text), and back to idle.

Toolbar Indicator

When a recording session is active, a mic icon appears in the global toolbar with a pulsing accent dot and elapsed time in M:SS format. The tooltip shows which project and worktree is recording. Clicking the indicator focuses the panel where recording is happening. It doesn't stop the session.

Tip
The Cmd+Shift+V shortcut is context-sensitive in agent input bars. When an input bar has focus, it pastes clipboard content as plain text instead of toggling voice. Use the mic button directly to start recording from there.

Submitting While Recording

Pressing Enter while recording, or while AI corrections are still in flight, triggers the wait-before-submit flow:

  1. Daintree stops the recording session.
  2. A spinner overlay appears on the input bar, which becomes read-only.
  3. Daintree waits up to 10 seconds for any pending AI corrections to settle.
  4. Once corrections finish, or the timeout is reached, the text is submitted.

Press Escape to cancel the wait and keep the text in the input bar for further editing.

Note
If corrections don't settle within 10 seconds, Daintree submits the text anyway. The timeout is a safety valve, so pressing Enter never blocks indefinitely.

Paragraph Breaks

Spoken Commands (Default, English Only)

With the spoken-command strategy selected, you can say formatting commands while dictating. Daintree applies them in post-processing and strips them from the transcript:

Spoken commandInserts
"new paragraph"A blank line (\n\n)
"new line"A single newline (\n)
"period" / "full stop".
"comma",
"question mark"?
"exclamation point" / "exclamation mark"!

Only a trailing chain of commands at the end of an utterance is converted. Commands in the middle of a sentence ("I'll add a new paragraph here") stay literal, so you can still talk about them. Chains work too: "hello comma new paragraph" becomes hello,\n\n. You can also press Enter at any time to commit the current paragraph manually.

Note
Spoken commands only work in English. For every other language, the strategy falls back to manual Enter, regardless of what's selected in settings.

Manual Enter

With the manual strategy, paragraph breaks come from pressing Enter only. Spoken formatting commands are disabled. Choose this if you dictate in a non-English language, or if you want explicit control over paragraph breaks.

AI Text Correction

When AI correction is enabled, Daintree sends the whole dictated passage to the OpenAI Responses API once recording stops, then replaces the raw text with the corrected version. It fixes punctuation, filler words (um, uh), technical term spelling, and homophones.

The pass runs only after a clean stop, with correction enabled and text to correct. It doesn't run if you cancel with Escape, hit an error, or stop one recording to immediately start another.

While the request is in flight, the dictated text carries a green dotted underline. When the response comes back, the corrected version replaces it in place. If you start editing that text mid-correction, Daintree keeps your raw version instead. Interim text that's still being transcribed shows in a separate faded italic style, so you can tell the two states apart.

Note
Prompt caching keeps AI correction costs low. The correction prompt is structured so only the dictated passage changes per request, which lets the provider cache the fixed portion.

Enable AI Correction

  1. In Settings > Voice Input, find the AI text correction section. It's visible once Voice Input is enabled.
  2. Toggle AI text correction on.
  3. Choose a correction model. GPT-5 Mini (higher quality, recommended) is the default. GPT-5 Nano is faster and costs less.

There's no separate key to enter. Correction reuses the OpenAI API key from the Speech-to-text section.

Custom Instructions

You can add project-specific correction rules in the Custom Instructions textarea. They're appended to the core correction prompt, so the AI applies them alongside its built-in rules. For example: "Always capitalize ProductName as one word" or "React component names should use PascalCase."

The Inspect core prompt toggle in settings lets you view the full base correction prompt, read-only. Your project name and custom dictionary terms are injected into this prompt automatically.

File Reference Resolution

When AI correction is enabled, Daintree can detect spoken file references and resolve them into @file links. Use natural phrases as you dictate:

  • "Link to the auth helper"
  • "At file the button component"
  • "Reference the user model"
  • "Add file the config service"
  • "Open the main layout"

Daintree detects these patterns and sends them to a file resolver, which searches the project file tree and uses AI to pick the best match. The resolved path appears as an @path/to/file reference and renders as a clickable file chip in the input bar.

If resolution fails, the text falls back to @?description so you can see what was being looked up and fix it by hand.

This feature requires AI correction to be enabled. It's toggled via Resolve file references in settings, on by default when your OpenAI key is configured.

Tip
Use natural phrases like "link to the auth helper" or "at the Button component". You don't need exact file names or paths. Daintree resolves the description against the project file tree.

Custom Dictionary

The custom dictionary lets you add up to 100 domain-specific terms: project names, product names, technical vocabulary, and abbreviations the base model might not get right. Each term counts toward the 100-term limit shown next to the field.

Add terms in Settings > Voice Input under the Speech-to-text section. Each one appears as a removable pill. The terms are injected into the AI correction prompt as highest-priority required substitutions, so the correction pass spells them the way you intend.

Your project name is included automatically. There's no need to add it yourself.

Tip
Add technical names, internal package names, and unusual abbreviations your team uses. They steer the AI correction pass toward the spellings you expect.

Settings Reference

All voice input settings are in Settings > Voice Input.

Speech-to-text

SettingValues / Notes
Voice inputEnabled / Disabled (default: Disabled)
MicrophoneSystem default (default) or a specific input device
OpenAI API Keysk-... prefix, validated on save. Powers both transcription and correction.
LanguageEnglish, Spanish, French, German, Japanese, Chinese, Korean, Portuguese, Italian, Russian
Paragraph BreaksSpoken commands (default, English only) or Manual Enter
Custom DictionaryUp to 100 terms, injected into the correction prompt

AI text correction

This section is only visible when Voice Input is enabled.

SettingValues / Notes
AI text correctionEnabled / Disabled (default: Disabled)
Correction ModelGPT-5 Mini (higher quality, recommended, default) or GPT-5 Nano (faster, lower cost)
Resolve File ReferencesEnabled by default when an OpenAI key is configured
Custom InstructionsFree-form textarea for project-specific correction rules

Correction uses the OpenAI API key from the Speech-to-text section. This section has no separate key.

Keyboard Shortcuts

ActionShortcut
Toggle voice dictation (global)Cmd+Shift+V / Ctrl+Shift+V
Paste as plain text (when input bar has focus)Cmd+Shift+V / Ctrl+Shift+V
Commit paragraph / submitEnter
Cancel recording or wait-before-submitEscape

The Cmd+Shift+V shortcut is context-sensitive in agent input bars: it toggles voice when the bar is unfocused, and pastes clipboard content as plain text when it has focus. Escape cancels an active recording, keeping the text dictated so far, and also cancels the wait-before-submit flow. See Keyboard Shortcuts for the full reference.

Troubleshooting

Mic button is hidden

The microphone button only appears when Voice Input is fully configured. Check that:

  • Voice Input is enabled in Settings > Voice Input.
  • A valid OpenAI API key has been entered.
  • Microphone permission is granted at the OS level.

"Connection timed out"

Daintree couldn't reach the OpenAI Realtime API within 10 seconds. Check your internet connection, confirm your OpenAI API key is valid, and confirm your account has available credits.

"Invalid API key"

Shown when saving settings if the key format is wrong or the key is no longer valid. Re-enter a valid OpenAI key. They start with sk-.

Spoken paragraph commands aren't working

Spoken commands (like "new paragraph") only work when:

  • The language is set to English.
  • The paragraph break strategy is set to Spoken commands.

Also remember that only a trailing chain of commands at the end of an utterance is converted. A command in the middle of a sentence stays literal.

Note
Non-English languages fall back to manual Enter automatically, even when the Spoken commands strategy is selected.

AI correction not running

The correction pass only runs after a clean stop. Check that:

  • AI text correction is toggled on and a valid OpenAI API key is entered.
  • There's dictated text present when you stop.
  • You stopped the recording normally. Cancelling with Escape, hitting an error, or stopping one recording to immediately start another all skip the pass.

File references showing as @?

The @?description format means file resolution failed for that reference. It happens when the project file tree has no close match, or when the description was too vague for the AI to resolve. Use more specific descriptions when you dictate file references.