65 lines
2.1 KiB
Markdown
65 lines
2.1 KiB
Markdown
|
|
# Desktop Voice Control
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
OpenCode Desktop includes built-in microphone voice control for Windows (and other Electron platforms). Speak to fill the prompt, or issue short voice commands such as `send`, `clear`, and `stop`.
|
||
|
|
|
||
|
|
## Requirements
|
||
|
|
|
||
|
|
1. OpenCode Desktop app (Electron)
|
||
|
|
2. One cloud STT API key in the environment:
|
||
|
|
- `DEEPGRAM_API_KEY` (recommended for streaming)
|
||
|
|
- `GROQ_API_KEY`
|
||
|
|
- `OPENAI_API_KEY`
|
||
|
|
3. Optional native recorder: SoX (`winget install sox`) or FFmpeg
|
||
|
|
If missing, the app automatically falls back to browser `getUserMedia` capture in the renderer.
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
1. Open **Settings → Voice**
|
||
|
|
2. Choose provider, language, and hotkey (default `Alt+Space`)
|
||
|
|
3. Press the microphone button next to Send, or press the global hotkey
|
||
|
|
4. Speak
|
||
|
|
5. Press the hotkey / button again to stop
|
||
|
|
6. Review the inserted text, then send (or say `send` if commands are enabled)
|
||
|
|
|
||
|
|
## Voice commands
|
||
|
|
|
||
|
|
When **Voice commands** is enabled, short phrases are treated as commands instead of dictation:
|
||
|
|
|
||
|
|
| Phrase | Action |
|
||
|
|
| --- | --- |
|
||
|
|
| send / submit / go | Submit prompt |
|
||
|
|
| run / execute | Submit prompt |
|
||
|
|
| accept / approve / yes | Allow pending permission once |
|
||
|
|
| reject / deny / no | Deny pending permission |
|
||
|
|
| clear / reset / erase | Clear prompt |
|
||
|
|
| stop / cancel / abort | Stop generation |
|
||
|
|
| scroll up / scroll down | Scroll timeline |
|
||
|
|
| focus | Focus prompt |
|
||
|
|
| new line / line break | Insert newline |
|
||
|
|
|
||
|
|
Longer utterances are always treated as dictation text.
|
||
|
|
|
||
|
|
## Architecture
|
||
|
|
|
||
|
|
```
|
||
|
|
Hotkey / Mic button
|
||
|
|
→ Desktop main VoiceManager
|
||
|
|
→ Native SoX/FFmpeg capture OR renderer PCM stream
|
||
|
|
→ Cloud STT (Deepgram WS / Groq / OpenAI Whisper)
|
||
|
|
→ IPC transcription event
|
||
|
|
→ App VoiceProvider
|
||
|
|
→ Command parser OR prompt insert
|
||
|
|
```
|
||
|
|
|
||
|
|
### Packages
|
||
|
|
|
||
|
|
- `packages/desktop/src/main/voice/` — main-process capture, STT, IPC, hotkeys
|
||
|
|
- `packages/app/src/voice/` — UI, context, command parser, settings
|
||
|
|
- `packages/opencode/src/config/voice.ts` — Effect Schema for voice config
|
||
|
|
|
||
|
|
## Security
|
||
|
|
|
||
|
|
API keys are read only from environment variables. They are never written to `opencode.json` or electron-store.
|