# 🚀 opencode-voice-dictation ![Cover](assets/cover.png) > Voice dictation for OpenCode web — mic button via Whisper (Groq API) > Голосовой ввод для OpenCode web — кнопка микрофона через Whisper (Groq API) [English](#-english) | [Русский](#-русский) --- ## 🇺🇸 English ### ❓ Why Needed a way to dictate to agents from a phone. Stock Android voice input doesn't cut it. OpenCode web had no built-in voice. ### ✅ What A Tampermonkey/Violentmonkey userscript — a mic button in the OpenCode web UI. Language selection, auto-submit after dictation. Whisper via Groq API (requires your own key). ### Features | Feature | Description | |---------|-------------| | 🎤 Mic button | Click 🎤 in the input area, speak — text inserts into the prompt | | 🌍 Language | `ru`, `en`, or auto-detect | | ⚡ Auto-submit | Sends transcription to the agent after dictation (toggleable) | | 🧠 Whisper (Groq) | `whisper-large-v3` / `whisper-large-v3-turbo` via Groq API | | 📱 Mobile via Firefox | Firefox supports extensions; mobile Chrome doesn't | | ✅ Tested on 1.18.8 | Older versions via fallback selectors; needs "New UI" toggle | | 🔄 Auto-update | Updates itself via `@updateURL` — no manual reinstall | | ⌨️ Ctrl+Space | Desktop hotkey to start/stop recording | ### ⚡ Quick Start 1. Install [Tampermonkey](https://www.tampermonkey.net/) 2. Get a key at [console.groq.com/keys](https://console.groq.com/keys) 3. Open the [script install link](https://raw.githubusercontent.com/slaid098/opencode-voice-dictation/dist/opencode-voice-dictation.user.js) — it installs into Tampermonkey 4. Tampermonkey menu → **Set Groq API Key** → paste `gsk_...` ### 🌐 Custom STT Endpoint Groq may block direct requests from some networks. Point the script at your own nginx proxy: 1. Deploy an nginx reverse proxy that forwards to `api.groq.com`: ```nginx location /groq/ { proxy_pass https://api.groq.com/; proxy_set_header Host api.groq.com; } ``` 2. Tampermonkey menu → **Set STT Endpoint** → paste `https://your-domain.com/groq/openai/v1/audio/transcriptions` 3. Requests now go through your proxy. The userscript metadata uses `@connect *`, so any domain is allowed. ### 🌡️ Temperature Whisper may hallucinate on silence/noise. **Set Temperature** (default `0` = deterministic, range `0`–`1`) reduces hallucinations. --- ## 🇷🇺 Русский ### ❓ Зачем Нужен был способ диктовать агентам с телефона. Стандартный Android-ввод не удовлетворяет. Встроенного голоса в OpenCode web не было. ### ✅ Что Скрипт для Tampermonkey/Violentmonkey — кнопка микрофона в веб-интерфейсе OpenCode. Выбор языка, автоотправка после диктовки. Whisper через Groq API (нужен свой ключ). ### Фичи | Фича | Описание | |------|----------| | 🎤 Микрофон | Нажми 🎤 в поле ввода, говори — текст вставится в промт | | 🌍 Язык | `ru`, `en` или автоопределение | | ⚡ Автоотправка | Отправляет транскрипцию агенту после диктовки (опционально) | | 🧠 Whisper (Groq) | `whisper-large-v3` / `whisper-large-v3-turbo` через Groq API | | 📱 Мобайл через Firefox | Firefox поддерживает расширения; mobile Chrome — нет | | ✅ Проверено на 1.18.8 | Старые версии через fallback-селекторы; нужен «New UI» | | 🔄 Автообновление | Обновляется сам через `@updateURL` — без ручной переустановки | | ⌨️ Ctrl+Space | Горячая клавиша на десктопе | ### ⚡ Быстрый старт 1. Установи [Tampermonkey](https://www.tampermonkey.net/) 2. Получи ключ на [console.groq.com/keys](https://console.groq.com/keys) 3. Открой [ссылку установки скрипта](https://raw.githubusercontent.com/slaid098/opencode-voice-dictation/dist/opencode-voice-dictation.user.js) — скрипт установится в Tampermonkey 4. Меню Tampermonkey → **Set Groq API Key** → вставь `gsk_...` ### 🌐 Кастомный STT endpoint Groq может блокировать прямые запросы из некоторых сетей. Направь скрипт на свой nginx-прокси: 1. Разверни nginx reverse proxy, который форвардит на `api.groq.com`: ```nginx location /groq/ { proxy_pass https://api.groq.com/; proxy_set_header Host api.groq.com; } ``` 2. Меню Tampermonkey → **Set STT Endpoint** → вставь `https://your-domain.com/groq/openai/v1/audio/transcriptions` 3. Запросы пойдут через твой прокси. Метаблок юзерскрипта использует `@connect *`, поэтому разрешён любой домен. ### 🌡️ Temperature Whisper может галлюцинировать на тишине/шуме. **Set Temperature** (по умолчанию `0` = детерминированный вывод, диапазон `0`–`1`) снижает галлюцинации. --- ## 💬 Support and contacts / Поддержка и контакты 👉 **[slaid098.dev/support](https://slaid098.dev/support)**