


























@@ -7,14 +7,15 @@ read_when:
77title: "Text-to-speech"
88---
9910-OpenClaw can convert outbound replies into audio using ElevenLabs, Google Gemini, Gradium, Local CLI, Microsoft, MiniMax, OpenAI, Vydra, xAI, or Xiaomi MiMo.
10+OpenClaw can convert outbound replies into audio using ElevenLabs, Google Gemini, Gradium, Inworld, Local CLI, Microsoft, MiniMax, OpenAI, Vydra, xAI, or Xiaomi MiMo.
1111It works anywhere OpenClaw can send audio.
12121313## Supported services
14141515- **ElevenLabs** (primary or fallback provider)
1616- **Google Gemini** (primary or fallback provider; uses Gemini API TTS)
1717- **Gradium** (primary or fallback provider; supports voice-note and telephony output)
18+- **Inworld** (primary or fallback provider; uses the Inworld streaming TTS API)
1819- **Local CLI** (primary or fallback provider; runs a configured local TTS command)
1920- **Microsoft** (primary or fallback provider; current bundled implementation uses `node-edge-tts`)
2021- **MiniMax** (primary or fallback provider; uses the T2A v2 API)
@@ -38,11 +39,12 @@ or ElevenLabs.
38393940## Optional keys
404141-If you want OpenAI, ElevenLabs, Google Gemini, Gradium, MiniMax, Vydra, xAI, or Xiaomi MiMo:
42+If you want ElevenLabs, Google Gemini, Gradium, Inworld, MiniMax, OpenAI, Vydra, xAI, or Xiaomi MiMo:
42434344- `ELEVENLABS_API_KEY` (or `XI_API_KEY`)
4445- `GEMINI_API_KEY` (or `GOOGLE_API_KEY`)
4546- `GRADIUM_API_KEY`
47+- `INWORLD_API_KEY`
4648- `MINIMAX_API_KEY`; MiniMax TTS also accepts Token Plan auth via
4749`MINIMAX_OAUTH_TOKEN`, `MINIMAX_CODE_PLAN_KEY`, or
4850`MINIMAX_CODING_API_KEY`
@@ -64,6 +66,7 @@ so that provider must also be authenticated if you enable summaries.
6466- [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech)
6567- [ElevenLabs Authentication](https://elevenlabs.io/docs/api-reference/authentication)
6668- [Gradium](/providers/gradium)
69+- [Inworld TTS API](https://docs.inworld.ai/tts/tts)
6770- [MiniMax T2A v2 API](https://platform.minimaxi.com/document/T2A%20V2)
6871- [Xiaomi MiMo speech synthesis](/providers/xiaomi#text-to-speech)
6972- [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts)
@@ -217,6 +220,35 @@ by the bundled Google image-generation provider. Resolution order is
217220`messages.tts.providers.google.apiKey` -> `models.providers.google.apiKey` ->
218221`GEMINI_API_KEY` -> `GOOGLE_API_KEY`.
219222223+### Inworld primary
224+225+```json5
226+{
227+ messages: {
228+ tts: {
229+ auto: "always",
230+ provider: "inworld",
231+ providers: {
232+ inworld: {
233+ apiKey: "inworld_api_key",
234+ baseUrl: "https://api.inworld.ai",
235+ voiceId: "Sarah",
236+ modelId: "inworld-tts-1.5-max",
237+ temperature: 0.8,
238+ },
239+ },
240+ },
241+ },
242+}
243+```
244+245+The `apiKey` value must be the Base64-encoded credential string copied
246+verbatim from the Inworld dashboard (Workspace > API Keys). The provider
247+sends it as `Authorization: Basic <apiKey>` without any additional
248+encoding, so do not pass a raw bearer token and do not Base64-encode it
249+yourself. The key falls back to the `INWORLD_API_KEY` env var. See
250+[Inworld provider](/providers/inworld) for full setup.
251+220252### xAI primary
221253222254```json5
@@ -415,7 +447,7 @@ Then run:
415447- `tagged` only sends audio when the reply includes `[[tts:key=value]]` directives or a `[[tts:text]]...[[/tts:text]]` block.
416448- `enabled`: legacy toggle (doctor migrates this to `auto`).
417449- `mode`: `"final"` (default) or `"all"` (includes tool/block replies).
418-- `provider`: speech provider id such as `"elevenlabs"`, `"google"`, `"gradium"`, `"microsoft"`, `"minimax"`, `"openai"`, `"vydra"`, `"xai"`, or `"xiaomi"` (fallback is automatic).
450+- `provider`: speech provider id such as `"elevenlabs"`, `"google"`, `"gradium"`, `"inworld"`, `"microsoft"`, `"minimax"`, `"openai"`, `"vydra"`, `"xai"`, or `"xiaomi"` (fallback is automatic).
419451- If `provider` is **unset**, OpenClaw uses the first configured speech provider in registry auto-select order.
420452- Legacy `provider: "edge"` config is repaired by `openclaw doctor --fix` and
421453 rewritten to `provider: "microsoft"`.
@@ -429,7 +461,7 @@ Then run:
429461- `maxTextLength`: hard cap for TTS input (chars). `/tts audio` fails if exceeded.
430462- `timeoutMs`: request timeout (ms).
431463- `prefsPath`: override the local prefs JSON path (provider/limit/summary).
432-- `apiKey` values fall back to env vars (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`, `XIAOMI_API_KEY`).
464+- `apiKey` values fall back to env vars (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `INWORLD_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`, `XIAOMI_API_KEY`).
433465- `providers.elevenlabs.baseUrl`: override ElevenLabs API base URL.
434466- `providers.openai.baseUrl`: override the OpenAI TTS endpoint.
435467- Resolution order: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1`
@@ -453,6 +485,10 @@ Then run:
453485- `providers.tts-local-cli.timeoutMs`: command timeout in milliseconds (default `120000`).
454486- `providers.tts-local-cli.cwd`: optional command working directory.
455487- `providers.tts-local-cli.env`: optional string environment overrides for the command.
488+- `providers.inworld.baseUrl`: override Inworld API base URL (default `https://api.inworld.ai`).
489+- `providers.inworld.voiceId`: Inworld voice identifier (default `Sarah`).
490+- `providers.inworld.modelId`: Inworld TTS model (default `inworld-tts-1.5-max`; also supports `inworld-tts-1.5-mini`, `inworld-tts-1-max`, `inworld-tts-1`).
491+- `providers.inworld.temperature`: sampling temperature `0..2` (optional).
456492- `providers.google.model`: Gemini TTS model (default `gemini-3.1-flash-tts-preview`).
457493- `providers.google.voiceName`: Gemini prebuilt voice name (default `Kore`; `voice` is also accepted).
458494- `providers.google.audioProfile`: natural-language style prompt prepended before the spoken text.
@@ -586,6 +622,7 @@ These override `messages.tts.*` for that host.
586622 with `ffmpeg`.
587623- **Google Gemini**: Gemini API TTS returns raw 24kHz PCM. OpenClaw wraps it as WAV for audio attachments, transcodes it to 48kHz Opus for voice-note targets, and returns PCM directly for Talk/telephony.
588624- **Gradium**: WAV for audio attachments, Opus for voice-note targets, and `ulaw_8000` at 8 kHz for telephony.
625+- **Inworld**: MP3 for normal audio attachments, native `OGG_OPUS` for voice-note targets, and raw `PCM` at 22050 Hz for Talk/telephony.
589626- **xAI**: MP3 by default; `responseFormat` may be `mp3`, `wav`, `pcm`, `mulaw`, or `alaw`. OpenClaw uses xAI's batch REST TTS endpoint and returns a complete audio attachment; xAI's streaming TTS WebSocket is not used by this provider path. Native Opus voice-note format is not supported by this path.
590627- **Microsoft**: uses `microsoft.outputFormat` (default `audio-24khz-48kbitrate-mono-mp3`).
591628- The bundled transport accepts an `outputFormat`, but not all formats are available from the service.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。