Inworld Streaming TTS Provider for OpenClaw Replies
This page covers Inworld as a streaming text-to-speech provider for OpenClaw, used to generate outbound reply audio. Developers integrating Inworld TTS into OpenClaw will find configuration details and output formats.
Read this when
- You want Inworld speech synthesis for outbound replies
- You need PCM telephony or OGG_OPUS voice-note output from Inworld
Inworld is a streaming text-to-speech (TTS) provider. OpenClaw uses it to generate outbound reply audio (MP3 by default, OGG_OPUS for voice notes) and raw PCM audio for telephony channels like Voice Call.
OpenClaw sends requests to Inworld's streaming TTS endpoint, concatenates the returned base64 audio chunks into one buffer, and passes the result to the standard reply-audio pipeline.
| Property | Value |
|---|---|
| Provider id | inworld |
| Plugin | official external package (@openclaw/inworld-speech) |
| Contract | speechProviders (TTS only) |
| Auth env var | INWORLD_API_KEY (HTTP Basic, Base64 dashboard credential) |
| Base URL | https://api.inworld.ai |
| Default voice | Sarah |
| Default model | inworld-tts-1.5-max |
| Output | MP3 (default), OGG_OPUS (voice notes), PCM 22050 Hz (telephony) |
| Website | inworld.ai |
| Docs | docs.inworld.ai/tts/tts |
Install plugin
openclaw plugins install @openclaw/inworld-speech
openclaw gateway restart
Getting started
Set your API key
Get the credential from your Inworld dashboard (Workspace > API Keys) and set it as an environment variable. The value is sent exactly as the HTTP Basic credential, so do not Base64-encode it again or convert it to a bearer token.
INWORLD_API_KEY=<base64-credential-from-dashboard>
Select Inworld in tts
{
tts: {
auto: "always",
provider: "inworld",
providers: {
inworld: {
voiceId: "Sarah",
modelId: "inworld-tts-1.5-max",
},
},
},
}
Send a message
Send a reply through any connected channel. OpenClaw synthesizes the audio with Inworld and delivers it as MP3 (or OGG_OPUS when the channel expects a voice note).
Configuration options
| Option | Path | Description |
|---|---|---|
apiKey | tts.providers.inworld.apiKey | Base64 dashboard credential. Falls back to INWORLD_API_KEY. |
baseUrl | tts.providers.inworld.baseUrl | Override Inworld API base URL (default https://api.inworld.ai). |
voiceId | tts.providers.inworld.voiceId | Voice identifier (default Sarah). Legacy alias: speakerVoiceId. |
modelId | tts.providers.inworld.modelId | TTS model id (default inworld-tts-1.5-max). |
temperature | tts.providers.inworld.temperature | Sampling temperature, 0 (exclusive) to 2 (optional). |
Notes
Authentication
Inworld uses HTTP Basic auth with a single Base64-encoded credential string. Copy it directly from the Inworld dashboard. The provider sends it as Authorization: Basic <apiKey> without any additional encoding, so do not Base64-encode it yourself and do not pass a bearer-style token. See TTS auth notes for the same callout.
Models
Supported model ids: inworld-tts-1.5-max (default), inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
Audio outputs
Replies use MP3 by default. When the channel target is voice-note, OpenClaw requests OGG_OPUS from Inworld so the audio plays as a native voice bubble. Telephony synthesis uses raw PCM at 22050 Hz to feed the telephony bridge.
Custom endpoints
Override the API host with tts.providers.inworld.baseUrl. Trailing slashes are removed before requests are sent.
Related
-
Text-to-speech, TTS overview, providers, and
ttsconfig. -
Configuration, Full config reference including
ttssettings. -
Providers, All supported OpenClaw providers.
-
Troubleshooting, Common issues and debugging steps.