Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11), free to diverge. Tree copied sans upstream .git; upstream remote added for future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19. Preserves docs/ARCHITECTURE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
129 lines
4.2 KiB
Markdown
129 lines
4.2 KiB
Markdown
---
|
|
summary: "Use Gradium text-to-speech in OpenClaw"
|
|
read_when:
|
|
- You want Gradium for text-to-speech
|
|
- You need Gradium API key, voice, or directive token configuration
|
|
title: "Gradium"
|
|
---
|
|
|
|
[Gradium](https://gradium.ai) is a text-to-speech provider for OpenClaw. It renders standard audio replies (WAV), voice-note-compatible Opus output, and 8 kHz u-law audio for telephony surfaces.
|
|
|
|
| Property | Value |
|
|
| ------------- | ------------------------------------ |
|
|
| Provider id | `gradium` |
|
|
| Auth | `GRADIUM_API_KEY` or config `apiKey` |
|
|
| Base URL | `https://api.gradium.ai` (default) |
|
|
| Default voice | `Emma` (`YTpq7expH9539ERJ`) |
|
|
|
|
## Install plugin
|
|
|
|
Gradium is an official external plugin. Install it, then restart Gateway:
|
|
|
|
```bash
|
|
openclaw plugins install @openclaw/gradium-speech
|
|
openclaw gateway restart
|
|
```
|
|
|
|
## Setup
|
|
|
|
Create a Gradium API key, then expose it with an env var or the config key. Config takes precedence over the env var.
|
|
|
|
<Tabs>
|
|
<Tab title="Env var">
|
|
```bash
|
|
export GRADIUM_API_KEY="gsk_..."
|
|
```
|
|
</Tab>
|
|
|
|
<Tab title="Config key">
|
|
```json5
|
|
{
|
|
messages: {
|
|
tts: {
|
|
auto: "always",
|
|
provider: "gradium",
|
|
providers: {
|
|
gradium: {
|
|
apiKey: "${GRADIUM_API_KEY}",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
```
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Config
|
|
|
|
```json5
|
|
{
|
|
messages: {
|
|
tts: {
|
|
auto: "always",
|
|
provider: "gradium",
|
|
providers: {
|
|
gradium: {
|
|
speakerVoiceId: "YTpq7expH9539ERJ",
|
|
// apiKey: "${GRADIUM_API_KEY}",
|
|
// baseUrl: "https://api.gradium.ai",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
```
|
|
|
|
| Key | Type | Description |
|
|
| ----------------------------------------------- | ------ | --------------------------------------------------------------------------------- |
|
|
| `messages.tts.providers.gradium.apiKey` | string | Resolved API key. Supports `${ENV}` and secret refs. |
|
|
| `messages.tts.providers.gradium.baseUrl` | string | API origin override. Trailing slashes stripped. Default `https://api.gradium.ai`. |
|
|
| `messages.tts.providers.gradium.speakerVoiceId` | string | Default voice id used when no directive override is present. |
|
|
|
|
Output format is chosen automatically by target surface (see [Output](#output)) and is not configurable in `openclaw.json`.
|
|
|
|
## Voices
|
|
|
|
| Name | Voice ID |
|
|
| ------------------ | ------------------ |
|
|
| Arthur | `3jUdJyOi9pgbxBTK` |
|
|
| Christina | `2H4HY2CBNyJHBCrP` |
|
|
| Emma **(default)** | `YTpq7expH9539ERJ` |
|
|
| John | `KWJiFWu2O9nMPYcR` |
|
|
| Kent | `LFZvm12tW_z0xfGo` |
|
|
| Sydney | `jtEKaLYNn6iif5PR` |
|
|
| Tiffany | `Eu9iL_CYe8N-Gkx_` |
|
|
|
|
### Per-message voice override
|
|
|
|
When the active speech policy allows voice overrides, switch voices inline with a directive token (any of these are equivalent, all take a provider-native voice id):
|
|
|
|
```text
|
|
/voice:LFZvm12tW_z0xfGo
|
|
/voice_id:LFZvm12tW_z0xfGo
|
|
/voiceid:LFZvm12tW_z0xfGo
|
|
/gradium_voice:LFZvm12tW_z0xfGo
|
|
/gradiumvoice:LFZvm12tW_z0xfGo
|
|
```
|
|
|
|
If the speech policy disables voice overrides, the directive is consumed but ignored.
|
|
|
|
## Output
|
|
|
|
Output format is selected by target surface; the provider does not synthesize other formats.
|
|
|
|
| Target | Format | File ext | Sample rate | Voice-compatible flag |
|
|
| -------------- | ----------- | -------- | ----------- | --------------------- |
|
|
| Standard audio | `wav` | `.wav` | provider | no |
|
|
| Voice note | `opus` | `.opus` | provider | yes |
|
|
| Telephony | `ulaw_8000` | n/a | 8 kHz | n/a |
|
|
|
|
## Auto-select order
|
|
|
|
Among configured TTS providers, Gradium's auto-select order is `30`. See [Text-to-Speech](/tools/tts) for how OpenClaw picks the active provider when `messages.tts.provider` is not pinned.
|
|
|
|
## Related
|
|
|
|
- [Text-to-Speech](/tools/tts)
|
|
- [Media Overview](/tools/media-overview)
|