Naar hoofdinhoud gaan

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

OpenClaw kan uitgaande antwoorden omzetten naar audio via 14 spraakproviders en native spraakberichten leveren op Feishu, Matrix, Telegram en WhatsApp, audiobijlagen overal elders, en PCM/Ulaw-streams voor telefonie en Talk.

Snelstart

1

Kies een provider

OpenAI en ElevenLabs zijn de betrouwbaarste gehoste opties. Microsoft en Local CLI werken zonder API-sleutel. Zie de providermatrix voor de volledige lijst.
2

Stel de API-sleutel in

Exporteer de omgevingsvariabele voor je provider (bijvoorbeeld OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft en Local CLI hebben geen sleutel nodig.
3

Schakel dit in de configuratie in

Stel messages.tts.auto: "always" en messages.tts.provider in:
{
  messages: {
    tts: {
      auto: "always",
      provider: "elevenlabs",
    },
  },
}
4

Probeer het in de chat

/tts status toont de huidige status. /tts audio Hello from OpenClaw verstuurt een eenmalig audioantwoord.
Auto-TTS staat standaard uit. Wanneer messages.tts.provider niet is ingesteld, kiest OpenClaw de eerste geconfigureerde provider in de auto-selectievolgorde van het register.

Ondersteunde providers

ProviderAuthOpmerkingen
Azure SpeechAZURE_SPEECH_KEY + AZURE_SPEECH_REGION (ook AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION)Native Ogg/Opus-spraaknotitie-uitvoer en telefonie.
DeepInfraDEEPINFRA_API_KEYOpenAI-compatibele TTS. Standaard ingesteld op hexgrad/Kokoro-82M.
ElevenLabsELEVENLABS_API_KEY of XI_API_KEYStemklonen, meertalig, deterministisch via seed.
Google GeminiGEMINI_API_KEY of GOOGLE_API_KEYGemini API TTS; persona-bewust via promptTemplate: "audio-profile-v1".
GradiumGRADIUM_API_KEYSpraaknotitie- en telefonie-uitvoer.
InworldINWORLD_API_KEYStreaming TTS-API. Native Opus-spraaknotitie en PCM-telefonie.
Local CLIgeenVoert een geconfigureerde lokale TTS-opdracht uit.
MicrosoftgeenPublieke Edge neural TTS via node-edge-tts. Naar beste vermogen, geen SLA.
MiniMaxMINIMAX_API_KEY (of Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY)T2A v2-API. Standaard ingesteld op speech-2.8-hd.
OpenAIOPENAI_API_KEYOok gebruikt voor automatische samenvatting; ondersteunt persona-instructions.
OpenRouterOPENROUTER_API_KEY (kan models.providers.openrouter.apiKey hergebruiken)Standaardmodel hexgrad/kokoro-82m.
VolcengineVOLCENGINE_TTS_API_KEY of BYTEPLUS_SEED_SPEECH_API_KEY (verouderde AppID/token: VOLCENGINE_TTS_APPID/_TOKEN)BytePlus Seed Speech HTTP-API.
VydraVYDRA_API_KEYGedeelde image-, video- en spraakprovider.
xAIXAI_API_KEYxAI batch-TTS. Native Opus-spraaknotitie wordt niet ondersteund.
Xiaomi MiMoXIAOMI_API_KEYMiMo TTS via Xiaomi-chatvoltooiingen.
Als meerdere providers zijn geconfigureerd, wordt de geselecteerde eerst gebruikt en zijn de andere terugvalopties. Automatische samenvatting gebruikt summaryModel (of agents.defaults.model.primary), dus die provider moet ook geauthenticeerd zijn als je samenvattingen ingeschakeld houdt.
De gebundelde Microsoft-provider gebruikt de online neurale TTS-service van Microsoft Edge via node-edge-tts. Het is een openbare webservice zonder gepubliceerde SLA of quota — behandel deze als een service op basis van beste inspanning. De verouderde provider-id edge wordt genormaliseerd naar microsoft en openclaw doctor --fix herschrijft opgeslagen configuratie; nieuwe configuraties moeten altijd microsoft gebruiken.

Configuratie

TTS-configuratie staat onder messages.tts in ~/.openclaw/openclaw.json. Kies een preset en pas het providerblok aan:
{
  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",
        },
      },
    },
  },
}

