Guide · Open WebUI
Saidwire speech-to-text in Open WebUI
Open WebUI sends microphone recordings and uploaded audio to a speech-to-text engine. Its OpenAI engine works with any server that offers the OpenAI transcription API, which includes Saidwire. Setup takes about two minutes and needs admin rights.
| you need | |
|---|---|
| Open WebUI | an admin account. Labels below match Open WebUI 0.12. |
| Saidwire API key | sk_live_... from saidwire.com/dev (120 free hours, no card) |
1. Admin settings
- Click your profile icon at the bottom-left of the sidebar, then Admin Panel.
- Open the Settings tab, then Audio in the list on the left.
- In the Speech-to-Text section, set:
field value Speech-to-Text Engine OpenAIAPI Base URL https://api.saidwire.com/v1(end it at/v1, with no trailing slash)API Key your Saidwire key, sk_live_...Request Format Multipart UploadSTT Model saidwire-enSupported MIME Types leave blank - Click Save at the bottom of the page.
Leave the Text-to-Speech section as it is. Saidwire does speech-to-text only.
2. Each user's settings
Each user can override the engine for their own account. Check yours once:
- Click your profile icon, then Settings, then Audio.
- Under STT Settings, set Speech-to-Text Engine to
Default.Web APIuses the browser's own recognition and never reaches Saidwire. - Set Language to
enor leave it blank. - Click Save.
3. Test it
Open a chat, click the microphone button in the message box, say a sentence, and stop the recording. The transcript appears in the message box. Voice mode (the call button) uses the same engine.
If you get an error instead, see Troubleshooting below.
Using environment variables instead
For Docker or Kubernetes deployments you can set the same values at start-up:
AUDIO_STT_ENGINE=openai AUDIO_STT_OPENAI_API_BASE_URL=https://api.saidwire.com/v1 AUDIO_STT_OPENAI_API_KEY=sk_live_xxxxxxxx.yyyyyyyyyyyyyyyy AUDIO_STT_OPENAI_API_REQUEST_FORMAT=multipart AUDIO_STT_MODEL=saidwire-en
docker run -d -p 3000:8080 \ -e AUDIO_STT_ENGINE=openai \ -e AUDIO_STT_OPENAI_API_BASE_URL=https://api.saidwire.com/v1 \ -e AUDIO_STT_OPENAI_API_KEY=$SAIDWIRE_API_KEY \ -e AUDIO_STT_MODEL=saidwire-en \ -v open-webui:/app/backend/data --name open-webui \ ghcr.io/open-webui/open-webui:main
Open WebUI saves settings in its database. Once someone has clicked Save on the Audio page, the saved values win over the environment variables. If a change does not take effect, check Admin Panel → Settings → Audio.
Troubleshooting
| you see | fix |
|---|---|
404 or Not Found | The API Base URL must be exactly https://api.saidwire.com/v1. Open WebUI adds /audio/transcriptions itself. |
External: Incorrect API key provided. | The key is wrong, revoked or has a stray space. Paste it again. |
External: ... language ... | Saidwire transcribes English only. Set the user's Language to en or blank. |
External: ... with a 429 | Too many recordings at once for your key (trial keys allow 4), or your free hours are used up. The message says which. |
| Nothing reaches Saidwire | The user's own Speech-to-Text Engine is set to Web API. Set it to Default. |
Good to know
- Open WebUI uploads the whole recording after you stop speaking, so the transcript arrives in one piece. For words while someone is still speaking, use the streaming API.
- Saidwire processes the audio in memory and does not store it. Open WebUI keeps its own copy of each recording on your Open WebUI server.
- Usage is billed per second of audio at $0.30 per audio hour, after the free hours.
Stuck? Email support@saidwire.com with the x-request-id from the failed call.
OpenAI is a trademark of OpenAI. Open WebUI, n8n, LiteLLM, Dify, Flowise, Vercel and the AI SDK belong to their respective owners. Saidwire is not affiliated with OpenAI or with these projects.