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.

PropertyValue
Provider idinworld
Pluginofficial external package (@openclaw/inworld-speech)
ContractspeechProviders (TTS only)
Auth env varINWORLD_API_KEY (HTTP Basic, Base64 dashboard credential)
Base URLhttps://api.inworld.ai
Default voiceSarah
Default modelinworld-tts-1.5-max
OutputMP3 (default), OGG_OPUS (voice notes), PCM 22050 Hz (telephony)
Websiteinworld.ai
Docsdocs.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

OptionPathDescription
apiKeytts.providers.inworld.apiKeyBase64 dashboard credential. Falls back to INWORLD_API_KEY.
baseUrltts.providers.inworld.baseUrlOverride Inworld API base URL (default https://api.inworld.ai).
voiceIdtts.providers.inworld.voiceIdVoice identifier (default Sarah). Legacy alias: speakerVoiceId.
modelIdtts.providers.inworld.modelIdTTS model id (default inworld-tts-1.5-max).
temperaturetts.providers.inworld.temperatureSampling 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.