Spraakoverschrijvingen per agent

Gebruik agents.list[].tts wanneer één agent moet spreken met een andere provider, stem, model, persona of automatische TTS-modus. Het agentblok wordt diep samengevoegd over messages.tts, zodat providerreferenties in de globale providerconfiguratie kunnen blijven staan:
{
  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" },
          },
        },
      },
    ],
  },
}
Om een persona per agent vast te zetten, stel agents.list[].tts.persona in naast de providerconfiguratie — dit overschrijft de globale messages.tts.persona alleen voor die agent. Volgorde van prioriteit voor automatische antwoorden, /tts audio, /tts status en de agenttool tts:
  1. messages.tts
  2. actieve agents.list[].tts
  3. kanaaloverschrijving, wanneer het kanaal channels.<channel>.tts ondersteunt
  4. accountoverschrijving, wanneer het kanaal channels.<channel>.accounts.<id>.tts doorgeeft
  5. lokale /tts-voorkeuren voor deze host
  6. inline [[tts:...]]-directieven wanneer modeloverschrijvingen zijn ingeschakeld
Kanaal- en accountoverschrijvingen gebruiken dezelfde vorm als messages.tts en worden met een deep merge samengevoegd over de eerdere lagen, zodat gedeelde providerreferenties in messages.tts kunnen blijven terwijl een kanaal of botaccount alleen de stem, het model, de persona of de automatische modus wijzigt:
{
  messages: {
    tts: {
      provider: "openai",
      providers: {
        openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },
      },
    },
  },
  channels: {
    feishu: {
      accounts: {
        english: {
          tts: {
            providers: {
              openai: { voice: "shimmer" },
            },
          },
        },
      },
    },
  },
}

Persona’s

Een persona is een stabiele gesproken identiteit die deterministisch over providers heen kan worden toegepast. Deze kan één provider verkiezen, providerneutrale promptintentie definiëren en providerspecifieke bindingen bevatten voor stemmen, modellen, promptsjablonen, seeds en steminstellingen.

Minimale persona

{
  messages: {
    tts: {
      auto: "always",
      persona: "narrator",
      personas: {
        narrator: {
          label: "Narrator",
          provider: "elevenlabs",
          providers: {
            elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2" },
          },
        },
      },
    },
  },
}

Volledige persona (providerneutrale 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,
              },
            },
          },
        },
      },
    },
  },
}

Personaresolutie

De actieve persona wordt deterministisch geselecteerd:
  1. /tts persona <id> lokale voorkeur, indien ingesteld.
  2. messages.tts.persona, indien ingesteld.
  3. Geen persona.
Providerselectie verloopt expliciet eerst:
  1. Directe overschrijvingen (CLI, Gateway, Talk, toegestane TTS-directives).
  2. /tts provider <id> lokale voorkeur.
  3. De provider van de actieve persona.
  4. messages.tts.provider.
  5. Automatische registerselectie.
Voor elke providerpoging voegt OpenClaw configuraties in deze volgorde samen:
  1. messages.tts.providers.<id>
  2. messages.tts.personas.<persona>.providers.<id>
  3. Vertrouwde aanvraagoverschrijvingen
  4. Toegestane door het model uitgezonden TTS-directive-overschrijvingen

Hoe providers personaprompts gebruiken

Personapromptvelden (profile, scene, sampleContext, style, accent, pacing, constraints) zijn providerneutraal. Elke provider bepaalt hoe deze worden gebruikt:
Verpakt personapromptvelden in een Gemini TTS-promptstructuur alleen wanneer de effectieve Google-providerconfiguratie promptTemplate: "audio-profile-v1" of personaPrompt instelt. De oudere velden audioProfile en speakerName worden nog steeds vooraf toegevoegd als Google-specifieke prompttekst. Inline audiotags zoals [whispers] of [laughs] binnen een [[tts:text]]-blok blijven behouden binnen het Gemini-transcript; OpenClaw genereert deze tags niet.
Koppelt personapromptvelden aan het aanvraagveld instructions alleen wanneer er geen expliciete OpenAI-instructions is geconfigureerd. Expliciete instructions heeft altijd voorrang.
Gebruiken alleen de providerspecifieke personabindingen onder personas.<id>.providers.<provider>. Personapromptvelden worden genegeerd, tenzij de provider een eigen persona-promptkoppeling implementeert.

