Tools

Sprachausgabe

OpenClaw wandelt ausgehende Antworten über 14 Sprach-Provider in Audio um: native Sprachnachrichten auf Feishu, Matrix, Telegram und WhatsApp; Audioanhänge überall sonst; sowie PCM/Ulaw-Streams für Telefonie und Talk.

TTS ist die Sprachausgabehälfte des stt-tts-Modus von Talk (talk.speak ruft denselben Synthesepfad auf). Provider-native realtime-Talk-Sitzungen synthetisieren Sprache stattdessen innerhalb des Echtzeit-Providers; transcription-Sitzungen synthetisieren niemals eine Sprachantwort des Assistenten.

Schnellstart

  • Provider auswählen

    OpenAI und ElevenLabs sind die zuverlässigsten gehosteten Optionen. Microsoft und die lokale CLI funktionieren ohne API-Schlüssel. Die vollständige Liste finden Sie in der Provider-Matrix.

  • API-Schlüssel festlegen

    Exportieren Sie die Umgebungsvariable für Ihren Provider (zum Beispiel OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft und die lokale CLI benötigen keinen Schlüssel.

  • In der Konfiguration aktivieren

    Legen Sie messages.tts.auto: "always" und messages.tts.provider fest:

    json5
    {  messages: {    tts: {      auto: "always",      provider: "elevenlabs",    },  },}
  • Im Chat ausprobieren

    /tts status zeigt den aktuellen Status. /tts audio Hello from OpenClaw sendet eine einmalige Audioantwort.

  • Unterstützte Provider

    Provider Authentifizierung Hinweise
    Azure Speech AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (auch AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) Native Ogg/Opus-Ausgabe für Sprachnachrichten und Telefonie.
    DeepInfra DEEPINFRA_API_KEY OpenAI-kompatibles TTS. Standardmäßig hexgrad/Kokoro-82M.
    ElevenLabs ELEVENLABS_API_KEY oder XI_API_KEY Stimmenklonen, mehrsprachig, durch seed deterministisch; Streaming für die Sprachwiedergabe in Discord.
    Google Gemini GEMINI_API_KEY oder GOOGLE_API_KEY Batch-TTS der Gemini API; über promptTemplate: "audio-profile-v1" an die Persona angepasst.
    Gradium GRADIUM_API_KEY Ausgabe für Sprachnachrichten und Telefonie.
    Inworld INWORLD_API_KEY Streaming-TTS-API. Native Opus-Sprachnachrichten und PCM-Telefonie.
    Lokale CLI keine Führt einen konfigurierten lokalen TTS-Befehl aus.
    Microsoft keine Öffentliches neuronales Edge-TTS über node-edge-tts. Nach bestem Bemühen, ohne SLA.
    MiniMax MINIMAX_API_KEY (oder Token-Tarif: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) T2A-v2-API. Standardmäßig speech-2.8-hd.
    OpenAI OPENAI_API_KEY Wird auch für automatische Zusammenfassungen 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 Provider für Bilder, Videos und Sprache.
    xAI XAI_API_KEY xAI-Batch-TTS. Native Opus-Sprachnachrichten werden nicht unterstützt.
    Xiaomi MiMo XIAOMI_API_KEY MiMo-TTS über Xiaomi-Chatvervollständigungen.

    Wenn mehrere Provider konfiguriert sind, wird zuerst der ausgewählte verwendet; die anderen dienen als Ausweichoptionen. Die automatische Zusammenfassung verwendet summaryModel (oder agents.defaults.model.primary), daher muss dieser Provider ebenfalls authentifiziert sein, wenn Sie Zusammenfassungen aktiviert lassen.

    Konfiguration

    Die TTS-Konfiguration befindet sich unter messages.tts in ~/.openclaw/openclaw.json. Wählen Sie eine Voreinstellung aus und passen Sie den Provider-Block an. Die unten gezeigten Felder speakerVoice/speakerVoiceId sind kanonisch; die providerspezifischen Feldnamen voice/voiceId/voiceName funktionieren weiterhin als alte Aliasse.

    Azure Speech

    json5
    {messages: {tts: {  auto: "always",  provider: "azure-speech",  providers: {    "azure-speech": {      apiKey: "${AZURE_SPEECH_KEY}",      region: "eastus",      speakerVoice: "en-US-JennyNeural",      lang: "en-US",      outputFormat: "audio-24khz-48kbitrate-mono-mp3",      voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus",    },  },},},}

    ElevenLabs

    json5
    {messages: {tts: {  auto: "always",  provider: "elevenlabs",  providers: {    elevenlabs: {      apiKey: "${ELEVENLABS_API_KEY}",      model: "eleven_multilingual_v2",      speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",    },  },},},}

    Google Gemini

    json5
    {messages: {tts: {  auto: "always",  provider: "google",  providers: {    google: {      apiKey: "${GEMINI_API_KEY}",      model: "gemini-3.1-flash-tts-preview",      speakerVoice: "Kore",      // Optionale natürlichsprachliche Stilvorgaben:      // audioProfile: "Sprechen Sie in einem ruhigen Ton wie ein Podcast-Moderator.",      // speakerName: "Alex",    },  },},},}

    Gradium

    json5
    {messages: {tts: {  auto: "always",  provider: "gradium",  providers: {    gradium: {      apiKey: "${GRADIUM_API_KEY}",      speakerVoiceId: "YTpq7expH9539ERJ",    },  },},},}

    Inworld

    json5
    {messages: {tts: {  auto: "always",  provider: "inworld",  providers: {    inworld: {      apiKey: "${INWORLD_API_KEY}",      modelId: "inworld-tts-1.5-max",      speakerVoiceId: "Sarah",      temperature: 0.7,    },  },},},}

    Lokale CLI

    json5
    {messages: {tts: {  auto: "always",  provider: "tts-local-cli",  providers: {    "tts-local-cli": {      command: "say",      args: ["-o", "{{OutputPath}}", "{{Text}}"],      outputFormat: "wav",      timeoutMs: 120000,    },  },},},}

    Microsoft (kein Schlüssel)

    json5
    {messages: {tts: {  auto: "always",  provider: "microsoft",  providers: {    microsoft: {      enabled: true,      speakerVoice: "en-US-MichelleNeural",      lang: "en-US",      outputFormat: "audio-24khz-48kbitrate-mono-mp3",      rate: "+0%",      pitch: "+0%",    },  },},},}

    MiniMax

    json5
    {messages: {tts: {  auto: "always",  provider: "minimax",  providers: {    minimax: {      apiKey: "${MINIMAX_API_KEY}",      model: "speech-2.8-hd",      speakerVoiceId: "English_expressive_narrator",      speed: 1.0,      vol: 1.0,      pitch: 0,    },  },},},}

    OpenAI + ElevenLabs

    json5
    {messages: {tts: {  auto: "always",  provider: "openai",  summaryModel: "openai/gpt-4.1-mini",  modelOverrides: { enabled: true },  providers: {    openai: {      apiKey: "${OPENAI_API_KEY}",      model: "gpt-4o-mini-tts",      speakerVoice: "alloy",    },    elevenlabs: {      apiKey: "${ELEVENLABS_API_KEY}",      model: "eleven_multilingual_v2",      speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",      voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 },      applyTextNormalization: "auto",      languageCode: "en",    },  },},},}

    OpenRouter

    json5
    {messages: {tts: {  auto: "always",  provider: "openrouter",  providers: {    openrouter: {      apiKey: "${OPENROUTER_API_KEY}",      model: "hexgrad/kokoro-82m",      speakerVoice: "af_alloy",      responseFormat: "mp3",    },  },},},}

    Volcengine

    json5
    {messages: {tts: {  auto: "always",  provider: "volcengine",  providers: {    volcengine: {      apiKey: "${VOLCENGINE_TTS_API_KEY}",      resourceId: "seed-tts-1.0",      speakerVoice: "en_female_anna_mars_bigtts",    },  },},},}

    xAI

    json5
    {messages: {tts: {  auto: "always",  provider: "xai",  providers: {    xai: {      apiKey: "${XAI_API_KEY}",      speakerVoiceId: "eve",      language: "en",      responseFormat: "mp3",    },  },},},}

    Xiaomi MiMo

    json5
    {messages: {tts: {  auto: "always",  provider: "xiaomi",  providers: {    xiaomi: {      apiKey: "${XIAOMI_API_KEY}",      model: "mimo-v2.5-tts",      speakerVoice: "mimo_default",      format: "mp3",    },  },},},}

    Lassen Sie für Xiaomi mimo-v2.5-tts-voicedesign das Feld speakerVoice weg und setzen Sie style auf die Vorgabe für die Stimmgestaltung. OpenClaw sendet diese Vorgabe als TTS-user-Nachricht und sendet für das Voicedesign-Modell kein audio.voice.

    Stimmüberschreibungen 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 tief mit messages.tts zusammengeführt, sodass die Provider-Zugangsdaten in der globalen Provider-Konfiguration verbleiben können:

    json5
    {  messages: {    tts: {      auto: "always",      provider: "elevenlabs",      providers: {        elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" },      },    },  },  agents: {    list: [      {        id: "reader",        tts: {          providers: {            elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" },          },        },      },    ],  },}

    Um eine Persona pro Agent festzulegen, setzen Sie agents.list[].tts.persona neben der Provider- Konfiguration. Sie überschreibt messages.tts.persona global ausschließlich für diesen Agenten.

    Prioritätsreihenfolge für automatische Antworten, /tts audio, /tts status und das Agentenwerkzeug tts:

    1. messages.tts
    2. aktives agents.list[].tts
    3. Kanalüberschreibung, wenn der Kanal channels.<channel>.tts unterstützt
    4. Kontoüberschreibung, wenn der Kanal channels.<channel>.accounts.<id>.tts übergibt
    5. lokale /tts-Einstellungen für diesen Host
    6. Inline-Direktiven [[tts:...]], wenn Modellüberschreibungen aktiviert sind

    Kanal- und Kontoüberschreibungen verwenden dieselbe Struktur wie messages.tts und werden tief mit den vorherigen Ebenen zusammengeführt, sodass gemeinsam genutzte Provider-Zugangsdaten in messages.tts verbleiben können, während ein Kanal oder Bot-Konto nur Sprecherstimme, Modell, Persona oder Auto-Modus ändert:

    json5
    {  messages: {    tts: {      provider: "openai",      providers: {        openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },      },    },  },  channels: {    feishu: {      accounts: {        english: {          tts: {            providers: {              openai: { speakerVoice: "shimmer" },            },          },        },      },    },  },}

    Personas

    Eine Persona ist eine stabile gesprochene Identität, die deterministisch Provider-übergreifend angewendet werden kann. Sie kann einen Provider bevorzugen, eine Provider-neutrale Prompt- Absicht definieren und Provider-spezifische Bindungen für Stimmen, Modelle, Prompt- Vorlagen, Seeds und Stimmeinstellungen enthalten.

    Minimale Persona

    json5
    {  messages: {    tts: {      auto: "always",      persona: "narrator",      personas: {        narrator: {          label: "Erzähler",          provider: "elevenlabs",          providers: {            elevenlabs: {              speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",              modelId: "eleven_multilingual_v2",            },          },        },      },    },  },}

    Vollständige Persona (Provider-neutraler Prompt)

    json5
    {  messages: {    tts: {      auto: "always",      persona: "alfred",      personas: {        alfred: {          label: "Alfred",          description: "Trockener, warmherziger britischer Butler-Erzähler.",          provider: "google",          fallbackPolicy: "preserve-persona",          prompt: {            profile: "Ein brillanter britischer Butler. Trocken, geistreich, warmherzig, charmant, emotional ausdrucksstark und niemals beliebig.",            scene: "Ein ruhiges Arbeitszimmer spät in der Nacht. Nahmikrofon-Erzählung für einen vertrauenswürdigen Bediener.",            sampleContext: "Der Sprecher beantwortet eine private technische Anfrage mit prägnanter Sicherheit und trockenem Charme.",            style: "Kultiviert, zurückhaltend, leicht amüsiert.",            accent: "Britisches Englisch.",            pacing: "Bedächtig, mit kurzen dramatischen Pausen.",            constraints: ["Konfigurationswerte nicht laut vorlesen.", "Die Persona nicht erklären."],          },          providers: {            google: {              model: "gemini-3.1-flash-tts-preview",              speakerVoice: "Algieba",              promptTemplate: "audio-profile-v1",            },            openai: { model: "gpt-4o-mini-tts", speakerVoice: "cedar" },            elevenlabs: {              speakerVoiceId: "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:

    1. Lokale Einstellung /tts persona <id>, falls gesetzt.
    2. messages.tts.persona, falls gesetzt.
    3. Keine Persona.

    Bei der Provider-Auswahl haben explizite Angaben Vorrang:

    1. Direkte Überschreibungen (CLI, Gateway, Talk, zulässige TTS-Direktiven).
    2. Lokale Einstellung /tts provider <id>.
    3. provider der aktiven Persona.
    4. messages.tts.provider.
    5. Automatische Auswahl aus der Registry.

    Für jeden Provider-Versuch führt OpenClaw die Konfigurationen in dieser Reihenfolge zusammen:

    1. messages.tts.providers.<id>
    2. messages.tts.personas.<persona>.providers.<id>
    3. Vertrauenswürdige Anfrageüberschreibungen
    4. Zulässige, vom Modell ausgegebene Überschreibungen durch TTS-Direktiven

    Verwendung von Persona-Prompts durch Provider

    Persona-Prompt-Felder (profile, scene, sampleContext, style, accent, pacing, constraints) sind Provider-neutral. Jeder Provider entscheidet selbst, wie sie verwendet werden:

    Google Gemini

    Umschließt Persona-Prompt-Felder nur dann mit einer Gemini-TTS-Prompt-Struktur, wenn die effektive Google-Provider-Konfiguration promptTemplate: "audio-profile-v1" oder personaPrompt festlegt. Die älteren Felder audioProfile und speakerName werden weiterhin als Google-spezifischer Prompt-Text vorangestellt. Inline-Audio-Tags wie [whispers] oder [laughs] innerhalb eines [[tts:text]]-Blocks bleiben im Gemini-Transkript erhalten; OpenClaw erzeugt diese Tags nicht.

    OpenAI

    Ordnet Persona-Prompt-Felder nur dann dem Anfragefeld instructions zu, wenn keine expliziten OpenAI-instructions konfiguriert sind. Explizite instructions haben immer Vorrang.

    Andere Provider

    Verwenden ausschließlich die Provider-spezifischen Persona-Bindungen unter personas.<id>.providers.<provider>. Persona-Prompt-Felder werden ignoriert, sofern der Provider keine eigene Zuordnung von Persona-Prompts implementiert.

    Fallback-Richtlinie

    fallbackPolicy steuert das Verhalten, wenn eine Persona keine Bindung für den versuchten Provider besitzt:

    Richtlinie Verhalten
    preserve-persona Standard. Provider-neutrale Prompt-Felder bleiben verfügbar; der Provider kann sie verwenden oder ignorieren.
    provider-defaults Die Persona wird bei der Prompt-Vorbereitung für diesen Versuch ausgelassen; der Provider verwendet seine neutralen Standardwerte, während der Fallback auf andere Provider fortgesetzt wird.
    fail Überspringt diesen Provider-Versuch mit reasonCode: "not_configured" und personaBinding: "missing". Fallback-Provider werden weiterhin versucht.

    Die gesamte TTS-Anfrage schlägt nur fehl, wenn jeder versuchte Provider übersprungen wird oder fehlschlägt.

    Die Provider-Auswahl einer Talk-Sitzung gilt jeweils für die Sitzung. Ein Talk-Client sollte Provider-IDs, Modell-IDs, Stimmen-IDs und Gebietsschemas aus talk.catalog auswählen und sie über die Talk-Sitzungs- oder Übergabeanfrage übergeben. Das Öffnen einer Sprachsitzung sollte weder messages.tts noch globale Standardwerte des Talk-Providers verändern.

    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 Ausdruckshinweise, die nur im Audio erscheinen sollen:

    text
    Hier ist es. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](lacht) Lies das Lied noch einmal.[[/tts:text]]

    Wenn messages.tts.auto auf "tagged" gesetzt ist, sind Direktiven erforderlich, um Audio auszulösen. Bei der Streaming-Blockübermittlung werden Direktiven aus dem sichtbaren Text entfernt, bevor der Kanal ihn erhält, selbst wenn sie auf benachbarte Blöcke verteilt sind.

    provider=... wird ignoriert, sofern nicht modelOverrides.allowProvider: true gesetzt ist. Wenn eine Antwort provider=... deklariert, werden die anderen Schlüssel in dieser Direktive nur von diesem Provider ausgewertet; nicht unterstützte Schlüssel werden entfernt und als Warnungen zu TTS- Direktiven gemeldet.

    Verfügbare Direktiven-Schlüssel:

    • provider (registrierte Provider-ID; erfordert allowProvider: true)
    • speakerVoice / speakerVoiceId (veraltete Aliasse: voice, voiceName, voice_name, google_voice, voiceId)
    • model / google_model
    • stability, similarityBoost, style, speed, useSpeakerBoost
    • vol / volume (MiniMax-Lautstärke, (0, 10])
    • pitch (ganzzahlige MiniMax-Tonhöhe, −12 bis 12; Nachkommastellen werden abgeschnitten)
    • emotion (Volcengine-Emotions-Tag)
    • applyTextNormalization (auto|on|off)
    • languageCode (ISO 639-1)
    • seed

    Modellüberschreibungen vollständig deaktivieren:

    json5
    { messages: { tts: { modelOverrides: { enabled: false } } } }

    Provider-Wechsel zulassen und andere Einstellungen weiterhin konfigurierbar halten:

    json5
    { messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }

    Slash-Befehle

    Ein einzelner Befehl: /tts. Auf Discord registriert OpenClaw außerdem /voice, da /tts ein integrierter Discord-Befehl ist — der Textbefehl /tts ... funktioniert weiterhin.

    text
    /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>

    Hinweise zum Verhalten:

    • /tts on schreibt die lokale TTS-Einstellung als always; /tts off schreibt sie als off.
    • /tts chat on|off|default schreibt eine sitzungsbezogene Auto-TTS-Überschreibung für den aktuellen Chat.
    • /tts persona <id> schreibt die lokale Persona-Einstellung; /tts persona off löscht sie.
    • /tts latest liest die neueste Assistentenantwort aus dem Transkript der aktuellen Sitzung und sendet sie einmalig als Audio. Im Sitzungseintrag wird nur ein Hash dieser Antwort gespeichert, um doppelte Sprachausgaben zu unterdrücken.
    • /tts audio erzeugt eine einmalige Audioantwort (aktiviert TTS nicht).
    • /tts limit <chars> akzeptiert 100–4096 (4096 ist das Telegram-Maximum für Bildunterschriften/Nachrichten); Werte außerhalb dieses Bereichs werden abgelehnt.
    • limit und summary werden in lokalen Einstellungen gespeichert, nicht in der Hauptkonfiguration.
    • /tts status enthält Fallback-Diagnosen für den letzten Versuch — Fallback: <primary> -> <used>, Attempts: ... und Details pro Versuch (provider:outcome(reasonCode) latency).
    • /status zeigt bei aktiviertem TTS den aktiven TTS-Modus sowie den konfigurierten Provider, das Modell, die Stimme und bereinigte Metadaten benutzerdefinierter Endpunkte.

    Benutzerspezifische Einstellungen

    Slash-Befehle schreiben lokale Überschreibungen nach prefsPath. Der Standardwert ist ~/.openclaw/settings/tts.json; überschreiben Sie ihn mit der Umgebungsvariable OPENCLAW_TTS_PREFS oder messages.tts.prefsPath.

    Gespeichertes Feld Auswirkung
    auto Lokale Auto-TTS-Überschreibung (always, off, …)
    provider Lokale Überschreibung des primären Providers
    persona Lokale Persona-Überschreibung
    maxLength Schwellenwert für Zusammenfassung/Kürzung (standardmäßig 1500 Zeichen, Bereich für /tts limit: 100–4096)
    summarize Umschalter für Zusammenfassungen (standardmäßig true)

    Diese überschreiben die effektive Konfiguration aus messages.tts und dem aktiven Block agents.list[].tts für diesen Host.

    Ausgabeformate

    Die TTS-Sprachausgabe richtet sich nach den Fähigkeiten des Kanals. Kanal-Plugins geben an, ob bei sprachähnlicher TTS von Providern ein natives voice-note-Ziel angefordert oder die normale audio-file-Synthese beibehalten werden soll und ob der Kanal nicht native Ausgaben vor dem Senden transkodiert.

    Ziel Format
    Feishu / Matrix / Telegram / WhatsApp Sprachnachrichten-Antworten bevorzugen Opus (opus_48000_64 von ElevenLabs, opus von OpenAI). 48 kHz / 64 kbps bieten ein ausgewogenes Verhältnis von Klarheit und Größe.
    Andere Kanäle MP3 (mp3_44100_128 von ElevenLabs, mp3 von OpenAI). 44.1 kHz / 128 kbps sind die standardmäßige Abstimmung für Sprache.
    Talk / Telefonie Provider-natives PCM (Inworld 22050 Hz, Google 24 kHz) oder ulaw_8000 von Gradium für Telefonie.

    Hinweise nach Provider:

    • Feishu-/WhatsApp-Transkodierung: Wenn eine Sprachnachrichten-Antwort als MP3/WebM/WAV/M4A oder eine andere wahrscheinliche Audiodatei eingeht, transkodiert das Kanal-Plugin sie vor dem Senden der nativen Sprachnachricht mit ffmpeg (libopus, 64 kbps) in Ogg/Opus mit 48 kHz. WhatsApp sendet das Ergebnis über die Baileys-audio-Nutzlast mit ptt: true und audio/ogg; codecs=opus. Bei einem Transkodierungsfehler fängt Feishu den Fehler ab und sendet stattdessen die Originaldatei als normalen Anhang; WhatsApp hat keinen Fallback, daher schlägt der Sendevorgang selbst fehl, statt eine inkompatible PTT-Nutzlast zu veröffentlichen.
    • MiniMax: MP3 (speech-2.8-hd-Modell, 32 kHz Abtastrate) für normale Audioanhänge; für vom Kanal angekündigte Sprachnachrichten-Ziele mit ffmpeg in Opus mit 48 kHz transkodiert.
    • Xiaomi MiMo: Standardmäßig MP3 oder bei entsprechender Konfiguration WAV; für vom Kanal angekündigte Sprachnachrichten-Ziele mit ffmpeg in Opus mit 48 kHz transkodiert.
    • Lokale CLI: Verwendet das konfigurierte outputFormat. Sprachnachrichten-Ziele werden in Ogg/Opus und Telefonieausgaben mit ffmpeg in rohes Mono-PCM mit 16 kHz konvertiert.
    • Google Gemini: Gibt rohes PCM mit 24 kHz zurück. OpenClaw verpackt es für Audioanhänge als WAV, transkodiert es für Sprachnachrichten-Ziele in Opus mit 48 kHz und gibt für Talk/Telefonie direkt PCM zurück.
    • Gradium: WAV für Audioanhänge, Opus für Sprachnachrichten-Ziele und ulaw_8000 mit 8 kHz für Telefonie.
    • Inworld: MP3 für normale Audioanhänge, natives OGG_OPUS für Sprachnachrichten-Ziele und rohes PCM mit 22050 Hz für Talk/Telefonie.
    • xAI: Standardmäßig MP3; responseFormat kann mp3, wav, pcm, mulaw oder alaw sein. Verwendet den Batch-REST-TTS-Endpunkt von xAI und gibt einen vollständigen Audioanhang zurück; der Streaming-TTS-WebSocket von xAI wird in diesem Provider-Pfad nicht verwendet. Das native Opus-Sprachnachrichtenformat wird nicht unterstützt.
    • Microsoft: Verwendet microsoft.outputFormat (Standard audio-24khz-48kbitrate-mono-mp3).
      • Der mitgelieferte Transport akzeptiert ein outputFormat, aber nicht alle Formate sind beim Dienst verfügbar.
      • Die Werte für das Ausgabeformat entsprechen den Microsoft-Speech-Ausgabeformaten (einschließlich Ogg/WebM Opus).
      • Telegram sendVoice akzeptiert 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.
      • Wenn keine explizite Stimmüberschreibung festgelegt ist und die englische Standardstimme verwendet wird, wechselt OpenClaw automatisch zu einer chinesischen neuronalen Stimme (zh-CN-XiaoxiaoNeural, Gebietsschema zh-CN), wenn der Antworttext überwiegend aus CJK-Zeichen besteht.

    Die Ausgabeformate von OpenAI und ElevenLabs sind wie oben aufgeführt je Kanal fest vorgegeben.

    Verhalten von Auto-TTS

    Wenn messages.tts.auto aktiviert ist, führt OpenClaw Folgendes aus:

    • Überspringt TTS, wenn die Antwort bereits strukturierte Medien enthält.
    • Überspringt sehr kurze Antworten (unter 10 Zeichen).
    • Fasst lange Antworten zusammen, wenn Zusammenfassungen aktiviert sind, und verwendet dabei summaryModel (oder agents.defaults.model.primary).
    • Hängt die erzeugte Audiodatei an die Antwort an.
    • Sendet im Modus mode: "final" weiterhin reines Audio-TTS für gestreamte abschließende Antworten, nachdem der Textstream abgeschlossen ist; die erzeugten Medien durchlaufen dieselbe Mediennormalisierung des Kanals wie normale Antwortanhänge.

    Wenn die Antwort maxLength überschreitet, überspringt OpenClaw die Audioausgabe niemals vollständig:

    • Zusammenfassung aktiviert (Standard) und ein Zusammenfassungsmodell ist verfügbar: Fasst den Text auf ungefähr maxLength Zeichen zusammen und synthetisiert anschließend die Zusammenfassung.
    • Zusammenfassung deaktiviert, die Zusammenfassung schlägt fehl oder für das Zusammenfassungsmodell ist kein API-Schlüssel verfügbar: Kürzt den Text auf maxLength Zeichen und synthetisiert den gekürzten Text.
    text
    Antwort -> TTS aktiviert?  nein -> Text senden  ja   -> enthält Medien / kurz?          ja   -> Text senden          nein -> Länge > Grenzwert?                   nein -> TTS -> Audio anhängen                   ja   -> Zusammenfassung aktiviert und verfügbar?                            nein -> kürzen -> TTS -> Audio anhängen                            ja   -> zusammenfassen -> TTS -> Audio anhängen

    Feldreferenz

    Oberste Ebene messages.tts.*
    auto"off" | "always" | "inbound" | "tagged"

    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.

    enabledboolean

    Veralteter Schalter. openclaw doctor --fix migriert diesen zu auto.

    mode"final" | "all"default: final

    "all" umfasst zusätzlich zu abschließenden Antworten auch Tool-/Blockantworten.

    providerstring

    ID des Sprach-Providers. Wenn nicht festgelegt, verwendet OpenClaw den ersten konfigurierten Provider in der automatischen Auswahlreihenfolge der Registry. Das veraltete provider: "edge" wird durch openclaw doctor --fix in "microsoft" umgeschrieben.

    personastring

    ID der aktiven Persona aus personas. Wird in Kleinbuchstaben normalisiert.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA " type="object"> Stabile gesprochene Identität. Felder: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Siehe Personas.

    summaryModelstring

    Kostengünstiges Modell für die automatische Zusammenfassung; standardmäßig agents.defaults.model.primary. Akzeptiert provider/model oder einen konfigurierten Modellalias.

    modelOverridesobject

    Ermöglicht dem Modell, TTS-Direktiven auszugeben. enabled ist standardmäßig true; allowProvider ist standardmäßig false.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ " type="object"> Provider-eigene Einstellungen, verschlüsselt nach der ID des Sprach-Providers. Veraltete direkte Blöcke (messages.tts.openai, .elevenlabs, .microsoft, .edge) werden durch openclaw doctor --fix umgeschrieben; committen Sie nur messages.tts.providers.<id>.

    maxTextLengthnumberdefault: 4096

    Harte Obergrenze für TTS-Eingabezeichen. /tts audio, tts.convert und tts.speak schlagen bei Überschreitung fehl.

    timeoutMsnumberdefault: 30000

    Zeitüberschreitung der Anfrage in Millisekunden. Ein aufrufbezogenes timeoutMs (Agent-Tool, Gateway) hat Vorrang, wenn es festgelegt ist; andernfalls hat ein explizit konfiguriertes messages.tts.timeoutMs Vorrang vor allen vom Plugin festgelegten Provider-Standardwerten.

    prefsPathstring

    Überschreibt den lokalen JSON-Pfad für Einstellungen (Provider/Grenzwert/Zusammenfassung). Standard ~/.openclaw/settings/tts.json.

    Azure Speech

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebung: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY oder SPEECH_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg Azure-Speech-Region (z. B. eastus). Umgebung: AZURE_SPEECH_REGION oder SPEECH_REGION. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci Optionale Überschreibung des Azure-Speech-Endpunkts (Alias baseUrl). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg ShortName der Azure-Stimme. Standard en-US-JennyNeural. Veralteter Alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI SSML-Sprachcode. Standard en-US. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Azure-X-Microsoft-OutputFormat für Standardaudio. Standard audio-24khz-48kbitrate-mono-mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Azure-X-Microsoft-OutputFormat für Sprachnachrichtenausgaben. Standard ogg-24khz-16bit-mono-opus. OPENCLAW_DOCS_MARKER:paramClose:

    ElevenLabs

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Verwendet ersatzweise ELEVENLABS_API_KEY oder XI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Modell-ID. Standard eleven_multilingual_v2. Veraltete IDs eleven_turbo_v2_5/eleven_turbo_v2 werden auf das entsprechende flash-Modell normalisiert. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci ElevenLabs-Stimmen-ID. Standard pMsXgVXv3BLzUgSXRplE. Veralteter Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    voiceSettingsobject

    stability, similarityBoost, style (jeweils 0..1, Standardwerte 0.5/0.75/0), useSpeakerBoost (true|false, Standard true), speed (0.5..2.0, Standard 1.0).

    applyTextNormalization"auto" | "on" | "off"

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg 2-stelliger ISO 639-1-Code (z. B. en, de). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI Ganzzahl 0..4294967295 für bestmöglichen Determinismus. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring
    Google Gemini

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Verwendet ersatzweise GEMINI_API_KEY / GOOGLE_API_KEY. Wenn nicht angegeben, kann TTS vor dem Fallback auf die Umgebung models.providers.google.apiKey wiederverwenden. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Gemini-TTS-Modell. Standard gemini-3.1-flash-tts-preview. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Name einer vorgefertigten Gemini-Stimme. Standard Kore. Veraltete Aliase: voiceName, voice. OPENCLAW_DOCS_MARKER:paramClose:

    audioProfilestring
    speakerNamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn Auf audio-profile-v1 setzen, um die Prompt-Felder der aktiven Persona in eine deterministische Gemini-TTS-Prompt-Struktur einzubetten. OPENCLAW_DOCS_MARKER:paramClose:

    personaPromptstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Nur https://generativelanguage.googleapis.com wird akzeptiert. OPENCLAW_DOCS_MARKER:paramClose:

    Gradium

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebung: GRADIUM_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI HTTPS-URL der Gradium-API auf api.gradium.ai. Standard https://api.gradium.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Standard Emma (YTpq7expH9539ERJ). Veralteter Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    Inworld

    Inworld primär

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebungsvariable: INWORLD_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standardwert: https://api.inworld.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI Standardwert: inworld-tts-1.5-max. Ebenfalls verfügbar: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Standardwert: Sarah. Veralteter Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi Sampling-Temperatur 0..2 (0 ausgeschlossen). OPENCLAW_DOCS_MARKER:paramClose:

    Lokale CLI (tts-local-cli)
    commandstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg Befehlsargumente. Unterstützt die Platzhalter {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic Erwartetes CLI-Ausgabeformat. Standardwert für Audioanhänge: mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Zeitüberschreitung des Befehls in Millisekunden. Standardwert: 120000. OPENCLAW_DOCS_MARKER:paramClose:

    cwdstring
    env"Record<string,

    Die Standardausgabe des Befehls sowie generierte oder konvertierte Audiodaten sind auf 50 MiB begrenzt. Die diagnostische Standardfehlerausgabe ist auf 1 MiB begrenzt. OpenClaw beendet den Befehl und lässt die Synthese fehlschlagen, wenn eines der Limits überschritten wird.

    Microsoft (kein API-Schlüssel)
    enabledbooleandefault: true

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Name der neuronalen Microsoft-Stimme (z. B. en-US-MichelleNeural). Veralteter Alias: voice. Wenn die englische Standardstimme verwendet wird und der Antworttext überwiegend aus CJK-Zeichen besteht, wechselt OpenClaw automatisch zu zh-CN-XiaoxiaoNeural. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI Sprachcode (z. B. en-US). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Microsoft-Ausgabeformat. Standardwert: audio-24khz-48kbitrate-mono-mp3. Der mitgelieferte Edge-basierte Transport unterstützt nicht alle Formate. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg Prozentangaben als Zeichenfolgen (z. B. +10%, -5%). OPENCLAW_DOCS_MARKER:paramClose:

    saveSubtitlesboolean
    proxystring
    timeoutMsnumber

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk Veralteter Alias. Führen Sie openclaw doctor --fix aus, um die gespeicherte Konfiguration in providers.microsoft umzuschreiben. OPENCLAW_DOCS_MARKER:paramClose:

    MiniMax

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Greift ersatzweise auf MINIMAX_API_KEY zurück. Token-Plan-Authentifizierung über MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY oder MINIMAX_CODING_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standardwert: https://api.minimax.io. Umgebungsvariable: MINIMAX_API_HOST. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Standardwert: speech-2.8-hd. Umgebungsvariable: MINIMAX_TTS_MODEL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Standardwert: English_expressive_narrator. Umgebungsvariable: MINIMAX_TTS_VOICE_ID. Veralteter Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi 0.5..2.0. Standardwert: 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg (0, 10]. Standardwert: 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi Ganzzahl -12..12. Standardwert: 0. Nachkommastellen werden vor der Anfrage abgeschnitten. OPENCLAW_DOCS_MARKER:paramClose:

    OpenAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Greift ersatzweise auf OPENAI_API_KEY zurück. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci OpenAI-TTS-Modell-ID. Standardwert: gpt-4o-mini-tts. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Stimmenname (z. B. alloy, cedar). Standardwert: coral. Veralteter Alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg Explizites OpenAI-Feld instructions. Wenn es festgelegt ist, werden Persona-Prompt-Felder nicht automatisch zugeordnet. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24 ">Zusätzliche JSON-Felder, die nach den generierten OpenAI-TTS-Feldern in die Anfragetexte für /audio/speech eingefügt werden. Verwenden Sie dies für OpenAI-kompatible Endpunkte wie Kokoro, die Provider-spezifische Schlüssel wie lang erfordern; unsichere Prototypschlüssel werden ignoriert. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring

    Überschreibt den OpenAI-TTS-Endpunkt. Auflösungsreihenfolge: Konfiguration → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, sodass benutzerdefinierte Modell- und Stimmennamen akzeptiert werden und die Bereichsprüfung 0.25..4.0 für speed entfällt.

    OpenRouter

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebungsvariable: OPENROUTER_API_KEY. Kann models.providers.openrouter.apiKey wiederverwenden. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standardwert: https://openrouter.ai/api/v1. Das veraltete https://openrouter.ai/v1 wird normalisiert. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Standardwert: hexgrad/kokoro-82m. Alias: modelId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Standardwert: af_alloy. Veraltete Aliasse: voice, voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw Standardwert: mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Volcengine (BytePlus Seed Speech)

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebungsvariable: VOLCENGINE_TTS_API_KEY oder BYTEPLUS_SEED_SPEECH_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI Standardwert: seed-tts-1.0. Umgebungsvariable: VOLCENGINE_TTS_RESOURCE_ID. Verwenden Sie seed-tts-2.0, wenn Ihr Projekt über eine TTS-2.0-Berechtigung verfügt. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg App-Schlüssel-Header. Standardwert: aGjiRDfUWi. Umgebungsvariable: VOLCENGINE_TTS_APP_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Überschreibt den Seed-Speech-TTS-HTTP-Endpunkt. Umgebungsvariable: VOLCENGINE_TTS_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Stimmentyp. Standardwert: en_female_anna_mars_bigtts. Umgebungsvariable: VOLCENGINE_TTS_VOICE. Veralteter Alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI Provider-natives Geschwindigkeitsverhältnis, 0.2..3. OPENCLAW_DOCS_MARKER:paramClose:

    emotionstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ Veraltete Felder der Volcengine Speech Console. Umgebungsvariablen: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (Standardwert: volcano_tts). OPENCLAW_DOCS_MARKER:paramClose:

    xAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebungsvariable: XAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standardwert: https://api.x.ai/v1. Umgebungsvariable: XAI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Standardwert: eve. Mit Authentifizierung ruft openclaw infer tts voices --provider xai den aktuellen integrierten Katalog ab; ohne Authentifizierung werden die Offline-Ersatzwerte ara, eve, leo, rex und sal aufgeführt. Benutzerdefinierte Stimmen-IDs des Kontos werden auch dann weitergeleitet, wenn sie nicht in der integrierten Liste enthalten sind. Veralteter Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci BCP-47-Sprachcode oder auto. Standardwert: en. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw Standardwert: mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi Provider-native Überschreibung der Geschwindigkeit, 0.7..1.5. OPENCLAW_DOCS_MARKER:paramClose:

    Xiaomi MiMo

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebungsvariable: XIAOMI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standardwert: https://api.xiaomimimo.com/v1. Umgebungsvariable: XIAOMI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Standardwert: mimo-v2.5-tts. Umgebungsvariable: XIAOMI_TTS_MODEL. Unterstützt außerdem mimo-v2-tts und mimo-v2.5-tts-voicedesign. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Standardwert für Modelle mit voreingestellten Stimmen: mimo_default. Umgebungsvariable: XIAOMI_TTS_VOICE. Veralteter Alias: voice. Wird für mimo-v2.5-tts-voicedesign nicht gesendet. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic Standardwert: mp3. Umgebungsvariable: XIAOMI_TTS_FORMAT. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci Optionale natürlichsprachliche Stilanweisung, die als Benutzernachricht gesendet, aber nicht gesprochen wird. Bei mimo-v2.5-tts-voicedesign ist dies der Prompt für das Stimmendesign; OpenClaw stellt einen Standardwert bereit, wenn die Angabe fehlt. OPENCLAW_DOCS_MARKER:paramClose:

    Agenten-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 TTS-Ausgaben, die nicht im Opus-Format vorliegen, transkodieren, wenn ffmpeg verfügbar ist.

    WhatsApp sendet Audio über Baileys als PTT-Sprachnachricht (audio mit ptt: true) und sendet sichtbaren Text separat vom PTT-Audio, da Clients Untertitel bei Sprachnachrichten nicht einheitlich darstellen.

    Das Tool akzeptiert die optionalen Felder channel und timeoutMs; timeoutMs ist eine Provider-Anfragezeitüberschreitung pro Aufruf in Millisekunden. Werte pro Aufruf überschreiben messages.tts.timeoutMs; konfigurierte TTS-Zeitüberschreitungen überschreiben alle von Plugins festgelegten Provider-Standardwerte.

    Gateway-RPC

    Methode Zweck
    tts.status Aktuellen TTS-Status und letzten Versuch auslesen.
    tts.enable Lokale automatische Einstellung auf always setzen.
    tts.disable Lokale automatische Einstellung auf off setzen.
    tts.convert Einmalige Umwandlung von Text → Audio.
    tts.setProvider Lokale Provider-Einstellung festlegen.
    tts.personas Konfigurierte Personas und die aktive auflisten.
    tts.setPersona Lokale Persona-Einstellung festlegen.
    tts.providers Konfigurierte Provider und deren Status auflisten.

    Verwandte Themen

    Was this useful?
    On this page

    On this page