Inworld Streaming Text-to-Speech for OpenClaw Replies
Inworld provides streaming text-to-speech for OpenClaw outbound replies, producing MP3 or OGG_OPUS audio and raw PCM for telephony channels. This page covers provider configuration, authentication, and defaults.
Read this when
- You want Inworld speech synthesis for outbound replies
- You need PCM telephony or OGG_OPUS voice-note output from Inworld
Inworld provides streaming text-to-speech (TTS). Within OpenClaw, it generates audio for outbound replies (MP3 by default, or OGG_OPUS when a voice note is needed) as well as raw PCM audio for telephony channels like Voice Call.
OpenClaw sends requests to Inworld's streaming TTS endpoint, joins the base64 audio chunks it receives into one buffer, then passes that buffer along 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
When a Gateway is already running, installation is applied on the spot; if not, it takes effect the next time the Gateway starts. See Apply changes and inspect.
Getting started
Set your API key
Grab the credential from your Inworld dashboard (Workspace > API Keys) and store it as an env var. That value is passed through as-is for HTTP Basic auth, so never Base64-encode it a second time and never turn it into 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
Route a reply through any channel you have connected. Inworld performs the synthesis, and OpenClaw delivers the result as MP3 (or OGG_OPUS if the channel is expecting 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 authenticates over HTTP Basic using one Base64-encoded credential string. Take it verbatim from the Inworld dashboard. No further encoding happens on the provider side: it transmits the value as Authorization: Basic <apiKey>, so you must not Base64-encode it on your own and must not supply a bearer-style token. The same callout appears in TTS auth notes.
Models
Model ids that work: inworld-tts-1.5-max (default), inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
Audio outputs
By default, replies come back as MP3. If the channel target is voice-note, OpenClaw requests OGG_OPUS from Inworld so the audio arrives as a native voice bubble. For telephony, synthesis produces raw PCM at 22050 Hz, which feeds the telephony bridge.
Custom endpoints
Use tts.providers.inworld.baseUrl to point at a different API host. Any trailing slashes get removed before a request goes out.
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.