Fallbackbeleid

fallbackPolicy bepaalt het gedrag wanneer een persona geen binding heeft voor de geprobeerde provider:
BeleidGedrag
preserve-personaStandaard. Providerneutrale promptvelden blijven beschikbaar; de provider kan ze gebruiken of negeren.
provider-defaultsPersona wordt weggelaten uit promptvoorbereiding voor die poging; de provider gebruikt zijn neutrale standaardwaarden terwijl fallback naar andere providers doorgaat.
failSla die providerpoging over met reasonCode: "not_configured" en personaBinding: "missing". Fallbackproviders worden nog steeds geprobeerd.
De volledige TTS-aanvraag mislukt alleen wanneer elke geprobeerde provider wordt overgeslagen of mislukt.

Modelgestuurde directives

Standaard kan de assistent [[tts:...]]-directives uitzenden om stem, model of snelheid voor één antwoord te overschrijven, plus een optioneel [[tts:text]]...[[/tts:text]]-blok voor expressieve aanwijzingen die alleen in audio moeten verschijnen:
Here you go.

[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](laughs) Read the song once more.[[/tts:text]]
Wanneer messages.tts.auto "tagged" is, zijn directives vereist om audio te activeren. Streamingbloklevering verwijdert directives uit zichtbare tekst voordat het kanaal ze ziet, zelfs wanneer ze over aangrenzende blokken zijn gesplitst. provider=... wordt genegeerd tenzij modelOverrides.allowProvider: true. Wanneer een antwoord provider=... declareert, worden de andere sleutels in die directive alleen door die provider geparsed; niet-ondersteunde sleutels worden verwijderd en gerapporteerd als TTS directive-waarschuwingen. Beschikbare directive-sleutels:
  • provider (geregistreerde provider-id; vereist allowProvider: true)
  • voice / voiceName / voice_name / google_voice / voiceId
  • model / google_model
  • stability, similarityBoost, style, speed, useSpeakerBoost
  • vol / volume (MiniMax-volume, 0-10)
  • pitch (MiniMax-gehele pitch, −12 tot 12; fractionele waarden worden afgekapt)
  • emotion (Volcengine-emotietag)
  • applyTextNormalization (auto|on|off)
  • languageCode (ISO 639-1)
  • seed
Modeloverschrijvingen volledig uitschakelen:
{ messages: { tts: { modelOverrides: { enabled: false } } } }
Providerwisseling toestaan terwijl andere knoppen configureerbaar blijven:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }

Slash-commando’s

Enkel commando /tts. Op Discord registreert OpenClaw ook /voice omdat /tts een ingebouwd Discord-commando is — tekst /tts ... werkt nog steeds.
/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>
Commando’s vereisen een geautoriseerde afzender (allowlist-/eigenaarsregels zijn van toepassing) en ofwel commands.text of native commandoregistratie moet zijn ingeschakeld.
Gedragsnotities:
  • /tts on schrijft de lokale TTS-voorkeur naar always; /tts off schrijft deze naar off.
  • /tts chat on|off|default schrijft een sessiegebonden auto-TTS-overschrijving voor de huidige chat.
  • /tts persona <id> schrijft de lokale personavoorkeur; /tts persona off wist deze.
  • /tts latest leest het nieuwste assistentantwoord uit het huidige sessietranscript en verstuurt het eenmaal als audio. Het slaat alleen een hash van dat antwoord op in de sessie-entry om dubbele stemverzendingen te onderdrukken.
  • /tts audio genereert een eenmalig audioantwoord (schakelt TTS niet in).
  • limit en summary worden opgeslagen in lokale voorkeuren, niet in de hoofdconfiguratie.
  • /tts status bevat fallbackdiagnostiek voor de nieuwste poging — Fallback: <primary> -> <used>, Attempts: ... en details per poging (provider:outcome(reasonCode) latency).
  • /status toont de actieve TTS-modus plus geconfigureerde provider, model, stem en opgeschoonde aangepaste eindpuntmetadata wanneer TTS is ingeschakeld.

