48 KiB
| read_when | sidebarTitle | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Text to speech (TTS) | Sprachausgabe für ausgehende Antworten — Provider, Personas, Slash-Befehle und kanalspezifische Ausgabe | Text-zu-Sprache |
|
OpenClaw kann ausgehende Antworten in Audio über 14 Sprach-Provider umwandeln und native Sprachnachrichten in Feishu, Matrix, Telegram und WhatsApp, Audioanhänge überall sonst sowie PCM/Ulaw-Streams für Telefonie und Talk bereitstellen.
Schnellstart
OpenAI und ElevenLabs sind die zuverlässigsten gehosteten Optionen. Microsoft und Local CLI funktionieren ohne API-Schlüssel. Die vollständige Liste finden Sie in der [Provider-Matrix](#supported-providers). Exportieren Sie die Umgebungsvariable für Ihren Provider (zum Beispiel `OPENAI_API_KEY`, `ELEVENLABS_API_KEY`). Microsoft und Local CLI benötigen keinen Schlüssel. Setzen Sie `messages.tts.auto: "always"` und `messages.tts.provider`:```json5
{
messages: {
tts: {
auto: "always",
provider: "elevenlabs",
},
},
}
```
`/tts status` zeigt den aktuellen Status. `/tts audio Hello from OpenClaw`
sendet eine einmalige Audioantwort.
Auto-TTS ist standardmäßig **ausgeschaltet**. Wenn `messages.tts.provider` nicht gesetzt ist,
wählt OpenClaw den ersten konfigurierten Provider in der Auto-Select-Reihenfolge der Registry aus.
Das integrierte Agent-Tool `tts` ist nur für explizite Absichten vorgesehen: Gewöhnlicher Chat bleibt
Text, außer der Benutzer fragt nach Audio, verwendet `/tts` oder aktiviert Auto-TTS/direktive
Sprachausgabe.
Unterstützte Provider
| Provider | Auth | Hinweise |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (auch AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
Native Ogg/Opus-Sprachnotizen-Ausgabe und Telefonie. |
| DeepInfra | DEEPINFRA_API_KEY |
OpenAI-kompatible TTS. Standard ist hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY oder XI_API_KEY |
Voice Cloning, mehrsprachig, deterministisch über seed. |
| Google Gemini | GEMINI_API_KEY oder GOOGLE_API_KEY |
Gemini API TTS; persona-bewusst über promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Sprachnotizen- und Telefonieausgabe. |
| Inworld | INWORLD_API_KEY |
Streaming-TTS-API. Native Opus-Sprachnotiz und PCM-Telefonie. |
| Local CLI | keine | Führt einen konfigurierten lokalen TTS-Befehl aus. |
| Microsoft | keine | Öffentliche neuronale Edge-TTS über node-edge-tts. Best-Effort, kein SLA. |
| MiniMax | MINIMAX_API_KEY (oder Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
T2A-v2-API. Standard ist speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
Wird auch für Auto-Zusammenfassung verwendet; unterstützt Persona-instructions. |
| OpenRouter | OPENROUTER_API_KEY (kann models.providers.openrouter.apiKey wiederverwenden) |
Standardmodell hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY oder BYTEPLUS_SEED_SPEECH_API_KEY (alte AppID/Token: VOLCENGINE_TTS_APPID/_TOKEN) |
BytePlus Seed Speech HTTP API. |
| Vydra | VYDRA_API_KEY |
Gemeinsamer Bild-, Video- und Sprach-Provider. |
| xAI | XAI_API_KEY |
xAI-Batch-TTS. Native Opus-Sprachnotiz wird nicht unterstützt. |
| Xiaomi MiMo | XIAOMI_API_KEY |
MiMo TTS über Xiaomi Chat Completions. |
Wenn mehrere Provider konfiguriert sind, wird der ausgewählte zuerst verwendet und die
anderen dienen als Fallback-Optionen. Auto-Zusammenfassung verwendet summaryModel (oder
agents.defaults.model.primary), daher muss auch dieser Provider authentifiziert sein,
wenn Sie Zusammenfassungen aktiviert lassen.
Konfiguration
Die TTS-Konfiguration befindet sich unter messages.tts in ~/.openclaw/openclaw.json. Wählen Sie ein
Preset aus und passen Sie den Provider-Block an:
Sprach-Overrides pro Agent
Verwenden Sie agents.list[].tts, wenn ein Agent mit einem anderen Provider,
einer anderen Stimme, einem anderen Modell, einer anderen Persona oder einem anderen Auto-TTS-Modus sprechen soll. Der Agent-Block wird per Deep-Merge über
messages.tts gelegt, sodass Provider-Zugangsdaten in der globalen Provider-Konfiguration bleiben können:
{
messages: {
tts: {
auto: "always",
provider: "elevenlabs",
providers: {
elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" },
},
},
},
agents: {
list: [
{
id: "reader",
tts: {
providers: {
elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
},
},
},
],
},
}
Um eine Persona pro Agent festzulegen, setzen Sie agents.list[].tts.persona neben der Provider-
Konfiguration — sie überschreibt die globale messages.tts.persona nur für diesen Agent.
Prioritätsreihenfolge für automatische Antworten, /tts audio, /tts status und das
Agent-Tool tts:
messages.tts- aktives
agents.list[].tts - Kanal-Override, wenn der Kanal
channels.<channel>.ttsunterstützt - Konto-Override, wenn der Kanal
channels.<channel>.accounts.<id>.ttsübergibt - lokale
/tts-Einstellungen für diesen Host - Inline-Direktiven
[[tts:...]], wenn Modell-Overrides aktiviert sind
Kanal- und Konto-Overrides verwenden dieselbe Struktur wie messages.tts und
werden per Deep-Merge über die früheren Ebenen gelegt. So können gemeinsame
Provider-Zugangsdaten in messages.tts bleiben, während ein Kanal oder Bot-Konto
nur Stimme, Modell, Persona oder Auto-Modus ändert:
{
messages: {
tts: {
provider: "openai",
providers: {
openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },
},
},
},
channels: {
feishu: {
accounts: {
english: {
tts: {
providers: {
openai: { voice: "shimmer" },
},
},
},
},
},
},
}
Personas
Eine Persona ist eine stabile gesprochene Identität, die deterministisch über Provider hinweg angewendet werden kann. Sie kann einen Provider bevorzugen, Provider-neutrale Prompt-Absicht definieren und Provider-spezifische Bindungen für Stimmen, Modelle, Prompt-Vorlagen, Seeds und Stimmeinstellungen enthalten.
Minimale Persona
{
messages: {
tts: {
auto: "always",
persona: "narrator",
personas: {
narrator: {
label: "Narrator",
provider: "elevenlabs",
providers: {
elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2" },
},
},
},
},
},
}
Vollständige Persona (Provider-neutraler Prompt)
{
messages: {
tts: {
auto: "always",
persona: "alfred",
personas: {
alfred: {
label: "Alfred",
description: "Dry, warm British butler narrator.",
provider: "google",
fallbackPolicy: "preserve-persona",
prompt: {
profile: "A brilliant British butler. Dry, witty, warm, charming, emotionally expressive, never generic.",
scene: "A quiet late-night study. Close-mic narration for a trusted operator.",
sampleContext: "The speaker is answering a private technical request with concise confidence and dry warmth.",
style: "Refined, understated, lightly amused.",
accent: "British English.",
pacing: "Measured, with short dramatic pauses.",
constraints: ["Do not read configuration values aloud.", "Do not explain the persona."],
},
providers: {
google: {
model: "gemini-3.1-flash-tts-preview",
voiceName: "Algieba",
promptTemplate: "audio-profile-v1",
},
openai: { model: "gpt-4o-mini-tts", voice: "cedar" },
elevenlabs: {
voiceId: "voice_id",
modelId: "eleven_multilingual_v2",
seed: 42,
voiceSettings: {
stability: 0.65,
similarityBoost: 0.8,
style: 0.25,
useSpeakerBoost: true,
speed: 0.95,
},
},
},
},
},
},
},
}
Persona-Auflösung
Die aktive Persona wird deterministisch ausgewählt:
- lokale Einstellung
/tts persona <id>, falls gesetzt. messages.tts.persona, falls gesetzt.- Keine Persona.
Die Provider-Auswahl läuft mit expliziten Angaben zuerst:
- Direkte Overrides (CLI, Gateway, Talk, erlaubte TTS-Direktiven).
- lokale Einstellung
/tts provider <id>. providerder aktiven Persona.messages.tts.provider.- Automatische Auswahl aus der Registry.
Für jeden Provider-Versuch führt OpenClaw Konfigurationen in dieser Reihenfolge zusammen:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Vertrauenswürdige Request-Overrides
- Erlaubte vom Modell ausgegebene TTS-Direktiven-Overrides
Wie Provider Persona-Prompts verwenden
Persona-Prompt-Felder (profile, scene, sampleContext, style, accent,
pacing, constraints) sind Provider-neutral. Jeder Provider entscheidet,
wie er sie verwendet:
Fallback-Richtlinie
fallbackPolicy steuert das Verhalten, wenn eine Persona keine Bindung für den
versuchten Provider hat:
| Richtlinie | Verhalten |
|---|---|
preserve-persona |
Standard. Provider-neutrale Prompt-Felder bleiben verfügbar; der Provider kann sie verwenden oder ignorieren. |
provider-defaults |
Die Persona wird für diesen Versuch aus der Prompt-Vorbereitung ausgelassen; der Provider verwendet seine neutralen Standardwerte, während der Fallback zu anderen Providern fortgesetzt wird. |
fail |
Überspringt diesen Provider-Versuch mit reasonCode: "not_configured" und personaBinding: "missing". Fallback-Provider werden weiterhin versucht. |
Der gesamte TTS-Request schlägt nur fehl, wenn jeder versuchte Provider übersprungen wird oder fehlschlägt.
Modellgesteuerte Direktiven
Standardmäßig kann der Assistent [[tts:...]]-Direktiven ausgeben, um
Stimme, Modell oder Geschwindigkeit für eine einzelne Antwort zu überschreiben,
sowie optional einen [[tts:text]]...[[/tts:text]]-Block für expressive Hinweise,
die nur im Audio erscheinen sollen:
Here you go.
[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](laughs) Read the song once more.[[/tts:text]]
Wenn messages.tts.auto auf "tagged" gesetzt ist, sind Direktiven erforderlich,
um Audio auszulösen. Die Streaming-Blockauslieferung entfernt Direktiven aus dem
sichtbaren Text, bevor der Kanal sie sieht, selbst wenn sie über benachbarte Blöcke
verteilt sind.
provider=... wird ignoriert, sofern nicht modelOverrides.allowProvider: true gilt. Wenn eine
Antwort provider=... deklariert, werden die anderen Schlüssel in dieser Direktive
nur von diesem Provider geparst; nicht unterstützte Schlüssel werden entfernt und als
TTS-Direktivenwarnungen gemeldet.
Verfügbare Direktiven-Schlüssel:
provider(registrierte Provider-ID; erfordertallowProvider: true)voice/voiceName/voice_name/google_voice/voiceIdmodel/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(MiniMax-Lautstärke, 0-10)pitch(MiniMax-Ganzzahltonhöhe, -12 bis 12; Nachkommastellen werden abgeschnitten)emotion(Volcengine-Emotionstag)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Modell-Overrides vollständig deaktivieren:
{ messages: { tts: { modelOverrides: { enabled: false } } } }
Provider-Wechsel erlauben, während andere Regler konfigurierbar bleiben:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }
Slash-Befehle
Einzelner Befehl /tts. Auf Discord registriert OpenClaw außerdem /voice, weil
/tts ein integrierter Discord-Befehl ist — Text /tts ... funktioniert weiterhin.
/tts off | on | status
/tts chat on | off | default
/tts latest
/tts provider <id>
/tts persona <id> | off
/tts limit <chars>
/tts summary off
/tts audio <text>
Befehle erfordern einen autorisierten Absender (Allowlist-/Owner-Regeln gelten) und entweder
`commands.text` oder native Befehlsregistrierung muss aktiviert sein.
Verhaltenshinweise:
/tts onschreibt die lokale TTS-Einstellung aufalways;/tts offschreibt sie aufoff./tts chat on|off|defaultschreibt einen sitzungsbezogenen Auto-TTS-Override für den aktuellen Chat./tts persona <id>schreibt die lokale Persona-Einstellung;/tts persona offlöscht sie./tts latestliest die letzte Assistentenantwort aus dem aktuellen Sitzungstranskript und sendet sie einmalig als Audio. Auf dem Sitzungseintrag wird nur ein Hash dieser Antwort gespeichert, um doppelte Sprachausgaben zu unterdrücken./tts audioerzeugt eine einmalige Audioantwort (schaltet TTS nicht ein).limitundsummarywerden in lokalen Einstellungen gespeichert, nicht in der Hauptkonfiguration./tts statusenthält Fallback-Diagnosen für den letzten Versuch —Fallback: <primary> -> <used>,Attempts: ...und Details pro Versuch (provider:outcome(reasonCode) latency)./statuszeigt den aktiven TTS-Modus sowie konfigurierten Provider, Modell, Stimme und bereinigte benutzerdefinierte Endpunkt-Metadaten, wenn TTS aktiviert ist.
Benutzerspezifische Einstellungen
Slash-Befehle schreiben lokale Overrides nach prefsPath. Der Standard ist
~/.openclaw/settings/tts.json; überschreiben Sie ihn mit der Env-Var
OPENCLAW_TTS_PREFS oder messages.tts.prefsPath.
| Gespeichertes Feld | Wirkung |
|---|---|
auto |
Lokaler Auto-TTS-Override (always, off, …) |
provider |
Lokaler primärer Provider-Override |
persona |
Lokaler Persona-Override |
maxLength |
Schwellenwert für Zusammenfassung (standardmäßig 1500 Zeichen) |
summarize |
Zusammenfassungs-Schalter (standardmäßig true) |
Diese überschreiben die effektive Konfiguration aus messages.tts plus den aktiven
agents.list[].tts-Block für diesen Host.
Ausgabeformate (fest)
Die TTS-Sprachauslieferung wird durch Kanal-Capabilities gesteuert. Kanal-Plugins
geben an, ob TTS im Sprachstil Provider nach einem nativen voice-note-Ziel fragen
oder die normale audio-file-Synthese beibehalten und nur kompatible Ausgaben für
die Sprachauslieferung markieren soll.
- Kanäle mit Sprachnotiz-Unterstützung: Sprachnotiz-Antworten bevorzugen Opus (
opus_48000_64von ElevenLabs,opusvon OpenAI).- 48 kHz / 64 kbps ist ein guter Kompromiss für Sprachnachrichten.
- Feishu / WhatsApp: Wenn eine Sprachnotiz-Antwort als MP3/WebM/WAV/M4A
oder eine andere wahrscheinliche Audiodatei erzeugt wird, transkodiert das Kanal-Plugin
sie vor dem Senden der nativen Sprachnachricht mit
ffmpegzu 48 kHz Ogg/Opus. WhatsApp sendet das Ergebnis über die Baileys-audio-Payload mitptt: trueundaudio/ogg; codecs=opus. Wenn die Konvertierung fehlschlägt, erhält Feishu die Originaldatei als Anhang; das Senden über WhatsApp schlägt fehl, statt eine inkompatible PTT-Payload zu posten. - BlueBubbles: Belässt die Provider-Synthese auf dem normalen Audiodateipfad; MP3- und CAF-Ausgaben werden für die Zustellung als iMessage-Sprachmemo markiert.
- Andere Kanäle: MP3 (
mp3_44100_128von ElevenLabs,mp3von OpenAI).- 44,1 kHz / 128 kbps ist die Standardbalance für Sprachverständlichkeit.
- MiniMax: MP3 (
speech-2.8-hd-Modell, 32-kHz-Abtastrate) für normale Audioanhänge. Für vom Kanal angegebene Sprachnotiz-Ziele transkodiert OpenClaw die MiniMax-MP3 vor der Zustellung mitffmpegzu 48 kHz Opus, wenn der Kanal Transkodierung angibt. - Xiaomi MiMo: Standardmäßig MP3 oder WAV, wenn konfiguriert. Für vom Kanal angegebene Sprachnotiz-Ziele transkodiert OpenClaw die Xiaomi-Ausgabe vor der Zustellung mit
ffmpegzu 48 kHz Opus, wenn der Kanal Transkodierung angibt. - Lokale CLI: Verwendet das konfigurierte
outputFormat. Sprachnotiz-Ziele werden zu Ogg/Opus konvertiert, und Telefonieausgabe wird mitffmpegin rohes 16-kHz-Mono-PCM konvertiert. - Google Gemini: Gemini API TTS gibt rohes 24-kHz-PCM zurück. OpenClaw verpackt es für Audioanhänge als WAV, transkodiert es für Sprachnotiz-Ziele zu 48 kHz Opus und gibt PCM direkt für Talk/Telefonie zurück.
- Gradium: WAV für Audioanhänge, Opus für Sprachnotiz-Ziele und
ulaw_8000bei 8 kHz für Telefonie. - Inworld: MP3 für normale Audioanhänge, natives
OGG_OPUSfür Sprachnotiz-Ziele und rohesPCMbei 22050 Hz für Talk/Telefonie. - xAI: Standardmäßig MP3;
responseFormatkannmp3,wav,pcm,mulawoderalawsein. OpenClaw verwendet den Batch-REST-TTS-Endpunkt von xAI und gibt einen vollständigen Audioanhang zurück; der Streaming-TTS-WebSocket von xAI wird von diesem Provider-Pfad nicht verwendet. Das native Opus-Format für Sprachnotizen wird von diesem Pfad nicht unterstützt. - Microsoft: Verwendet
microsoft.outputFormat(Standard:audio-24khz-48kbitrate-mono-mp3).- Der gebündelte Transport akzeptiert ein
outputFormat, aber nicht alle Formate sind über den Dienst verfügbar. - Ausgabeformatwerte folgen den Microsoft Speech-Ausgabeformaten (einschließlich Ogg/WebM Opus).
- Telegram
sendVoiceakzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie garantierte Opus-Sprachnachrichten benötigen. - Wenn das konfigurierte Microsoft-Ausgabeformat fehlschlägt, versucht OpenClaw es erneut mit MP3.
- Der gebündelte Transport akzeptiert ein
OpenAI/ElevenLabs-Ausgabeformate sind pro Kanal festgelegt (siehe oben).
Auto-TTS-Verhalten
Wenn messages.tts.auto aktiviert ist, führt OpenClaw Folgendes aus:
- Überspringt TTS, wenn die Antwort bereits Medien oder eine
MEDIA:-Direktive enthält. - Überspringt sehr kurze Antworten (unter 10 Zeichen).
- Fasst lange Antworten zusammen, wenn Zusammenfassungen aktiviert sind, mithilfe von
summaryModel(oderagents.defaults.model.primary). - Hängt das erzeugte Audio an die Antwort an.
- In
mode: "final"wird weiterhin reines Audio-TTS für gestreamte finale Antworten gesendet, nachdem der Textstream abgeschlossen ist; die erzeugten Medien durchlaufen dieselbe Kanal-Mediennormalisierung wie normale Antwortanhänge.
Wenn die Antwort maxLength überschreitet und die Zusammenfassung deaktiviert ist (oder kein API-Schlüssel für das
Zusammenfassungsmodell vorhanden ist), wird Audio übersprungen und die normale Textantwort gesendet.
Antwort -> TTS aktiviert?
nein -> Text senden
ja -> enthält Medien / MEDIA: / kurz?
ja -> Text senden
nein -> Länge > Limit?
nein -> TTS -> Audio anhängen
ja -> Zusammenfassung aktiviert?
nein -> Text senden
ja -> zusammenfassen -> TTS -> Audio anhängen
Ausgabeformate nach Kanal
| Ziel | Format |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Antworten als Sprachnotiz bevorzugen Opus (opus_48000_64 von ElevenLabs, opus von OpenAI). 48 kHz / 64 kbps balanciert Klarheit und Größe. |
| Andere Kanäle | MP3 (mp3_44100_128 von ElevenLabs, mp3 von OpenAI). 44,1 kHz / 128 kbps als Standard für Sprache. |
| Talk / Telefonie | Provider-natives PCM (Inworld 22050 Hz, Google 24 kHz) oder ulaw_8000 von Gradium für Telefonie. |
Hinweise pro Provider:
- Feishu- / WhatsApp-Transkodierung: Wenn eine Antwort als Sprachnotiz als MP3/WebM/WAV/M4A ankommt, transkodiert das Kanal-Plugin mit
ffmpegnach 48 kHz Ogg/Opus. WhatsApp sendet über Baileys mitptt: trueundaudio/ogg; codecs=opus. Wenn die Konvertierung fehlschlägt: Feishu fällt auf das Anhängen der Originaldatei zurück; der WhatsApp-Versand schlägt fehl, statt eine inkompatible PTT-Nutzlast zu posten. - MiniMax / Xiaomi MiMo: Standardmäßig MP3 (32 kHz für MiniMax
speech-2.8-hd); wird für Sprachnotiz-Ziele überffmpegnach 48 kHz Opus transkodiert. - Lokale CLI: Verwendet das konfigurierte
outputFormat. Sprachnotiz-Ziele werden in Ogg/Opus konvertiert und Telefonie-Ausgaben in rohes 16-kHz-Mono-PCM. - Google Gemini: Gibt rohes 24-kHz-PCM zurück. OpenClaw verpackt es für Anhänge als WAV, transkodiert es für Sprachnotiz-Ziele nach 48 kHz Opus und gibt PCM für Talk/Telefonie direkt zurück.
- Inworld: MP3-Anhänge, natives
OGG_OPUSfür Sprachnotizen, rohesPCMmit 22050 Hz für Talk/Telefonie. - xAI: Standardmäßig MP3;
responseFormatkannmp3|wav|pcm|mulaw|alawsein. Verwendet den Batch-REST-Endpunkt von xAI — Streaming-WebSocket-TTS wird nicht verwendet. Natives Opus-Sprachnotizformat wird nicht unterstützt. - Microsoft: Verwendet
microsoft.outputFormat(Standardaudio-24khz-48kbitrate-mono-mp3). TelegramsendVoiceakzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie garantierte Opus-Sprachnachrichten benötigen. Wenn das konfigurierte Microsoft-Format fehlschlägt, versucht OpenClaw es erneut mit MP3.
OpenAI- und ElevenLabs-Ausgabeformate sind pro Kanal wie oben aufgeführt festgelegt.
Feldreferenz
Auto-TTS-Modus. `inbound` sendet Audio nur nach einer eingehenden Sprachnachricht; `tagged` sendet Audio nur, wenn die Antwort `tts:...`-Direktiven oder einen `tts:text`-Block enthält. Veralteter Schalter. `openclaw doctor --fix` migriert diesen zu `auto`. `"all"` schließt Tool-/Block-Antworten zusätzlich zu finalen Antworten ein. Sprach-Provider-ID. Wenn nicht festgelegt, verwendet OpenClaw den ersten konfigurierten Provider in der Registry-Auto-Select-Reihenfolge. Das veraltete `provider: "edge"` wird von `openclaw doctor --fix` in `"microsoft"` umgeschrieben. Aktive Persona-ID aus `personas`. Wird in Kleinschreibung normalisiert. Stabile gesprochene Identität. Felder: `label`, `description`, `provider`, `fallbackPolicy`, `prompt`, `providers.`. Siehe [Personas](#personas). Günstiges Modell für automatische Zusammenfassungen; standardmäßig `agents.defaults.model.primary`. Akzeptiert `provider/model` oder einen konfigurierten Modellalias. Erlaubt dem Modell, TTS-Direktiven auszugeben. `enabled` ist standardmäßig `true`; `allowProvider` ist standardmäßig `false`. Provider-eigene Einstellungen, nach Sprach-Provider-ID indiziert. Veraltete direkte Blöcke (`messages.tts.openai`, `.elevenlabs`, `.microsoft`, `.edge`) werden von `openclaw doctor --fix` umgeschrieben; committen Sie nur `messages.tts.providers.`. Harte Obergrenze für TTS-Eingabezeichen. `/tts audio` schlägt fehl, wenn sie überschritten wird. Anfrage-Timeout in Millisekunden. Überschreibt den lokalen JSON-Pfad für Einstellungen (Provider/Limit/Zusammenfassung). Standard `~/.openclaw/settings/tts.json`. Env: `AZURE_SPEECH_KEY`, `AZURE_SPEECH_API_KEY` oder `SPEECH_KEY`. Azure-Speech-Region (z. B. `eastus`). Env: `AZURE_SPEECH_REGION` oder `SPEECH_REGION`. Optionale Überschreibung des Azure-Speech-Endpunkts (Alias `baseUrl`). Azure-Voice-ShortName. Standard `en-US-JennyNeural`. SSML-Sprachcode. Standard `en-US`. Azure `X-Microsoft-OutputFormat` für Standardaudio. Standard `audio-24khz-48kbitrate-mono-mp3`. Azure `X-Microsoft-OutputFormat` für Sprachnotiz-Ausgabe. Standard `ogg-24khz-16bit-mono-opus`. Fällt auf `ELEVENLABS_API_KEY` oder `XI_API_KEY` zurück. Modell-ID (z. B. `eleven_multilingual_v2`, `eleven_v3`). ElevenLabs-Voice-ID. `stability`, `similarityBoost`, `style` (jeweils `0..1`), `useSpeakerBoost` (`true|false`), `speed` (`0.5..2.0`, `1.0` = normal). Textnormalisierungsmodus. 2-Buchstaben-ISO 639-1 (z. B. `en`, `de`). Ganzzahl `0..4294967295` für Best-Effort-Determinismus. Überschreibt die ElevenLabs-API-Basis-URL. Fällt auf `GEMINI_API_KEY` / `GOOGLE_API_KEY` zurück. Wenn ausgelassen, kann TTS `models.providers.google.apiKey` wiederverwenden, bevor auf Env zurückgefallen wird. Gemini-TTS-Modell. Standard `gemini-3.1-flash-tts-preview`. Vordefinierter Gemini-Voice-Name. Standard `Kore`. Alias: `voice`. Natürlichsprachlicher Stil-Prompt, der dem gesprochenen Text vorangestellt wird. Optionale Sprecherbezeichnung, die dem gesprochenen Text vorangestellt wird, wenn Ihr Prompt einen benannten Sprecher verwendet. Auf `audio-profile-v1` setzen, um aktive Persona-Prompt-Felder in eine deterministische Gemini-TTS-Prompt-Struktur einzubetten. Google-spezifischer zusätzlicher Persona-Prompt-Text, der an die Director's Notes der Vorlage angehängt wird. Nur `https://generativelanguage.googleapis.com` wird akzeptiert. Env: `GRADIUM_API_KEY`. Standardwert `https://api.gradium.ai`. Standardwert Emma (`YTpq7expH9539ERJ`). ### Primäres Inworld<ParamField path="apiKey" type="string">Env: `INWORLD_API_KEY`.</ParamField>
<ParamField path="baseUrl" type="string">Standardwert `https://api.inworld.ai`.</ParamField>
<ParamField path="modelId" type="string">Standardwert `inworld-tts-1.5-max`. Außerdem: `inworld-tts-1.5-mini`, `inworld-tts-1-max`, `inworld-tts-1`.</ParamField>
<ParamField path="voiceId" type="string">Standardwert `Sarah`.</ParamField>
<ParamField path="temperature" type="number">Sampling-Temperatur `0..2`.</ParamField>
Lokale ausführbare Datei oder Befehlszeichenfolge für CLI-TTS.
Befehlsargumente. Unterstützt die Platzhalter `{{Text}}`, `{{OutputPath}}`, `{{OutputDir}}`, `{{OutputBase}}`.
Erwartetes CLI-Ausgabeformat. Standardwert `mp3` für Audioanhänge.
Befehls-Timeout in Millisekunden. Standardwert `120000`.
Optionales Arbeitsverzeichnis des Befehls.
Optionale Umgebungsüberschreibungen für den Befehl.
Microsoft-Sprachnutzung zulassen.
Name der neuronalen Microsoft-Stimme (z. B. `en-US-MichelleNeural`).
Sprachcode (z. B. `en-US`).
Microsoft-Ausgabeformat. Standardwert `audio-24khz-48kbitrate-mono-mp3`. Nicht alle Formate werden vom gebündelten Edge-gestützten Transport unterstützt.
Prozentzeichenfolgen (z. B. `+10%`, `-5%`).
JSON-Untertitel neben der Audiodatei schreiben.
Proxy-URL für Microsoft-Sprachanfragen.
Überschreibung des Anfrage-Timeouts (ms).
Legacy-Alias. Führen Sie `openclaw doctor --fix` aus, um gespeicherte Konfiguration zu `providers.microsoft` umzuschreiben.
Fällt auf `MINIMAX_API_KEY` zurück. Token-Plan-Authentifizierung über `MINIMAX_OAUTH_TOKEN`, `MINIMAX_CODE_PLAN_KEY` oder `MINIMAX_CODING_API_KEY`.
Standardwert `https://api.minimax.io`. Env: `MINIMAX_API_HOST`.
Standardwert `speech-2.8-hd`. Env: `MINIMAX_TTS_MODEL`.
Standardwert `English_expressive_narrator`. Env: `MINIMAX_TTS_VOICE_ID`.
`0.5..2.0`. Standardwert `1.0`.
`(0, 10]`. Standardwert `1.0`.
Ganzzahl `-12..12`. Standardwert `0`. Dezimalwerte werden vor der Anfrage abgeschnitten.
Fällt auf `OPENAI_API_KEY` zurück.
OpenAI-TTS-Modell-ID (z. B. `gpt-4o-mini-tts`).
Stimmenname (z. B. `alloy`, `cedar`).
Explizites OpenAI-Feld `instructions`. Wenn gesetzt, werden Persona-Prompt-Felder **nicht** automatisch zugeordnet.
Zusätzliche JSON-Felder, die nach generierten OpenAI-TTS-Feldern in `/audio/speech`-Anfragetexte zusammengeführt werden. Verwenden Sie dies für OpenAI-kompatible Endpunkte wie Kokoro, die providerspezifische Schlüssel wie `lang` erfordern; unsichere Prototypschlüssel werden ignoriert.
Überschreibt den OpenAI-TTS-Endpunkt. Auflösungsreihenfolge: Konfiguration → `OPENAI_TTS_BASE_URL` → `https://api.openai.com/v1`. Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, daher werden benutzerdefinierte Modell- und Stimmennamen akzeptiert.
Env: `OPENROUTER_API_KEY`. Kann `models.providers.openrouter.apiKey` wiederverwenden.
Standardwert `https://openrouter.ai/api/v1`. Legacy-`https://openrouter.ai/v1` wird normalisiert.
Standardwert `hexgrad/kokoro-82m`. Alias: `modelId`.
Standardwert `af_alloy`. Alias: `voiceId`.
Standardwert `mp3`.
Provider-native Überschreibung der Geschwindigkeit.
Env: `VOLCENGINE_TTS_API_KEY` oder `BYTEPLUS_SEED_SPEECH_API_KEY`.
Standardwert `seed-tts-1.0`. Env: `VOLCENGINE_TTS_RESOURCE_ID`. Verwenden Sie `seed-tts-2.0`, wenn Ihr Projekt über eine TTS-2.0-Berechtigung verfügt.
App-Key-Header. Standardwert `aGjiRDfUWi`. Env: `VOLCENGINE_TTS_APP_KEY`.
Überschreibt den Seed-Speech-TTS-HTTP-Endpunkt. Env: `VOLCENGINE_TTS_BASE_URL`.
Stimmentyp. Standardwert `en_female_anna_mars_bigtts`. Env: `VOLCENGINE_TTS_VOICE`.
Provider-natives Geschwindigkeitsverhältnis.
Provider-natives Emotions-Tag.
Legacy-Felder der Volcengine Speech Console. Env: `VOLCENGINE_TTS_APPID`, `VOLCENGINE_TTS_TOKEN`, `VOLCENGINE_TTS_CLUSTER` (Standardwert `volcano_tts`).
Env: `XAI_API_KEY`.
Standardwert `https://api.x.ai/v1`. Env: `XAI_BASE_URL`.
Standardwert `eve`. Live-Stimmen: `ara`, `eve`, `leo`, `rex`, `sal`, `una`.
BCP-47-Sprachcode oder `auto`. Standardwert `en`.
Standardwert `mp3`.
Provider-native Überschreibung der Geschwindigkeit.
Env: `XIAOMI_API_KEY`.
Standardwert `https://api.xiaomimimo.com/v1`. Env: `XIAOMI_BASE_URL`.
Standardwert `mimo-v2.5-tts`. Env: `XIAOMI_TTS_MODEL`. Unterstützt außerdem `mimo-v2-tts`.
Standardwert `mimo_default`. Env: `XIAOMI_TTS_VOICE`.
Standardwert `mp3`. Env: `XIAOMI_TTS_FORMAT`.
Optionale Stil-Anweisung in natürlicher Sprache, die als Benutzernachricht gesendet wird; sie wird nicht gesprochen.
Agent-Tool
Das Tool tts wandelt Text in Sprache um und gibt einen Audioanhang für
die Antwortzustellung zurück. Bei Feishu, Matrix, Telegram und WhatsApp wird
das Audio als Sprachnachricht statt als Dateianhang zugestellt. Feishu und
WhatsApp können auf diesem Pfad Nicht-Opus-TTS-Ausgaben transkodieren, wenn
ffmpeg verfügbar ist.
WhatsApp sendet Audio über Baileys als PTT-Sprachnotiz (audio mit
ptt: true) und sendet sichtbaren Text separat vom PTT-Audio, weil
Clients Untertitel bei Sprachnotizen nicht konsistent darstellen.
Das Tool akzeptiert optionale Felder channel und timeoutMs; timeoutMs ist ein
Provider-Anfrage-Timeout pro Aufruf in Millisekunden.
Gateway-RPC
| Methode | Zweck |
|---|---|
tts.status |
Aktuellen TTS-Zustand und letzten Versuch lesen. |
tts.enable |
Lokale Auto-Präferenz auf always setzen. |
tts.disable |
Lokale Auto-Präferenz auf off setzen. |
tts.convert |
Einmalige Umwandlung von Text → Audio. |
tts.setProvider |
Lokale Provider-Präferenz festlegen. |
tts.setPersona |
Lokale Persona-Präferenz festlegen. |
tts.providers |
Konfigurierte Provider und Status auflisten. |
Servicelinks
- OpenAI-Leitfaden zu Text-to-Speech
- OpenAI Audio API-Referenz
- Azure Speech REST Text-to-Speech
- Azure Speech-Provider
- ElevenLabs Text to Speech
- ElevenLabs-Authentifizierung
- Gradium
- Inworld TTS API
- MiniMax T2A v2 API
- Volcengine TTS HTTP API
- Xiaomi MiMo-Sprachsynthese
- node-edge-tts
- Microsoft Speech-Ausgabeformate
- xAI Text to Speech