Guide · Dify
Saidwire speech-to-text in Dify
Dify's OpenAI-API-compatible model provider can add a Speech2text model with your own API Base URL. Add Saidwire there, make it the workspace's default Speech-to-Text Model, and the microphone button in your Dify chat apps sends audio to Saidwire. You don't need to write any code.
| you need | |
|---|---|
| Dify | Dify Cloud, or a self-hosted Dify with plugins (1.0 or later). Checked against version 0.0.73 of the OpenAI-API-compatible plugin. |
| Saidwire API key | sk_live_... from saidwire.com/dev (120 free hours, no card) |
1. Install the provider
- In Dify, open Plugins and search the Marketplace for
OpenAI-API-compatible(published by langgenius). - Click Install. If it's already installed, go to the next step. You can also get to it from Settings → Model Provider → Install model providers.
2. Add Saidwire as a Speech2text model
- Open Settings → Model Provider. On the OpenAI-API-compatible card, click Add Model.
- Fill in the form:
field value Model Type Speech2textModel Name saidwire-enModel display name Saidwire(optional)API Key your Saidwire key, sk_live_...Language en, or leave it emptyInitial Prompt leave it empty API Base URL https://api.saidwire.com/v1model name for API endpoint leave it empty - Click Save. To check the key, Dify transcribes its own 11-second sample clip. That uses 11 seconds of your free hours.
3. Make it the default Speech-to-Text Model
- In Settings → Model Provider, open Default Models.
- Under Speech-to-Text Model, pick
saidwire-en(or the display name you gave it), then save.
4. Turn on voice input in an app
- Open a chat app or chatflow and click Features.
- Turn on Speech to Text ("Voice input can be used in chat"), then publish the app.
- Click the microphone in the chat box and speak. The words go into the message box.
What Dify sends
For each recording, Dify sends one POST https://api.saidwire.com/v1/audio/transcriptions to Saidwire. The request is multipart and contains:
file: the recording. Chrome and Edge record WebM, and Safari records MP4.model: the Model Name you entered.languageandprompt: sent only if you filled in those fields.
Dify reads back only the text field. We sent this exact request against the live API before publishing this page.
Troubleshooting
| you see | fix |
|---|---|
Credentials validation failed, with 401 Incorrect API key provided | The key is wrong, has been revoked, or has a stray space. |
404 on save | Set API Base URL to exactly https://api.saidwire.com/v1. Dify adds /audio/transcriptions itself. |
400 ... unsupported_language | Saidwire transcribes English only. Set Language to en or leave it empty. |
| Saidwire isn't listed under Speech-to-Text Model | The model was added with a different Model Type. Add it again with Speech2text. |
429 | Too many recordings at once for your key (trial keys allow 4), or your free hours are used up. The message says which. |
| Timeouts on self-hosted Dify | The plugin daemon container needs outbound HTTPS access to api.saidwire.com. |
Good to know
- This setup gives you text only. If you need word timestamps or SRT/VTT subtitles, call the endpoint directly. The API docs list every field.
- Files can be up to 100 MB and 60 minutes. WAV, MP3, FLAC, Ogg/Opus, WebM and M4A/MP4 work. For M4A/MP4 files, the index has to be at the start of the file. Browser recordings already are. For ffmpeg output, add
-movflags +faststart. - Saidwire processes the audio in memory and does not store it.
- After the free hours, Saidwire costs $0.30 per audio hour, billed per second.
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.