Skip to content
Source
Sign inSign up

voice-input.md

158 lines9.2 KB

1# Voice input
2​
3Dictate into the composer instead of typing. The transcript lands in your draft
4for review, and only sending the message sends anything to an agent. Dictation
5also works in citation comments, diff and file annotations, pull request
6comments, replies, and review summaries, and in the desktop app's browser
7annotation editor.
8​
9On iPhone and Android, voice input transcribes on the device by default. To opt in
10to a named environment on that phone, open **Settings → Voice → Transcribe on**. See
11[Voice input on mobile](./composer.md#voice-input-on-mobile).
12​
13## Choose where audio goes
14​
15On web and desktop, you choose where transcription runs.
16Nothing is sent until you choose one: open **Settings → Voice** and set
17**Transcribe with** to the environment that should transcribe for you.
18On a new device, the microphone or dictation shortcut opens that setting from the composer.
19Microphone audio recorded on this device is sent to that environment over your
20authenticated connection, transcribed there, and discarded. The choice is saved
21on this device only, so every computer and browser you use asks for it once.
22Set it back to **Off** at any time; a recording in progress is discarded.
23​
24If the chosen environment goes offline, voice input waits for it. T3 Code never
25substitutes another environment.
26​
27For cloud dictation, choose **OpenAI** or **Grok Voice Transcribe** via the environment
28you want to use. If it needs a key, enter one and choose **Save and enable**.
29You can also choose a [secret provider](secrets.md) instead of **Value** and enter a
30reference. Unlock the vault on that environment before dictating. Anyone with
31dictation access to the environment can use the key, but only this device opts in.
32If a key is already saved, just confirm the provider. After
33you stop, the environment forwards your recording and any vocabulary hints to
34the selected provider, which bills its API account. No local model download or chat
35subscription is needed. Switch back to **This device** on mobile or **Off** on
36web and desktop to stop sharing. Removing the key stops that provider for everyone
37on the environment.
38​
39**OpenRouter** works the same way but has no default model: pick one from its live
40speech-to-text catalog when you enable it, or later under **Manage OpenRouter**.
41The model choice is yours alone and needs no settings access, so anyone with
42dictation access can pick a different model without touching the saved key.
43OpenRouter chooses who runs the model. T3 requests zero data retention; your
44OpenRouter account can also allow safety retention. If no endpoint qualifies,
45dictation fails instead of switching models.
46Vocabulary hints are not sent to OpenRouter; dictionary spellings are applied
47after transcription. If OpenRouter stops listing your model, dictation stops
48until you choose another.
49​
50## Set up a model
51​
52In **Settings → Voice → Transcription**, download a model and choose **Use model** if it
53isn’t already selected. **Test model** lets you try it without sending a message.
54If you use the composer microphone before a model is installed, it offers to download one.
55The recommendation uses your Voice language, or your system’s preferred languages with **Auto-detect**.
56​
57If another app already downloaded one of these models, you don’t need a second copy.
58**Download** first looks in Handy’s model folder and the Hugging Face cache on that
59environment and uses a copy it finds there instead of downloading. For a copy anywhere
60else, on web or desktop, paste the path of the model file or its folder under the model
61list and choose **Use existing**. The path is on the environment
62that transcribes, not on the device you are using. T3 Code checks that the file is exactly a
63model from its list and then uses it in place. Removing the model in T3 Code leaves your file
64alone; if the other app deletes it, download or link the model again. Files in another
65format, such as Core ML, ONNX, or MLX builds of the same model, can’t be used.
66​
67Select the languages you dictate in to compare models that support all of them.
68Accuracy shows how often the model got words or characters wrong in each
69language; speed is the time to transcribe 30 seconds on a reference GPU. Choose
70**All languages** to browse the full catalog. Filtering does not switch your model.
71​
72**Advanced** controls GPU or CPU use and when an idle model is unloaded. With hardware set to
73**Auto**, a recording that fails on the GPU is retried once on that same
74environment's CPU; a GPU you picked yourself reports the error instead. Nothing
75is ever retried on another environment. Models marked **Live preview** show
76text while you speak. Other models can process long recordings in chunks at pauses
77while you record; models with built-in long-form support transcribe when you stop.
78​
79## Dictate
80​
81Press the microphone in the composer, or `mod+shift+d` (`mod` is Command on
82macOS and Ctrl elsewhere). Press again, or the check mark, to finish; `Esc`
83discards the recording and leaves your draft unchanged. Recordings last up to
84five minutes. Text is inserted at the cursor or replaces the selection you had
85when recording started, and the editor is read-only while dictation runs.
86Changes that reach the draft meanwhile, such as a cited message, are kept;
87the text then goes after your selection instead of replacing it.
88​
89Pressing Send while dictating finishes the recording and sends the draft once
90the transcript has been inserted. Cancelling also cancels that queued send. In
91the other editors, Save, Comment, Reply, Submit review, or Attach works the
92same way, and the shortcut targets the editor that has focus, or the composer
93when none does. In the desktop browser's annotation editor, the microphone and
94the shortcut work while the page has focus; the page you are annotating never
95sees the recording, which runs in T3 Code itself.
96​
97**Dictation shortcut** in Voice settings picks how the keybinding behaves:
98**Auto** tap-toggles or records while held, **Hold** records only while the keys
99are down, and **Toggle** always needs a second press. Change the chord itself in
100[Keybindings settings](./keybindings.md).
101​
102## Improve recognition
103​
104- **Language** picks what you speak. **Auto** lets a multilingual model detect
105 it. Models that translate offer **Translate to English**.
106- **Dictionary** holds names and terms the model should get right. Add an alias
107 under a term when transcription keeps producing a particular misspelling.
108 Your dictionary is saved on this device. The name of the project you dictate
109 in is sent along as a hint.
110- **Project dictionary** is vocabulary saved with a project on its environment,
111 so everyone who dictates in that project gets the same spellings. Pick the
112 project at the top of Settings to edit it; with an environment selected, the
113 entries apply to every project there. Project spellings win when they overlap
114 your personal dictionary. Each recording carries up to 100 entries from the
115 two combined.
116- **Silence filtering** is on by default. Your chosen environment skips non-speech
117 audio before transcription. Turn it off to keep those sections. Filtering happens
118 after upload: it does not grant permission to send audio or reduce how much is sent.
119- **Remove filler words** drops hesitation sounds from finished transcripts.
120​
121Language and these preferences travel with each recording to the chosen
122environment; nothing else about the project is sent.
123​
124## Clean up transcripts
125​
126**Transcript cleanup** is a separate choice and is off by default. When on, the
127finished transcript and up to 1,024 characters each from before, inside, and
128after your selection are sent to the cleanup model on the draft's environment,
129which fixes punctuation, numbers, and spoken corrections such as "make it 42,
130sorry, 24". Depending on the model, that can involve an external service. Audio is never
131sent to it. Use the built-in instructions or write your own, press **Skip**
132while cleanup runs to insert the raw transcript, and if cleanup fails the raw
133transcript is inserted.
134​
135Cleanup uses the environment's text generation model unless you pick a
136**Cleanup model** for that environment, for example a cheaper or faster one.
137It can be a text generator instead of a coding agent; see
138[text generation models](./text-generation.md).
139​
140If cleanup misses the way you correct yourself, set a **Correction cue**: the
141word or phrase you say to flag a correction, such as "scratch that". Cleanup
142applies the correction only where the context shows one and drops the cue, and
143the model hears the cue as a dictionary hint.
144​
145## Test and troubleshoot
146​
147In **Settings → Voice**, voice input uses the first connected microphone in the
148**Microphone** list. A microphone joins the list below System default the first
149time it is seen, so nothing changes until you move it up. If a preferred
150microphone is unplugged, the next connected one is used.
151​
152**Test microphone** records from that microphone for up to ten seconds and
153plays it back in your browser; the audio stays on this device and is never transcribed, so silent playback
154points at the microphone. **Test model** on the selected model shows a transcript using the
155same environment, language, and dictionary as the composer, but skips transcript
156cleanup even when it is on, so you see what the model heard. Browser recording
157needs HTTPS or localhost and microphone permission; for a remote server over
158plain HTTP, use the desktop app.