Voorkeuren per gebruiker

Slash-commando’s schrijven lokale overschrijvingen naar prefsPath. De standaardwaarde is ~/.openclaw/settings/tts.json; overschrijf met de env-var OPENCLAW_TTS_PREFS of messages.tts.prefsPath.
Opgeslagen veldEffect
autoLokale auto-TTS-overschrijving (always, off, …)
providerLokale primaire provideroverride
personaLokale personaoverride
maxLengthSamenvattingsdrempel (standaard 1500 tekens)
summarizeSamenvattingsschakelaar (standaard true)
Deze overschrijven de effectieve configuratie uit messages.tts plus het actieve agents.list[].tts-blok voor die host.

Uitvoerformaten (vast)

TTS-stemlevering wordt aangestuurd door kanaalmogelijkheden. Kanaalplugins adverteren of TTS in stemstijl providers moet vragen om een native voice-note-doel of normale audio-file-synthese moet behouden en compatibele uitvoer alleen voor stemlevering moet markeren.
  • Kanalen met spraaknotitiemogelijkheid: spraaknotitie-antwoorden geven de voorkeur aan Opus (opus_48000_64 van ElevenLabs, opus van OpenAI).
    • 48 kHz / 64 kbps is een goede afweging voor spraakberichten.
  • Feishu / WhatsApp: wanneer een spraaknotitie-antwoord wordt geproduceerd als MP3/WebM/WAV/M4A of een ander waarschijnlijk audiobestand, zet de kanaalplugin dit met ffmpeg om naar 48 kHz Ogg/Opus voordat het native spraakbericht wordt verzonden. WhatsApp verzendt het resultaat via de Baileys-audio-payload met ptt: true en audio/ogg; codecs=opus. Als conversie mislukt, ontvangt Feishu het oorspronkelijke bestand als bijlage; verzenden via WhatsApp mislukt in plaats van een incompatibele PTT-payload te plaatsen.
  • BlueBubbles: houdt providersynthese op het normale audiobestandspad; MP3- en CAF-uitvoer wordt gemarkeerd voor levering als iMessage-spraakmemo.
  • Andere kanalen: MP3 (mp3_44100_128 van ElevenLabs, mp3 van OpenAI).
    • 44,1 kHz / 128 kbps is de standaardbalans voor spraakhelderheid.
  • MiniMax: MP3 (speech-2.8-hd-model, 32 kHz samplefrequentie) voor normale audiobijlagen. Voor door kanalen aangekondigde spraaknotitiedoelen zet OpenClaw de MiniMax-MP3 vóór levering om naar 48 kHz Opus met ffmpeg wanneer het kanaal transcodering aankondigt.
  • Xiaomi MiMo: standaard MP3, of WAV wanneer geconfigureerd. Voor door kanalen aangekondigde spraaknotitiedoelen zet OpenClaw Xiaomi-uitvoer vóór levering om naar 48 kHz Opus met ffmpeg wanneer het kanaal transcodering aankondigt.
  • Lokale CLI: gebruikt de geconfigureerde outputFormat. Spraaknotitiedoelen worden geconverteerd naar Ogg/Opus en telefonie-uitvoer wordt geconverteerd naar ruwe 16 kHz mono PCM met ffmpeg.
  • Google Gemini: Gemini API TTS retourneert ruwe 24 kHz PCM. OpenClaw verpakt dit als WAV voor audiobijlagen, transcodeert het naar 48 kHz Opus voor spraaknotitiedoelen en retourneert PCM rechtstreeks voor Talk/telefonie.
  • Gradium: WAV voor audiobijlagen, Opus voor spraaknotitiedoelen en ulaw_8000 op 8 kHz voor telefonie.
  • Inworld: MP3 voor normale audiobijlagen, native OGG_OPUS voor spraaknotitiedoelen en ruwe PCM op 22050 Hz voor Talk/telefonie.
  • xAI: standaard MP3; responseFormat kan mp3, wav, pcm, mulaw of alaw zijn. OpenClaw gebruikt xAI’s batch-REST-TTS-eindpunt en retourneert een volledige audiobijlage; xAI’s streaming-TTS-WebSocket wordt niet gebruikt door dit providerpad. Native Opus-spraaknotitieformaat wordt niet ondersteund door dit pad.
  • Microsoft: gebruikt microsoft.outputFormat (standaard audio-24khz-48kbitrate-mono-mp3).
    • Het meegeleverde transport accepteert een outputFormat, maar niet alle formaten zijn beschikbaar vanuit de service.
    • Uitvoerformatwaarden volgen Microsoft Speech-uitvoerformaten (inclusief Ogg/WebM Opus).
    • Telegram sendVoice accepteert OGG/MP3/M4A; gebruik OpenAI/ElevenLabs als je gegarandeerde Opus-spraakberichten nodig hebt.
    • Als het geconfigureerde Microsoft-uitvoerformaat mislukt, probeert OpenClaw het opnieuw met MP3.
