Voice Input

Voice input means dictating messages straight into the chat. The microphone button appears on the input toolbar when speech recognition is enabled in settings. Click it, say your message — the text lands in the input at the cursor position, and you can send it like any other message. Recognition supports several engines: from a free one built right into the browser to local Whisper on your server and cloud APIs (an API is simply the standard way programs talk to an online service).


Recognition engines

The engine is chosen with the speechRecognitionProvider setting. Eight engines are available, grouped into three families:

Browser — runs entirely in the browser on the Web Speech API; local server — Whisper on your server, offline; cloud — five presets with an API key plus your own OpenAI-compatible service.

EngineWhere it runsNotes
Browser (Web Speech API)in the browserfree; Chrome, Edge, Safari; live interim text; audio goes to the browser vendor’s cloud service, never to the Agent server; unsupported in Firefox
Local Whisperon the Agent serveroffline and free; the model downloads on first use; the only server engine that works without internet
OpenAIcloudmodel gpt-4o-mini-transcribe; requires an API key
Groqcloudmodel whisper-large-v3-turbo; requires an API key
OpenRoutercloudmodel openai/whisper-large-v3-turbo; requires an API key
Deepgramcloudmodel nova-3; requires an API key
ElevenLabscloudmodel scribe_v1; requires an API key
Custom (OpenAI-compatible)your serverany /audio/transcriptions address: whisper.cpp, LocalAI, vLLM, and others; your own endpoint, model, and key

Which engine to choose

  • Local Whisper — when you need to work without internet or want maximum privacy: audio never leaves your server;
  • Browser — a fast free option for Chrome, Edge, or Safari when in-browser recognition is enough;
  • Cloud presets — when you want high accuracy without loading your server; you pay the provider’s rates;
  • Custom — if you already run your own OpenAI-compatible recognition service (for example, whisper.cpp or vLLM).

How it works

The microphone button sits on the message input’s control bar, at the left end, just below the text field. While you speak, the button pulses; when a piece of audio goes out for recognition, a spinner appears on top of it. The finished text is inserted into the input at the cursor position, so you can keep dictating from any point of the message.

Continuous dictation. You don’t have to stop recording after each phrase. Cloud engines upload the accumulated audio every few seconds and insert each recognized piece as it comes back — there is no live preview for them, text lands in whole phrases. Local Whisper streams audio to the server live and appends words about a second after you say them, with the same interim preview the browser engine shows: a gray line above the input field.

How cloud requests travel. For cloud engines the Agent server acts as a middleman: it receives the audio from the browser and sends it to the provider’s API. The audio passes through exactly as recorded (webm/opus), with no conversion. A request to the provider times out after 30 seconds.

Settings

All speech settings live together in the “Speech Recognition” card (Settings → Tools). There are eight setting keys:

KeyDefaultWhat it does
enableSpeechRecognitionenabledshows the microphone button on the input toolbar
speechRecognitionProviderbrowserthe selected recognition engine (8 options)
whisperModelbasethe Local Whisper model size
languagefollows the locale (ru/en)recognition language for engines that support one
autoDetectLanguageenabledautomatic language detection instead of a fixed language
speechApiEndpointemptythe cloud engine’s service address; filled in when you pick a preset
speechApiKeyemptythe cloud provider’s API key
speechApiModelemptythe cloud engine’s model; filled in when you pick a preset

Cloud presets. When you pick a preset (OpenAI, Groq, OpenRouter, Deepgram, ElevenLabs), the speechApiEndpoint and speechApiModel fields are filled with default values automatically — you can adjust them afterwards. The key field stays empty: you enter the key yourself. For the Custom engine, all three fields are filled in manually.

Language and auto-detection. The language settings are honored by the engines that support them: Local Whisper and OpenAI-compatible engines accept a language code (ru, en, and so on) or detect the language automatically; Deepgram and ElevenLabs use their own equivalents. The browser engine takes a BCP-47 tag (for example, en-US) and does not support auto-detection — the switch is hidden for it.

Testing. The settings card includes a test: the button records three seconds of audio and runs it through the selected engine, showing the transcript or the engine’s error. For Local Whisper, the same card also offers the model status check (whether it is downloaded and how large it is), download, and re-download.

Local Whisper models

The Whisper model downloads automatically the first time you use the engine — the microphone button appears once the model is ready (if the download fails, the error is logged to the console only). Available sizes run from tiny (~39 MB) to large (~1.55 GB), plus turbo (~809 MB); the default is base (~74 MB). The bigger the model, the higher the accuracy, but the longer the download and the more resources recognition takes.

The first start of Local Whisper can take a few minutes: the engine needs to prepare an audio converter and load the model. While that happens, the microphone button shows a short hint — “installing ffmpeg” or “loading model”. This is normal, and the wait does not mean the request is stuck: once the preparation finishes, recognition works as usual.

Errors and troubleshooting

SituationWhat happens
Microphone access deniedan explicit toast explains how to allow access; recording does not start
No microphone or a capture errora generic “check your device” message; the settings test reports “no microphone found”
API key not setrecording does not start; a toast points you to the key in settings
Invalid or rejected cloud key (401/403)a dedicated “invalid API key” toast
Cloud service did not answer within 30 secondsa dedicated timeout toast
Silence with Local Whispera “speak louder” warning
Browser engine went silent (a pause in speech)recognition restarts automatically, dictation continues
Firefox with the Browser enginethe engine is marked unsupported in settings; you are advised to switch engines
No network with the browser enginean “internet required” toast
Recognizer unsupported or blockeda toast advising a different engine in settings

Security and privacy

Requests to cloud providers are made by the Agent server — it attaches the API key. The browser never talks to the provider directly: audio travels from your browser to the Agent server and on to the provider’s API. With the Browser engine, audio is processed by the browser vendor’s own cloud service (Google Chrome, Microsoft Edge, Safari) and never reaches the Agent server. With Local Whisper, audio never leaves your server at all — the most private option.


← Back: Settings

Next: Chat