Tools

Sprachausgabe

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

TTS ist die Sprachausgabe-Hälfte des stt-tts-Modus von Talk. Provider-native realtime-Talk-Sitzungen synthetisieren Sprache im Realtime-Provider, statt diesen TTS-Pfad aufzurufen, während transcription-Sitzungen keine Assistant-Sprachantwort synthetisieren.

Schnellstart

  • Provider auswählen

    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.

  • API-Schlüssel festlegen

    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.

  • In der Konfiguration aktivieren

    Setzen Sie messages.tts.auto: "always" und messages.tts.provider:

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

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

  • 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-Sprachnotiz-Ausgabe und Telefonie.
    DeepInfra DEEPINFRA_API_KEY OpenAI-kompatibles TTS. Standardmäßig 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 Sprachnotiz- und Telefonie-Ausgabe.
    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 Öffentliches neuronales 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. 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 (Legacy-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, die anderen dienen als Fallback-Optionen. 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 ein Preset aus und passen Sie den Provider-Block an:

    Azure Speech

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

    ElevenLabs

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

    Google Gemini

    {
    messages: {
    tts: {
      auto: "always",
      provider: "google",
      providers: {
        google: {
          apiKey: "${GEMINI_API_KEY}",
          model: "gemini-3.1-flash-tts-preview",
          voiceName: "Kore",
          // Optional natural-language style prompts:
          // audioProfile: "Speak in a calm, podcast-host tone.",
          // speakerName: "Alex",
        },
      },
    },
    },
    }
    

    Gradium

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

    Inworld

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

    Local CLI

    {
    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)

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

    MiniMax

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

    OpenAI + ElevenLabs

    {
    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",
          voice: "alloy",
        },
        elevenlabs: {
          apiKey: "${ELEVENLABS_API_KEY}",
          model: "eleven_multilingual_v2",
          voiceId: "EXAVITQu4vr4xnSDxMaL",
          voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 },
          applyTextNormalization: "auto",
          languageCode: "en",
        },
      },
    },
    },
    }
    

    OpenRouter

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

    Volcengine

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

    xAI

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

    Xiaomi MiMo

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

    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 tief über messages.tts zusammengeführt, sodass Provider-Anmeldedaten 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.

    Vorrangreihenfolge für automatische Antworten, /tts audio, /tts status und das Agent-Tool tts:

    1. messages.tts
    2. aktive 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 per Deep Merge über die früheren Ebenen gelegt, sodass gemeinsame Provider-Anmeldedaten in messages.tts bleiben können, 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, providerneutrale Prompt- Absichten definieren und providerspezifische Bindungen für Stimmen, Modelle, Prompt- Vorlagen, Seeds und Spracheinstellungen 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 (providerneutraler 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:

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

    Die Provider-Auswahl erfolgt mit expliziten Angaben zuerst:

    1. Direkte Überschreibungen (CLI, Gateway, Talk, zugelassene TTS-Direktiven).
    2. lokale Einstellung /tts provider <id>.
    3. provider der aktiven Persona.
    4. messages.tts.provider.
    5. automatische Registry-Auswahl.

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

    1. messages.tts.providers.<id>
    2. messages.tts.personas.<persona>.providers.<id>
    3. Vertrauenswürdige Anfrageüberschreibungen
    4. Zugelassene vom Modell ausgegebene Überschreibungen für TTS-Direktiven

    Wie Provider Persona-Prompts verwenden

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

    Google Gemini

    Umschließt Persona-Prompt-Felder in einer Gemini-TTS-Prompt-Struktur nur dann, wenn die effektive Google-Provider-Konfiguration promptTemplate: "audio-profile-v1" oder personaPrompt setzt. 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 generiert diese Tags nicht.

    OpenAI

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

    Other providers

    Verwendet nur die providerspezifischen Persona-Bindungen unter personas.<id>.providers.<provider>. Persona-Prompt-Felder werden ignoriert, sofern der Provider keine eigene Persona-Prompt-Zuordnung implementiert.

    Fallback-Richtlinie

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

    Richtlinie Verhalten
    preserve-persona Standard. Providerneutrale 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 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 ist sitzungsbezogen. Ein Talk-Client sollte Provider-IDs, Modell-IDs, Stimm-IDs und Locales aus talk.catalog auswählen und sie über die Talk-Sitzung oder Handoff-Anfrage übergeben. Das Öffnen einer Sprachsitzung sollte messages.tts oder globale Talk-Provider-Standardwerte nicht verändern.

    Modellgesteuerte Direktiven

    Standardmäßig kann der Assistent [[tts:...]]-Direktiven ausgeben, um Stimme, Modell oder Geschwindigkeit für eine einzelne Antwort zu überschreiben, plus einen optionalen [[tts:text]]...[[/tts:text]]-Block für Ausdruckshinweise, 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 "tagged" 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 gesetzt ist. 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; erfordert allowProvider: true)
    • voice / voiceName / voice_name / google_voice / voiceId
    • model / google_model
    • stability, similarityBoost, style, speed, useSpeakerBoost
    • vol / volume (MiniMax-Lautstärke, 0-10)
    • pitch (MiniMax-ganzzahliger Pitch, -12 bis 12; Bruchwerte werden abgeschnitten)
    • emotion (Volcengine-Emotionstag)
    • applyTextNormalization (auto|on|off)
    • languageCode (ISO 639-1)
    • seed

    Modellüberschreibungen vollständig deaktivieren:

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

    Provider-Wechsel zulassen und andere Stellschrauben konfigurierbar lassen:

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

    Slash-Befehle

    Einzelner Befehl /tts. In Discord registriert OpenClaw zusätzlich /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>
    

    Verhaltenshinweise:

    • /tts on schreibt die lokale TTS-Einstellung auf always; /tts off schreibt sie auf 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 aktuellen Sitzungstranskript und sendet sie einmal als Audio. Es speichert nur einen Hash dieser Antwort im Sitzungseintrag, um doppelte Sprachausgaben zu unterdrücken.
    • /tts audio generiert eine einmalige Audioantwort (schaltet TTS nicht ein).
    • 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 den aktiven TTS-Modus sowie konfigurierte Provider-, Modell-, Stimm- und bereinigte benutzerdefinierte Endpunktmetadaten an, wenn TTS aktiviert ist.

    Benutzerspezifische Einstellungen

    Slash-Befehle schreiben lokale Überschreibungen nach prefsPath. Standard ist ~/.openclaw/settings/tts.json; überschreiben Sie dies mit der Env-Var OPENCLAW_TTS_PREFS oder messages.tts.prefsPath.

    Gespeichertes Feld Wirkung
    auto Lokale Auto-TTS-Überschreibung (always, off, …)
    provider Lokale Überschreibung des primären Providers
    persona Lokale Persona-Überschreibung
    maxLength Schwellenwert für Zusammenfassung (standardmäßig 1500 Zeichen)
    summarize Zusammenfassungsumschalter (standardmäßig true)

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

    Ausgabeformate (fest)

    Die TTS-Sprachauslieferung wird durch Kanalfähigkeiten gesteuert. Kanal-Plugins geben an, ob sprachstilbasiertes TTS Provider nach einem nativen Ziel voice-note fragen soll oder normale audio-file-Synthese beibehalten und nur kompatible Ausgaben für die Sprachauslieferung markieren soll.

    • Sprachnotizfähige Kanäle: Sprachnotizantworten bevorzugen Opus (opus_48000_64 von ElevenLabs, opus von OpenAI).
      • 48 kHz / 64 kbit/s ist ein guter Kompromiss für Sprachnachrichten.
    • Feishu / WhatsApp: Wenn eine Sprachnotizantwort als MP3/WebM/WAV/M4A oder eine andere wahrscheinliche Audiodatei erzeugt wird, transkodiert das Kanal-Plugin sie vor dem Senden der nativen Sprachnachricht mit ffmpeg in 48 kHz Ogg/Opus. WhatsApp sendet das Ergebnis über die Baileys-audio-Payload mit ptt: true und audio/ogg; codecs=opus. Wenn die Konvertierung fehlschlägt, erhält Feishu die ursprüngliche Datei 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_128 von ElevenLabs, mp3 von OpenAI).
      • 44,1 kHz / 128 kbit/s ist die Standardbalance für Sprachklarheit.
    • MiniMax: MP3 (speech-2.8-hd-Modell, 32-kHz-Abtastrate) für normale Audioanhänge. Für vom Kanal angekündigte Sprachnotizziele transkodiert OpenClaw die MiniMax-MP3 vor der Zustellung mit ffmpeg in 48 kHz Opus, wenn der Kanal Transkodierung ankündigt.
    • Xiaomi MiMo: Standardmäßig MP3 oder WAV, wenn konfiguriert. Für vom Kanal angekündigte Sprachnotizziele transkodiert OpenClaw die Xiaomi-Ausgabe vor der Zustellung mit ffmpeg in 48 kHz Opus, wenn der Kanal Transkodierung ankündigt.
    • Lokale CLI: verwendet das konfigurierte outputFormat. Sprachnotizziele werden in Ogg/Opus konvertiert, und Telefonausgabe wird mit ffmpeg in 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 Sprachnotizziele in 48 kHz Opus und gibt PCM für Talk/Telefonie direkt zurück.
    • Gradium: WAV für Audioanhänge, Opus für Sprachnotizziele und ulaw_8000 bei 8 kHz für Telefonie.
    • Inworld: MP3 für normale Audioanhänge, natives OGG_OPUS für Sprachnotizziele und rohes PCM bei 22050 Hz für Talk/Telefonie.
    • xAI: Standardmäßig MP3; responseFormat kann mp3, wav, pcm, mulaw oder alaw sein. 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-Sprachnotizformat 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 vom Dienst verfügbar.
      • Ausgabeformatwerte folgen 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.

    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, unter Verwendung von summaryModel (oder agents.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.

    Reply -> TTS enabled?
      no  -> send text
      yes -> has media / MEDIA: / short?
              yes -> send text
              no  -> length > limit?
                       no  -> TTS -> attach audio
                       yes -> summary enabled?
                                no  -> send text
                                yes -> summarize -> TTS -> attach audio
    

    Ausgabeformate nach Kanal

    Ziel Format
    Feishu / Matrix / Telegram / WhatsApp Sprachnotizantworten bevorzugen Opus (opus_48000_64 von ElevenLabs, opus von OpenAI). 48 kHz / 64 kbit/s balancieren Klarheit und Größe aus.
    Andere Kanäle MP3 (mp3_44100_128 von ElevenLabs, mp3 von OpenAI). 44,1 kHz / 128 kbit/s 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 Sprachnotizantwort als MP3/WebM/WAV/M4A ankommt, transkodiert das Kanal-Plugin sie mit ffmpeg in 48 kHz Ogg/Opus. WhatsApp sendet über Baileys mit ptt: true und audio/ogg; codecs=opus. Wenn die Konvertierung fehlschlägt: Feishu fällt auf das Anhängen der ursprünglichen Datei zurück; das Senden über WhatsApp schlägt fehl, statt eine inkompatible PTT-Payload zu posten.
    • MiniMax / Xiaomi MiMo: Standardmäßig MP3 (32 kHz für MiniMax speech-2.8-hd); für Sprachnotizziele über ffmpeg in 48 kHz Opus transkodiert.
    • Lokale CLI: Verwendet das konfigurierte outputFormat. Sprachnotizziele werden in Ogg/Opus konvertiert und Telefonausgabe 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 Sprachnotizziele in 48 kHz Opus und gibt PCM für Talk/Telefonie direkt zurück.
    • Inworld: MP3-Anhänge, native OGG_OPUS-Sprachnotiz, rohes PCM mit 22050 Hz für Talk/Telefonie.
    • xAI: Standardmäßig MP3; responseFormat kann mp3|wav|pcm|mulaw|alaw sein. Verwendet den Batch-REST-Endpunkt von xAI — Streaming-WebSocket-TTS wird nicht verwendet. Das native Opus-Sprachnotizformat wird nicht unterstützt.
    • Microsoft: Verwendet microsoft.outputFormat (Standard audio-24khz-48kbitrate-mono-mp3). Telegram sendVoice akzeptiert 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 wie oben aufgeführt pro Kanal festgelegt.

    Feldreferenz

    Top-level 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

    Legacy-Schalter. openclaw doctor --fix migriert dies zu auto.

    mode"final" | "all"

    "all" schließt Tool-/Blockantworten zusätzlich zu finalen Antworten ein.

    providerstring

    Speech-Provider-ID. Wenn nicht gesetzt, verwendet OpenClaw den ersten konfigurierten Provider in der Auto-Select-Reihenfolge der Registry. Legacy provider: "edge" wird durch openclaw doctor --fix zu "microsoft" umgeschrieben.

    personastring

    Aktive Persona-ID 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

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

    modelOverridesobject

    Erlaubt 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, indiziert nach Speech-Provider-ID. Legacy-Direktblöcke (messages.tts.openai, .elevenlabs, .microsoft, .edge) werden durch openclaw doctor --fix umgeschrieben; committen Sie nur messages.tts.providers.<id>.

    maxTextLengthnumber

    Harte Obergrenze für TTS-Eingabezeichen. /tts audio schlägt fehl, wenn sie überschritten wird.

    timeoutMsnumber

    Anfrage-Timeout in Millisekunden.

    prefsPathstring

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

    Azure Speech

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Env: 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). Env: AZURE_SPEECH_REGION oder SPEECH_REGION. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci Optionaler Azure Speech-Endpunkt-Override (Alias baseUrl). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Azure Voice ShortName. Standard en-US-JennyNeural. 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 Sprachnotizausgabe. Standard ogg-24khz-16bit-mono-opus. OPENCLAW_DOCS_MARKER:paramClose:

    ElevenLabs

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Fällt auf ELEVENLABS_API_KEY oder XI_API_KEY zurück. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Modell-ID (z. B. eleven_multilingual_v2, eleven_v3). OPENCLAW_DOCS_MARKER:paramClose:

    voiceIdstring
    voiceSettingsobject

    stability, similarityBoost, style (jeweils 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normal).

    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 Best-Effort-Determinismus. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring
    Google Gemini

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Fällt auf GEMINI_API_KEY / GOOGLE_API_KEY zurück. Wenn weggelassen, kann TTS models.providers.google.apiKey vor dem Env-Fallback 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:IHBhdGg9InZvaWNlTmFtZSIgdHlwZT0ic3RyaW5nIg Name der vorgefertigten Gemini-Stimme. Standard Kore. Alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    audioProfilestring
    speakerNamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn Setzen Sie dies auf audio-profile-v1, um aktive Persona-Prompt-Felder 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 Standard https://api.gradium.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI Standard Emma (YTpq7expH9539ERJ). OPENCLAW_DOCS_MARKER:paramClose:

    Inworld

    Primäres Inworld

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebung: INWORLD_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI Standard inworld-tts-1.5-max. Außerdem: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI Standard Sarah. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi Sampling-Temperatur 0..2. OPENCLAW_DOCS_MARKER:paramClose:

    Local 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. Standard mp3 für Audioanhänge. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Befehls-Timeout in Millisekunden. Standard 120000. OPENCLAW_DOCS_MARKER:paramClose:

    cwdstring
    env"Record<string,
    Microsoft (no API key)
    enabledboolean

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Name der neuronalen Microsoft-Stimme (z. B. en-US-MichelleNeural). 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. Standard audio-24khz-48kbitrate-mono-mp3. Nicht alle Formate werden vom gebündelten Edge-basierten Transport unterstützt. OPENCLAW_DOCS_MARKER:paramClose:

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

    saveSubtitlesboolean
    proxystring
    timeoutMsnumber

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

    MiniMax

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Fällt 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 Standard https://api.minimax.io. Umgebung: MINIMAX_API_HOST. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Standard speech-2.8-hd. Umgebung: MINIMAX_TTS_MODEL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI Standard English_expressive_narrator. Umgebung: MINIMAX_TTS_VOICE_ID. OPENCLAW_DOCS_MARKER:paramClose:

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

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi Ganzzahl -12..12. Standard 0. Dezimalwerte werden vor der Anfrage abgeschnitten. OPENCLAW_DOCS_MARKER:paramClose:

    OpenAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Fällt auf OPENAI_API_KEY zurück. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci OpenAI-TTS-Modell-ID (z. B. gpt-4o-mini-tts). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Stimmenname (z. B. alloy, cedar). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg Explizites OpenAI-Feld instructions. Wenn es gesetzt 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 /audio/speech-Anfragetexte zusammengeführt 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, daher werden benutzerdefinierte Modell- und Stimmennamen akzeptiert.

    OpenRouter

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standard https://openrouter.ai/api/v1. Legacy-https://openrouter.ai/v1 wird normalisiert. OPENCLAW_DOCS_MARKER:paramClose:

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Standard af_alloy. Alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw Standard mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Volcengine (BytePlus Seed Speech)

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI Standard seed-tts-1.0. Umgebung: 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-Key-Header. Standard aGjiRDfUWi. Umgebung: VOLCENGINE_TTS_APP_KEY. OPENCLAW_DOCS_MARKER:paramClose:

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Stimmentyp. Standard en_female_anna_mars_bigtts. Umgebung: VOLCENGINE_TTS_VOICE. OPENCLAW_DOCS_MARKER:paramClose:

    speedRationumber
    emotionstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ Legacy-Felder der Volcengine Speech Console. Umgebung: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (Standard volcano_tts). OPENCLAW_DOCS_MARKER:paramClose:

    xAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebung: XAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standard https://api.x.ai/v1. Umgebung: XAI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI Standard eve. Live-Stimmen: ara, eve, leo, rex, sal, una. OPENCLAW_DOCS_MARKER:paramClose:

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw Standard mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Xiaomi MiMo

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Umgebung: XIAOMI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Standard https://api.xiaomimimo.com/v1. Umgebung: XIAOMI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Standard mimo-v2.5-tts. Umgebung: XIAOMI_TTS_MODEL. Unterstützt auch mimo-v2-tts. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci Standard mimo_default. Umgebung: XIAOMI_TTS_VOICE. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic Standard mp3. Umgebung: XIAOMI_TTS_FORMAT. OPENCLAW_DOCS_MARKER:paramClose:

    stylestring

    Agenten-Tool

    Das tts-Tool wandelt Text in Sprache um und gibt einen Audioanhang für die Antwortzustellung zurück. In 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 für Sprachnotizen nicht konsistent rendern.

    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 setzen.
    tts.setPersona Lokale Persona-Präferenz setzen.
    tts.providers Konfigurierte Provider und Status auflisten.

    Verwandt