OpenClaw already has a nice speech-provider architecture behind messages.tts and supports providers like ElevenLabs, OpenAI, Microsoft, and MiniMax. It would be great to add Gemini 3.1 Flash TTS as a first-class speech provider.
Why this would be valuable
Gemini 3.1 Flash TTS appears to support expressive inline prompt tags / stage directions such as:
[excitedly]
[whispers]
- character/style directions
- pacing/delivery cues
That makes it especially appealing for:
- audio-note style replies
- more natural assistant voice messages
- storytelling / dramatic reads
- richer spoken UX
Request
Please add a built-in Gemini speech provider to the messages.tts surface, similar to the existing providers.
Ideally this would support:
-
Provider registration
- expose Gemini as a normal speech provider under
messages.tts.providers.<id>
-
Tag passthrough
- preserve expressive inline tags / stage directions in TTS input instead of stripping or normalizing them away
- especially when using
[[tts:text]]...[[/tts:text]]
-
Normal OpenClaw integration
- work with
/tts
- work with auto-TTS flows
- support normal voice-note/audio attachment delivery
- support provider selection/fallback like other TTS providers
-
Config shape
Something roughly like:
{
messages: {
tts: {
provider: "google",
providers: {
google: {
model: "gemini-3.1-flash-tts",
voice: "..."
}
}
}
}
}
-
Model-driven overrides
- if possible, let
[[tts:text]] and existing TTS directive flows feed expressive tagged text directly into Gemini TTS
Context
From the docs/code, OpenClaw already has a shared speech-provider registry architecture, so this seems like a natural extension rather than a one-off feature.
OpenClaw already has a nice speech-provider architecture behind
messages.ttsand supports providers like ElevenLabs, OpenAI, Microsoft, and MiniMax. It would be great to add Gemini 3.1 Flash TTS as a first-class speech provider.Why this would be valuable
Gemini 3.1 Flash TTS appears to support expressive inline prompt tags / stage directions such as:
[excitedly][whispers]That makes it especially appealing for:
Request
Please add a built-in Gemini speech provider to the
messages.ttssurface, similar to the existing providers.Ideally this would support:
Provider registration
messages.tts.providers.<id>Tag passthrough
[[tts:text]]...[[/tts:text]]Normal OpenClaw integration
/ttsConfig shape
Something roughly like:
Model-driven overrides
[[tts:text]]and existing TTS directive flows feed expressive tagged text directly into Gemini TTSContext
From the docs/code, OpenClaw already has a shared speech-provider registry architecture, so this seems like a natural extension rather than a one-off feature.