OpenAI/ElevenLabs-uitvoerformaten zijn per kanaal vast (zie hierboven).

Auto-TTS-gedrag

Wanneer messages.tts.auto is ingeschakeld, doet OpenClaw het volgende:
  • Slaat TTS over als het antwoord al media of een MEDIA:-directive bevat.
  • Slaat zeer korte antwoorden over (minder dan 10 tekens).
  • Vat lange antwoorden samen wanneer samenvattingen zijn ingeschakeld, met summaryModel (of agents.defaults.model.primary).
  • Voegt de gegenereerde audio toe aan het antwoord.
  • In mode: "final" wordt nog steeds audio-only TTS verzonden voor gestreamde eindantwoorden nadat de tekststream is voltooid; de gegenereerde media doorloopt dezelfde kanaalmedianormalisatie als normale antwoordbijlagen.
Als het antwoord langer is dan maxLength en samenvatting uit staat (of er geen API-sleutel is voor het samenvattingsmodel), wordt audio overgeslagen en wordt het normale tekstantwoord verzonden.
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

Uitvoerformaten per kanaal

DoelFormaat
Feishu / Matrix / Telegram / WhatsAppSpraaknotitie-antwoorden geven de voorkeur aan Opus (opus_48000_64 van ElevenLabs, opus van OpenAI). 48 kHz / 64 kbps brengt helderheid en grootte in balans.
Andere kanalenMP3 (mp3_44100_128 van ElevenLabs, mp3 van OpenAI). 44,1 kHz / 128 kbps is standaard voor spraak.
Talk / telefonieProvider-native PCM (Inworld 22050 Hz, Google 24 kHz), of ulaw_8000 van Gradium voor telefonie.
Opmerkingen per provider:
  • Feishu / WhatsApp-transcodering: Wanneer een spraaknotitie-antwoord binnenkomt als MP3/WebM/WAV/M4A, zet de kanaalplugin dit met ffmpeg om naar 48 kHz Ogg/Opus. WhatsApp verzendt via Baileys met ptt: true en audio/ogg; codecs=opus. Als conversie mislukt: Feishu valt terug op het bijvoegen van het oorspronkelijke bestand; WhatsApp-verzending mislukt in plaats van een incompatibele PTT-payload te plaatsen.
  • MiniMax / Xiaomi MiMo: Standaard MP3 (32 kHz voor MiniMax speech-2.8-hd); getranscodeerd naar 48 kHz Opus voor spraaknotitiedoelen via ffmpeg.
  • Lokale CLI: Gebruikt geconfigureerde outputFormat. Spraaknotitiedoelen worden geconverteerd naar Ogg/Opus en telefonie-uitvoer naar ruwe 16 kHz mono PCM.
  • Google Gemini: Retourneert ruwe 24 kHz PCM. OpenClaw verpakt dit als WAV voor bijlagen, transcodeert naar 48 kHz Opus voor spraaknotitiedoelen en retourneert PCM rechtstreeks voor Talk/telefonie.
  • Inworld: MP3-bijlagen, native OGG_OPUS-spraaknotitie, ruwe PCM 22050 Hz voor Talk/telefonie.
  • xAI: Standaard MP3; responseFormat kan mp3|wav|pcm|mulaw|alaw zijn. Gebruikt xAI’s batch-REST-eindpunt — streaming WebSocket TTS wordt niet gebruikt. Native Opus-spraaknotitieformaat wordt niet ondersteund.
  • Microsoft: Gebruikt microsoft.outputFormat (standaard audio-24khz-48kbitrate-mono-mp3). Telegram sendVoice accepteert OGG/MP3/M4A; gebruik OpenAI/ElevenLabs als je gegarandeerde Opus-spraakberichten nodig hebt. Als het geconfigureerde Microsoft-formaat mislukt, probeert OpenClaw het opnieuw met MP3.
