openclaw - 💡(How to fix) Fix TTS: Configuration recognized but speech synthesis never triggered (no TTS activity in logs) [2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#84210Fetched 2026-05-20 03:42:41
View on GitHub
Comments
2
Participants
2
Timeline
8
Reactions
1
Author
Timeline (top)
labeled ×6commented ×2

Fix Action

Fix / Workaround

  1. [[tts:...]] inline directives — When responding to voice messages with [[tts:]], Gateway logs dispatch complete (queuedFinal=false, replies=0) — the reply is dropped entirely. When responding to text messages, replies=1 but only plain text is delivered, no audio.

Code Example

{
  "messages": {
    "tts": {
      "auto": "always",
      "provider": "openai",
      "providers": {
        "openai": {
          "baseUrl": "http://192.168.88.88:8000/v1",
          "apiKey": "***",
          "model": "fish-audio-s2-pro-8bit",
          "voice": "default"
        }
      },
      "maxTextLength": 4000,
      "modelOverrides": { "enabled": true }
    }
  },
  "tools": {
    "profile": "coding",
    "allow": ["tts"]
  }
}

---

[reload] config change detected; evaluating reload (messages.tts)
[reload] config change detected; evaluating reload (messages.tts.providers.openai.model, ...)
RAW_BUFFERClick to expand / collapse

Describe the bug

TTS is fully configured but never triggers speech synthesis on any channel (Feishu + WeChat tested). Gateway logs show zero TTS activity despite correct configuration.

Environment

  • OpenClaw version: 2026.5.18
  • macOS: 26.4.1 (25E253) on Apple Silicon
  • Node.js: v25.9.0
  • ffmpeg: 8.1.1 (present)
  • Channel: Feishu (WebSocket mode) + WeChat (openclaw-weixin plugin)

TTS Configuration

{
  "messages": {
    "tts": {
      "auto": "always",
      "provider": "openai",
      "providers": {
        "openai": {
          "baseUrl": "http://192.168.88.88:8000/v1",
          "apiKey": "***",
          "model": "fish-audio-s2-pro-8bit",
          "voice": "default"
        }
      },
      "maxTextLength": 4000,
      "modelOverrides": { "enabled": true }
    }
  },
  "tools": {
    "profile": "coding",
    "allow": ["tts"]
  }
}

What works

  • Direct curl to the TTS endpoint (POST /v1/audio/speech) generates valid WAV audio successfully
  • STT (SenseVoiceSmall via same Mac Studio server) works — transcribes inbound voice messages correctly
  • Gateway hot-reloads TTS config changes (confirmed in logs): config change detected; evaluating reload (messages.tts.*)

What doesn't work

  1. [[tts:...]] inline directives — When responding to voice messages with [[tts:]], Gateway logs dispatch complete (queuedFinal=false, replies=0) — the reply is dropped entirely. When responding to text messages, replies=1 but only plain text is delivered, no audio.

  2. auto: "inbound" — Receiving a voice message does not trigger automatic TTS of the text reply. Plain text is delivered.

  3. auto: "always" — After switching to always, every reply is still plain text with no audio.

Gateway logs — ZERO TTS activity

Despite the [[tts:]] directives and auto: always, the Gateway log contains no TTS processing entries at all — no speech generation, no transcoding, no errors. The only TTS-related entries are config reload notifications:

[reload] config change detected; evaluating reload (messages.tts)
[reload] config change detected; evaluating reload (messages.tts.providers.openai.model, ...)

Steps to reproduce

  1. Configure messages.tts with an OpenAI-compatible TTS endpoint (tested with fish-audio-s2-pro-8bit and Kokoro-82M-bf16)
  2. Enable TTS tool via tools.allow: ["tts"]
  3. Set auto: "always" or use [[tts:...]] in replies
  4. Send a voice or text message on Feishu/WeChat
  5. Observe: reply is text-only, no audio is generated or delivered

Expected behavior

With auto: "always" and a working TTS provider, all assistant replies should be delivered as voice messages (or text + voice) on channels that support native voice notes (Feishu, WeChat). With [[tts:...]] directives, the tagged text should be synthesized and delivered as audio.

Additional context

  • Multiple TTS models tested: Kokoro-82M-bf16, fish-audio-s2-pro-8bit (both work via direct curl)
  • Tool tts was not in the coding profile defaults — had to be manually added to tools.allow
  • Setting modelOverrides.enabled: true made no difference
  • Same behavior on both Feishu and WeChat channels
  • WeChat conversation also showed "only text, no voice" (parallel testing, separate session)

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

With auto: "always" and a working TTS provider, all assistant replies should be delivered as voice messages (or text + voice) on channels that support native voice notes (Feishu, WeChat). With [[tts:...]] directives, the tagged text should be synthesized and delivered as audio.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix TTS: Configuration recognized but speech synthesis never triggered (no TTS activity in logs) [2 comments, 2 participants]