Skip to content
Guides

OpenClaw text to speech

Native voice messages, the provider matrix, and why replies stay text by default

5 min read

OpenClaw converts outbound replies into native voice messages on Feishu, Matrix, Telegram and WhatsApp, and into an audio attachment on every other channel; telephony and Talk receive raw audio streams instead. It is the speech-output half of Talk’s speech-to-text and text-to-speech mode, and it is off unless asked for: ordinary chat stays text until a user asks for audio, uses the speech command, or turns on automatic speech. Here is the quick start, the provider matrix, the personas and directives that shape a voice, and the caveat on the one free hosted voice.

Auto-TTS is off by default.

Quick start

  • Pick a provider: OpenAI and ElevenLabs are the most reliable hosted options, Microsoft and a local command-line engine work without any key.
  • Export the provider’s key, then set automatic speech to always and name the provider in the speech block of the config.
  • Test from chat: the status command shows the current state, and the audio command sends a one-off spoken reply.

The providers

Sixteen: Azure Speech, DeepInfra with a Kokoro default, ElevenLabs with cloning, multilingual voices and streaming for Discord playback, Fish Audio, Google Gemini in batch mode and persona-aware, Gradium, Inworld with streaming and native Opus notes, a local command, Microsoft’s Edge neural voices, MiniMax, OpenAI which also handles the automatic summary and persona instructions, OpenRouter with Kokoro, Volcengine, Vydra, xAI without native Opus, and Xiaomi. With several configured, the selected one is used first and the others are fallbacks, and the automatic summary runs on its own model, which has to be authenticated too.

How it behaves

  • Native voice notes on the four channels that support them, audio attachments elsewhere, and transcoding rules per channel on the output page.
  • Personas: one stable spoken identity with provider bindings and a fallback policy, and per-agent voice overrides so two assistants do not share a voice.
  • Directives inside a reply, slash commands for one-off audio and per-user preferences, and an automatic mode that can summarize a long reply before speaking it.

OpenClaw voice calls is the telephony side, where the same synthesis becomes a phone call, and OpenClaw on Telegram is the channel where most people hear it first.

The Microsoft caveat

The bundled Microsoft provider uses Edge’s online neural voices through a library: a public web service without a published SLA or quota, which the docs say to treat as best-effort. The old provider id normalizes to the new one and the doctor rewrites saved config. The OpenClaw config file is where the speech block lives.

On Diali

On Diali the settings live in the dashboard rather than in a config file, and every assistant speaks and transcribes voice notes out of the box, with no key: Edge voices for speech and an on-device Whisper model for transcription, and a provider key of your own switches it to that provider. Hosted OpenClaw on Diali is the assistant and Diali pricing lists what each plan includes.

  • Off by default; explicit intent or automatic mode turns it on.
  • Sixteen providers, the free one best-effort.
  • Personas keep one voice per assistant.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.