OpenAI- en ElevenLabs-uitvoerformaten zijn per kanaal vast zoals hierboven vermeld.

Veldreferentie

auto
"off" | "always" | "inbound" | "tagged"
Auto-TTS-modus. inbound verzendt alleen audio na een inkomend spraakbericht; tagged verzendt alleen audio wanneer het antwoord [[tts:...]]-directives of een [[tts:text]]-blok bevat.
enabled
boolean
verouderd
Verouderde schakelaar. openclaw doctor --fix migreert dit naar auto.
mode
"final" | "all"
standaard:"final"
"all" omvat tool-/blokantwoorden naast eindantwoorden.
provider
string
Spraakprovider-id. Wanneer niet ingesteld, gebruikt OpenClaw de eerste geconfigureerde provider in de automatische selecteerorde van het register. Verouderde provider: "edge" wordt door openclaw doctor --fix herschreven naar "microsoft".
persona
string
Actieve persona-id uit personas. Genormaliseerd naar kleine letters.
personas.<id>
object
Stabiele gesproken identiteit. Velden: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Zie Persona’s.
summaryModel
string
Goedkoop model voor automatische samenvatting; standaard agents.defaults.model.primary. Accepteert provider/model of een geconfigureerde modelalias.
modelOverrides
object
Staat toe dat het model TTS-directives uitzendt. enabled is standaard true; allowProvider is standaard false.
providers.<id>
object
Provider-eigen instellingen gesleuteld op spraakprovider-id. Verouderde directe blokken (messages.tts.openai, .elevenlabs, .microsoft, .edge) worden herschreven door openclaw doctor --fix; commit alleen messages.tts.providers.<id>.
maxTextLength
number
Harde limiet voor TTS-invoertekens. /tts audio mislukt als deze wordt overschreden.
timeoutMs
number
Aanvraag-time-out in milliseconden.
prefsPath
string
Overschrijft het lokale prefs-JSON-pad (provider/limiet/samenvatting). Standaard ~/.openclaw/settings/tts.json.
apiKey
string
Env: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, of SPEECH_KEY.
region
string
Azure Speech-regio (bijv. eastus). Env: AZURE_SPEECH_REGION of SPEECH_REGION.
endpoint
string
Optionele overschrijving van Azure Speech-eindpunt (alias baseUrl).
voice
string
Azure-stem-ShortName. Standaard en-US-JennyNeural.
lang
string
SSML-taalcode. Standaard en-US.
outputFormat
string
Azure X-Microsoft-OutputFormat voor standaardaudio. Standaard audio-24khz-48kbitrate-mono-mp3.
voiceNoteOutputFormat
string
Azure X-Microsoft-OutputFormat voor spraaknotitie-uitvoer. Standaard ogg-24khz-16bit-mono-opus.
apiKey
string
Valt terug op ELEVENLABS_API_KEY of XI_API_KEY.
model
string
Model-id (bijv. eleven_multilingual_v2, eleven_v3).
voiceId
string
ElevenLabs-stem-id.
voiceSettings
object
stability, similarityBoost, style (elk 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normaal).
applyTextNormalization
"auto" | "on" | "off"
Tekstnormalisatiemodus.
languageCode
string
2-letterige ISO 639-1 (bijv. en, de).
seed
number
Geheel getal 0..4294967295 voor best-effort-determinisme.
baseUrl
string
Overschrijf de basis-URL van de ElevenLabs API.
apiKey
string
Valt terug op GEMINI_API_KEY / GOOGLE_API_KEY. Indien weggelaten, kan TTS models.providers.google.apiKey hergebruiken vóór env-terugval.
model
string
Gemini TTS-model. Standaard gemini-3.1-flash-tts-preview.
voiceName
string
Gemini-naam van vooraf gebouwde stem. Standaard Kore. Alias: voice.
audioProfile
string
Prompt in natuurlijke taal voor stijl, toegevoegd vóór gesproken tekst.
speakerName
string
Optioneel sprekerlabel, toegevoegd vóór gesproken tekst wanneer je prompt een benoemde spreker gebruikt.
promptTemplate
"audio-profile-v1"
Stel in op audio-profile-v1 om actieve persona-promptvelden te verpakken in een deterministische Gemini TTS-promptstructuur.
personaPrompt
string
Google-specifieke extra persona-prompttekst, toegevoegd aan de Director’s Notes van de template.
baseUrl
string
Alleen https://generativelanguage.googleapis.com wordt geaccepteerd.
apiKey
string
Omgeving: GRADIUM_API_KEY.
baseUrl
string
Standaard https://api.gradium.ai.
voiceId
string
Standaard Emma (YTpq7expH9539ERJ).
apiKey
string
Omgeving: INWORLD_API_KEY.
baseUrl
string
Standaard https://api.inworld.ai.
modelId
string
Standaard inworld-tts-1.5-max. Ook: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
voiceId
string
Standaard Sarah.
temperature
number
Samplingtemperatuur 0..2.
command
string
Lokaal uitvoerbaar bestand of commandoreeks voor CLI TTS.
args
string[]
Commandoargumenten. Ondersteunt de placeholders {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
outputFormat
"mp3" | "opus" | "wav"
Verwachte CLI-uitvoerindeling. Standaard mp3 voor audiobijlagen.
timeoutMs
number
Commandotime-out in milliseconden. Standaard 120000.
cwd
string
Optionele werkmap voor het commando.
env
Record<string, string>
Optionele omgevingsoverschrijvingen voor het commando.
enabled
boolean
standaard:"true"
Sta Microsoft-spraakgebruik toe.
voice
string
Naam van Microsoft-neurale stem (bijv. en-US-MichelleNeural).
lang
string
Taalcode (bijv. en-US).
outputFormat
string
Microsoft-uitvoerindeling. Standaard audio-24khz-48kbitrate-mono-mp3. Niet alle indelingen worden ondersteund door het meegeleverde Edge-gebaseerde transport.
rate / pitch / volume
string
Percentagereeksen (bijv. +10%, -5%).
saveSubtitles
boolean
Schrijf JSON-ondertitels naast het audiobestand.
proxy
string
Proxy-URL voor Microsoft-spraakverzoeken.
timeoutMs
number
Overschrijving van aanvraagtime-out (ms).
edge.*
object
verouderd
Verouderde alias. Voer openclaw doctor --fix uit om opgeslagen configuratie te herschrijven naar providers.microsoft.
apiKey
string
Valt terug op MINIMAX_API_KEY. Token Plan-authenticatie via MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY of MINIMAX_CODING_API_KEY.
baseUrl
string
Standaard https://api.minimax.io. Omgeving: MINIMAX_API_HOST.
model
string
Standaard speech-2.8-hd. Omgeving: MINIMAX_TTS_MODEL.
voiceId
string
Standaard English_expressive_narrator. Omgeving: MINIMAX_TTS_VOICE_ID.
speed
number
0.5..2.0. Standaard 1.0.
vol
number
(0, 10]. Standaard 1.0.
pitch
number
Geheel getal -12..12. Standaard 0. Fractionele waarden worden vóór de aanvraag afgekapt.
apiKey
string
Valt terug op OPENAI_API_KEY.
model
string
OpenAI TTS-model-id (bijv. gpt-4o-mini-tts).
voice
string
Stemnaam (bijv. alloy, cedar).
instructions
string
Expliciet OpenAI-veld instructions. Wanneer dit is ingesteld, worden persona-promptvelden niet automatisch gemapt.
baseUrl
string
Overschrijf het OpenAI TTS-eindpunt. Resolutievolgorde: configuratie → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Niet-standaardwaarden worden behandeld als OpenAI-compatibele TTS-eindpunten, dus aangepaste model- en stemnamen worden geaccepteerd.
apiKey
string
Omgeving: OPENROUTER_API_KEY. Kan models.providers.openrouter.apiKey hergebruiken.
baseUrl
string
Standaard https://openrouter.ai/api/v1. Verouderde https://openrouter.ai/v1 wordt genormaliseerd.
model
string
Standaard hexgrad/kokoro-82m. Alias: modelId.
voice
string
Standaard af_alloy. Alias: voiceId.
responseFormat
"mp3" | "pcm"
Standaard mp3.
speed
number
Provider-native snelheidsoverschrijving.
apiKey
string
Omgeving: VOLCENGINE_TTS_API_KEY of BYTEPLUS_SEED_SPEECH_API_KEY.
resourceId
string
Standaard seed-tts-1.0. Omgeving: VOLCENGINE_TTS_RESOURCE_ID. Gebruik seed-tts-2.0 wanneer je project recht heeft op TTS 2.0.
appKey
string
App-sleutelheader. Standaard aGjiRDfUWi. Omgeving: VOLCENGINE_TTS_APP_KEY.
baseUrl
string
Overschrijf het Seed Speech TTS HTTP-eindpunt. Omgeving: VOLCENGINE_TTS_BASE_URL.
voice
string
Stemtype. Standaard en_female_anna_mars_bigtts. Omgeving: VOLCENGINE_TTS_VOICE.
speedRatio
number
Provider-native snelheidsverhouding.
emotion
string
Provider-native emotietag.
appId / token / cluster
string
verouderd
Verouderde Volcengine Speech Console-velden. Omgeving: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (standaard volcano_tts).
apiKey
string
Omgeving: XAI_API_KEY.
baseUrl
string
Standaard https://api.x.ai/v1. Omgeving: XAI_BASE_URL.
voiceId
string
Standaard eve. Live stemmen: ara, eve, leo, rex, sal, una.
language
string
BCP-47-taalcode of auto. Standaard en.
responseFormat
"mp3" | "wav" | "pcm" | "mulaw" | "alaw"
Standaard mp3.
speed
number
Provider-native snelheidsoverschrijving.
apiKey
string
Omgeving: XIAOMI_API_KEY.
baseUrl
string
Standaard https://api.xiaomimimo.com/v1. Omgeving: XIAOMI_BASE_URL.
model
string
Standaard mimo-v2.5-tts. Omgeving: XIAOMI_TTS_MODEL. Ondersteunt ook mimo-v2-tts.
voice
string
Standaard mimo_default. Omgeving: XIAOMI_TTS_VOICE.
format
"mp3" | "wav"
Standaard mp3. Omgeving: XIAOMI_TTS_FORMAT.
style
string
Optionele stijlinstructie in natuurlijke taal die als gebruikersbericht wordt verzonden; wordt niet uitgesproken.

Agent-tool

De tool tts zet tekst om naar spraak en retourneert een audiobijlage voor antwoordlevering. Op Feishu, Matrix, Telegram en WhatsApp wordt de audio geleverd als spraakbericht in plaats van als bestandsbijlage. Feishu en WhatsApp kunnen niet-Opus TTS-uitvoer op dit pad transcoderen wanneer ffmpeg beschikbaar is. WhatsApp verzendt audio via Baileys als een PTT-spraaknotitie (audio met ptt: true) en verzendt zichtbare tekst apart van PTT-audio, omdat clients bijschriften op spraaknotities niet consistent weergeven. De tool accepteert optionele velden channel en timeoutMs; timeoutMs is een provider-aanvraagtime-out per aanroep in milliseconden.

Gateway-RPC

MethodeDoel
tts.statusLees huidige TTS-status en laatste poging.
tts.enableStel lokale automatische voorkeur in op always.
tts.disableStel lokale automatische voorkeur in op off.
tts.convertEenmalige tekst → audio.
tts.setProviderStel lokale providervoorkeur in.
tts.setPersonaStel lokale personavoorkeur in.
tts.providersToon geconfigureerde providers en status.

Gerelateerd