Tools

Synteza mowy

OpenClaw przekształca odpowiedzi wychodzące w dźwięk za pomocą 14 dostawców syntezy mowy: natywnych wiadomości głosowych w Feishu, Matrix, Telegram i WhatsApp; załączników audio we wszystkich pozostałych usługach; oraz strumieni PCM/Ulaw dla telefonii i Talk.

TTS stanowi część Talk odpowiedzialną za generowanie mowy w trybie stt-tts (talk.speak korzysta z tej samej ścieżki syntezy). Sesje Talk realtime obsługiwane natywnie przez dostawcę syntetyzują mowę wewnątrz dostawcy czasu rzeczywistego; sesje transcription nigdy nie syntetyzują głosowej odpowiedzi asystenta.

Szybki start

  • Wybierz dostawcę

    OpenAI i ElevenLabs to najbardziej niezawodne opcje hostowane. Microsoft i lokalny CLI działają bez klucza API. Pełną listę zawiera macierz dostawców.

  • Ustaw klucz API

    Wyeksportuj zmienną środowiskową swojego dostawcy (na przykład OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft i lokalny CLI nie wymagają klucza.

  • Włącz w konfiguracji

    Ustaw messages.tts.auto: "always" i messages.tts.provider:

    json5
    {  messages: {    tts: {      auto: "always",      provider: "elevenlabs",    },  },}
  • Wypróbuj na czacie

    /tts status pokazuje bieżący stan. /tts audio Hello from OpenClaw wysyła jednorazową odpowiedź audio.

  • Obsługiwani dostawcy

    Dostawca Uwierzytelnianie Uwagi
    Azure Speech AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (także AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) Natywne wyjście notatek głosowych Ogg/Opus i telefonia.
    DeepInfra DEEPINFRA_API_KEY TTS zgodne z OpenAI. Domyślnie używa hexgrad/Kokoro-82M.
    ElevenLabs ELEVENLABS_API_KEY lub XI_API_KEY Klonowanie głosu, obsługa wielu języków, deterministyczność przez seed; strumieniowanie do odtwarzania głosu w Discord.
    Google Gemini GEMINI_API_KEY lub GOOGLE_API_KEY Wsadowe TTS interfejsu Gemini API; uwzględnia personę przez promptTemplate: "audio-profile-v1".
    Gradium GRADIUM_API_KEY Wyjście notatek głosowych i telefonii.
    Inworld INWORLD_API_KEY Strumieniowy interfejs TTS API. Natywne notatki głosowe Opus i telefonia PCM.
    Lokalny CLI brak Uruchamia skonfigurowane lokalne polecenie TTS.
    Microsoft brak Publiczne neuronowe TTS Edge przez node-edge-tts. Działanie bez gwarancji, bez SLA.
    MiniMax MINIMAX_API_KEY (lub Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) T2A v2 API. Domyślnie używa speech-2.8-hd.
    OpenAI OPENAI_API_KEY Używany także do automatycznych podsumowań; obsługuje personę instructions.
    OpenRouter OPENROUTER_API_KEY (może ponownie użyć models.providers.openrouter.apiKey) Domyślny model hexgrad/kokoro-82m.
    Volcengine VOLCENGINE_TTS_API_KEY lub BYTEPLUS_SEED_SPEECH_API_KEY (starszy AppID/token: VOLCENGINE_TTS_APPID/_TOKEN) Interfejs HTTP API BytePlus Seed Speech.
    Vydra VYDRA_API_KEY Wspólny dostawca obrazów, wideo i mowy.
    xAI XAI_API_KEY Wsadowe TTS xAI. Natywne notatki głosowe Opus nie są obsługiwane.
    Xiaomi MiMo XIAOMI_API_KEY TTS MiMo przez uzupełnienia czatu Xiaomi.

    Jeśli skonfigurowano wielu dostawców, najpierw używany jest wybrany dostawca, a pozostali służą jako opcje awaryjne. Automatyczne podsumowania używają summaryModel (lub agents.defaults.model.primary), dlatego ten dostawca również musi być uwierzytelniony, jeśli podsumowania pozostają włączone.

    Konfiguracja

    Konfiguracja TTS znajduje się w sekcji messages.tts w pliku ~/.openclaw/openclaw.json. Wybierz ustawienie wstępne i dostosuj blok dostawcy. Pokazane poniżej pola speakerVoice/speakerVoiceId są kanoniczne; własne nazwy pól voice/voiceId/ voiceName każdego dostawcy nadal działają jako starsze aliasy.

    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",      // Opcjonalne monity stylu w języku naturalnym:      // audioProfile: "Mów spokojnym tonem prowadzącego podcast.",      // 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,    },  },},},}

    Lokalny 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 (bez klucza)

    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",    },  },},},}

    W przypadku Xiaomi mimo-v2.5-tts-voicedesign pomiń speakerVoice i ustaw style na monit projektowania głosu. OpenClaw wysyła ten monit jako wiadomość TTS user i nie wysyła audio.voice dla modelu voicedesign.

    Ustawienia głosu dla poszczególnych agentów

    Użyj agents.list[].tts, gdy jeden agent ma korzystać z innego dostawcy, głosu, modelu, persony lub trybu automatycznego TTS. Blok agenta jest głęboko scalany z messages.tts, dzięki czemu dane uwierzytelniające dostawcy mogą pozostać w globalnej konfiguracji dostawcy:

    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" },          },        },      },    ],  },}

    Aby przypisać personę do konkretnego agenta, ustaw agents.list[].tts.persona obok konfiguracji dostawcy — zastępuje ona globalne messages.tts.persona tylko dla tego agenta.

    Kolejność pierwszeństwa dla automatycznych odpowiedzi, /tts audio, /tts status oraz narzędzia agenta tts:

    1. messages.tts
    2. aktywne agents.list[].tts
    3. ustawienie kanału, gdy kanał obsługuje channels.<channel>.tts
    4. ustawienie konta, gdy kanał przekazuje channels.<channel>.accounts.<id>.tts
    5. lokalne preferencje /tts dla tego hosta
    6. dyrektywy śródwierszowe [[tts:...]], gdy włączone są dyrektywy sterowane przez model

    Ustawienia kanału i konta mają ten sam kształt co messages.tts i są głęboko scalane z wcześniejszymi warstwami, dzięki czemu współdzielone dane uwierzytelniające dostawcy mogą pozostać w messages.tts, podczas gdy kanał lub konto bota zmienia tylko głos mówcy, model, personę lub tryb automatyczny:

    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" },            },          },        },      },    },  },}

    Persony

    Persona to stabilna tożsamość głosowa, którą można deterministycznie stosować u różnych dostawców. Może preferować jednego dostawcę, definiować niezależną od dostawcy intencję promptu oraz zawierać powiązania specyficzne dla dostawcy dotyczące głosów, modeli, szablonów promptów, ziaren i ustawień głosu.

    Minimalna persona

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

    Pełna persona (prompt niezależny od dostawcy)

    json5
    {  messages: {    tts: {      auto: "always",      persona: "alfred",      personas: {        alfred: {          label: "Alfred",          description: "Powściągliwy, serdeczny brytyjski kamerdyner-narrator.",          provider: "google",          fallbackPolicy: "preserve-persona",          prompt: {            profile: "Błyskotliwy brytyjski kamerdyner. Powściągliwy, dowcipny, serdeczny, czarujący, emocjonalnie ekspresyjny, nigdy bezbarwny.",            scene: "Cichy gabinet późną nocą. Narracja z bliska dla zaufanego operatora.",            sampleContext: "Mówca odpowiada na prywatną prośbę techniczną ze zwięzłą pewnością siebie i subtelnym ciepłem.",            style: "Wyrafinowany, dyskretny, lekko rozbawiony.",            accent: "Brytyjski angielski.",            pacing: "Miarkowane tempo z krótkimi dramatycznymi pauzami.",            constraints: ["Nie odczytuj na głos wartości konfiguracyjnych.", "Nie wyjaśniaj persony."],          },          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,              },            },          },        },      },    },  },}

    Rozpoznawanie persony

    Aktywna persona jest wybierana deterministycznie:

    1. lokalna preferencja /tts persona <id>, jeśli jest ustawiona.
    2. messages.tts.persona, jeśli jest ustawiona.
    3. Brak persony.

    Wybór dostawcy rozpoczyna się od ustawień jawnych:

    1. Bezpośrednie ustawienia (CLI, Gateway, Talk, dozwolone dyrektywy TTS).
    2. Lokalna preferencja /tts provider <id>.
    3. provider aktywnej persony.
    4. messages.tts.provider.
    5. Automatyczny wybór z rejestru.

    Przy każdej próbie użycia dostawcy OpenClaw scala konfiguracje w następującej kolejności:

    1. messages.tts.providers.<id>
    2. messages.tts.personas.<persona>.providers.<id>
    3. Zaufane ustawienia żądania
    4. Dozwolone ustawienia z dyrektywy TTS wyemitowanej przez model

    Jak dostawcy używają promptów persony

    Pola promptu persony (profile, scene, sampleContext, style, accent, pacing, constraints) są niezależne od dostawcy. Każdy dostawca decyduje, jak ich używać:

    Google Gemini

    Umieszcza pola promptu persony w strukturze promptu TTS Gemini tylko wtedy, gdy efektywna konfiguracja dostawcy Google ustawia promptTemplate: "audio-profile-v1" lub personaPrompt. Starsze pola audioProfile i speakerName są nadal dodawane na początku jako tekst promptu specyficzny dla Google. Śródwierszowe znaczniki audio, takie jak [whispers] lub [laughs], wewnątrz bloku [[tts:text]] są zachowywane w transkrypcji Gemini; OpenClaw nie generuje tych znaczników.

    OpenAI

    Mapuje pola promptu persony na pole żądania instructions tylko wtedy, gdy nie skonfigurowano jawnego instructions OpenAI. Jawne instructions ma zawsze pierwszeństwo.

    Inni dostawcy

    Używają wyłącznie powiązań persony specyficznych dla dostawcy w personas.<id>.providers.<provider>. Pola promptu persony są ignorowane, chyba że dostawca implementuje własne mapowanie promptu persony.

    Zasady mechanizmu rezerwowego

    fallbackPolicy steruje zachowaniem, gdy persona nie ma powiązania z wypróbowywanym dostawcą:

    Zasada Zachowanie
    preserve-persona Domyślnie. Pola promptu niezależne od dostawcy pozostają dostępne; dostawca może ich użyć lub je zignorować.
    provider-defaults Persona jest pomijana podczas przygotowywania promptu dla tej próby; dostawca używa swoich neutralnych ustawień domyślnych, a przełączanie na innych dostawców jest kontynuowane.
    fail Pomija próbę użycia tego dostawcy z reasonCode: "not_configured" i personaBinding: "missing". Dostawcy rezerwowi są nadal wypróbowywani.

    Całe żądanie TTS kończy się niepowodzeniem tylko wtedy, gdy każdy wypróbowywany dostawca został pominięty lub zawiódł.

    Wybór dostawcy sesji Talk ma zakres sesji. Klient Talk powinien wybierać identyfikatory dostawców, modeli, głosów i ustawienia regionalne z talk.catalog oraz przekazywać je za pośrednictwem żądania sesji Talk lub przekazania. Otwarcie sesji głosowej nie powinno modyfikować messages.tts ani globalnych domyślnych ustawień dostawcy Talk.

    Dyrektywy sterowane przez model

    Domyślnie asystent może emitować dyrektywy [[tts:...]], aby zastąpić głos, model lub szybkość dla pojedynczej odpowiedzi, wraz z opcjonalnym blokiem [[tts:text]]...[[/tts:text]] na ekspresyjne wskazówki, które powinny występować wyłącznie w dźwięku:

    text
    Proszę. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](śmieje się) Przeczytaj piosenkę jeszcze raz.[[/tts:text]]

    Gdy messages.tts.auto ma wartość "tagged", dyrektywy są wymagane do uruchomienia dźwięku. Strumieniowe dostarczanie bloków usuwa dyrektywy z widocznego tekstu, zanim kanał je zobaczy, nawet gdy są podzielone między sąsiednie bloki.

    provider=... jest ignorowane, chyba że modelOverrides.allowProvider: true. Gdy odpowiedź deklaruje provider=..., pozostałe klucze w tej dyrektywie są analizowane wyłącznie przez tego dostawcę; nieobsługiwane klucze są usuwane i zgłaszane jako ostrzeżenia dyrektyw TTS.

    Dostępne klucze dyrektyw:

    • provider (zarejestrowany identyfikator dostawcy; wymaga allowProvider: true)
    • speakerVoice / speakerVoiceId (starsze aliasy: voice, voiceName, voice_name, google_voice, voiceId)
    • model / google_model
    • stability, similarityBoost, style, speed, useSpeakerBoost
    • vol / volume (głośność MiniMax, (0, 10])
    • pitch (całkowita wysokość dźwięku MiniMax, od −12 do 12; wartości ułamkowe są obcinane)
    • emotion (znacznik emocji Volcengine)
    • applyTextNormalization (auto|on|off)
    • languageCode (ISO 639-1)
    • seed

    Całkowite wyłączenie ustawień modelu:

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

    Zezwolenie na przełączanie dostawców przy zachowaniu możliwości konfiguracji pozostałych parametrów:

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

    Polecenia ukośnikowe

    Pojedyncze polecenie /tts. W Discord OpenClaw rejestruje również /voice, ponieważ /tts jest wbudowanym poleceniem Discord — tekstowe /tts ... nadal działa.

    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>

    Uwagi dotyczące zachowania:

    • /tts on zapisuje lokalną preferencję TTS w always; /tts off zapisuje ją w off.
    • /tts chat on|off|default zapisuje ustawienie automatycznego TTS o zakresie sesji dla bieżącego czatu.
    • /tts persona <id> zapisuje lokalną preferencję persony; /tts persona off ją usuwa.
    • /tts latest odczytuje najnowszą odpowiedź asystenta z transkrypcji bieżącej sesji i jednorazowo wysyła ją jako dźwięk. Wpis sesji przechowuje wyłącznie skrót tej odpowiedzi, aby zapobiec wysyłaniu zduplikowanych wiadomości głosowych.
    • /tts audio generuje jednorazową odpowiedź dźwiękową (nie włącza TTS).
    • /tts limit <chars> akceptuje wartości 100–4096 (4096 to maksymalna długość podpisu/wiadomości Telegram); wartości spoza tego zakresu są odrzucane.
    • limit i summary są przechowywane w lokalnych preferencjach, a nie w głównej konfiguracji.
    • /tts status zawiera diagnostykę mechanizmu rezerwowego dla ostatniej próby — Fallback: <primary> -> <used>, Attempts: ... oraz szczegóły poszczególnych prób (provider:outcome(reasonCode) latency).
    • /status pokazuje aktywny tryb TTS oraz skonfigurowanego dostawcę, model, głos i oczyszczone metadane niestandardowego punktu końcowego, gdy TTS jest włączony.

    Preferencje poszczególnych użytkowników

    Polecenia ukośnikowe zapisują lokalne ustawienia w prefsPath. Wartością domyślną jest ~/.openclaw/settings/tts.json; można ją zastąpić zmienną środowiskową OPENCLAW_TTS_PREFS lub messages.tts.prefsPath.

    Przechowywane pole Efekt
    auto Lokalne nadpisanie automatycznego TTS (always, off, …)
    provider Lokalne nadpisanie głównego dostawcy
    persona Lokalne nadpisanie persony
    maxLength Próg podsumowania/obcięcia (domyślnie 1500 znaków, zakres /tts limit 100–4096)
    summarize Przełącznik podsumowania (domyślnie true)

    Te ustawienia zastępują efektywną konfigurację z messages.tts oraz aktywnego bloku agents.list[].tts dla tego hosta.

    Formaty wyjściowe

    Dostarczanie głosu TTS zależy od możliwości kanału. Pluginy kanałów deklarują, czy TTS w stylu wiadomości głosowej powinien zażądać od dostawców natywnego celu voice-note, czy zachować standardową syntezę audio-file, a także czy kanał transkoduje nienatywny format wyjściowy przed wysłaniem.

    Cel Format
    Feishu / Matrix / Telegram / WhatsApp Odpowiedzi w formie wiadomości głosowych preferują Opus (opus_48000_64 z ElevenLabs, opus z OpenAI). 48 kHz / 64 kbps zapewnia równowagę między wyrazistością a rozmiarem.
    Inne kanały MP3 (mp3_44100_128 z ElevenLabs, mp3 z OpenAI). 44,1 kHz / 128 kbps to domyślna równowaga dla mowy.
    Talk / telefonia Natywny dla dostawcy format PCM (Inworld 22050 Hz, Google 24 kHz) lub ulaw_8000 z Gradium na potrzeby telefonii.

    Uwagi dotyczące poszczególnych dostawców:

    • Transkodowanie w Feishu / WhatsApp: gdy odpowiedź w formie wiadomości głosowej ma format MP3/WebM/WAV/M4A lub inny prawdopodobny format pliku audio, Plugin kanału przed wysłaniem natywnej wiadomości głosowej transkoduje ją do formatu Ogg/Opus 48 kHz za pomocą ffmpeg (libopus, 64 kbps). WhatsApp wysyła wynik poprzez ładunek Baileys audio z ptt: true i audio/ogg; codecs=opus. W przypadku niepowodzenia transkodowania: Feishu przechwytuje błąd i wysyła oryginalny plik jako zwykły załącznik; WhatsApp nie ma mechanizmu rezerwowego, więc samo wysyłanie kończy się niepowodzeniem zamiast opublikowania niezgodnego ładunku PTT.
    • MiniMax: MP3 (model speech-2.8-hd, częstotliwość próbkowania 32 kHz) dla zwykłych załączników audio; transkodowany do Opus 48 kHz za pomocą ffmpeg dla celów wiadomości głosowych deklarowanych przez kanał.
    • Xiaomi MiMo: domyślnie MP3 lub WAV, jeśli tak skonfigurowano; transkodowany do Opus 48 kHz za pomocą ffmpeg dla celów wiadomości głosowych deklarowanych przez kanał.
    • Lokalny CLI: używa skonfigurowanego outputFormat. Cele wiadomości głosowych są konwertowane do Ogg/Opus, a format wyjściowy dla telefonii jest konwertowany do surowego, monofonicznego PCM 16 kHz za pomocą ffmpeg.
    • Google Gemini: zwraca surowy PCM 24 kHz. OpenClaw opakowuje go jako WAV dla załączników audio, transkoduje do Opus 48 kHz dla celów wiadomości głosowych i zwraca PCM bezpośrednio dla Talk/telefonii.
    • Gradium: WAV dla załączników audio, Opus dla celów wiadomości głosowych oraz ulaw_8000 przy 8 kHz dla telefonii.
    • Inworld: MP3 dla zwykłych załączników audio, natywny OGG_OPUS dla celów wiadomości głosowych oraz surowy PCM przy 22050 Hz dla Talk/telefonii.
    • xAI: domyślnie MP3; synteza plików audio może używać mp3, wav, pcm, mulaw lub alaw zarówno dla buforowanego, jak i strumieniowego formatu wyjściowego. Cele wiadomości głosowych używają MP3 w trybie strumieniowym oraz jako buforowanego rozwiązania rezerwowego, ponieważ formaty wyjściowe xAI pcm, mulaw i alaw są surowymi danymi audio bez nagłówków. Synteza buforowana używa punktu końcowego wsadowego interfejsu REST xAI /v1/tts; textToSpeechStream używa natywnego wss://api.x.ai/v1/tts. Nie jest to kontrakt głosowy czasu rzeczywistego. Natywny format wiadomości głosowych Opus nie jest obsługiwany.
    • Microsoft: używa microsoft.outputFormat (domyślnie audio-24khz-48kbitrate-mono-mp3).
      • Dołączony transport akceptuje outputFormat, ale nie wszystkie formaty są dostępne w usłudze.
      • Wartości formatu wyjściowego odpowiadają formatom wyjściowym Microsoft Speech (w tym Ogg/WebM Opus).
      • Telegram sendVoice akceptuje OGG/MP3/M4A; należy użyć OpenAI/ElevenLabs, jeśli wymagane są wiadomości głosowe w gwarantowanym formacie Opus.
      • Jeśli skonfigurowany format wyjściowy Microsoft zawiedzie, OpenClaw ponawia próbę z użyciem MP3.
      • Jeśli nie ustawiono jawnego nadpisania głosu i używany jest domyślny głos angielski, OpenClaw automatycznie przełącza się na chiński głos neuronowy (zh-CN-XiaoxiaoNeural, ustawienia regionalne zh-CN), gdy tekst odpowiedzi zawiera głównie znaki CJK.

    Formaty wyjściowe OpenAI i ElevenLabs są stałe dla każdego kanału, zgodnie z powyższą tabelą.

    Działanie automatycznego TTS

    Gdy włączona jest opcja messages.tts.auto, OpenClaw:

    • Pomija TTS, jeśli odpowiedź zawiera już ustrukturyzowane multimedia.
    • Pomija bardzo krótkie odpowiedzi (poniżej 10 znaków).
    • Podsumowuje długie odpowiedzi, gdy podsumowania są włączone, używając summaryModel (lub agents.defaults.model.primary).
    • Dołącza wygenerowany dźwięk do odpowiedzi.
    • W trybie mode: "final" nadal wysyła wyłącznie dźwięk TTS dla strumieniowanych odpowiedzi końcowych po zakończeniu strumienia tekstowego; wygenerowane multimedia przechodzą tę samą normalizację multimediów kanału co zwykłe załączniki odpowiedzi.

    Jeśli odpowiedź przekracza maxLength, OpenClaw nigdy nie pomija całkowicie dźwięku:

    • Podsumowanie włączone (domyślnie) i dostępny jest model podsumowujący: podsumowuje tekst do około maxLength znaków, a następnie syntetyzuje podsumowanie.
    • Podsumowanie wyłączone, podsumowanie kończy się niepowodzeniem lub nie jest dostępny klucz API dla modelu podsumowującego: skraca tekst do maxLength znaków i syntetyzuje skrócony tekst.
    text
    Odpowiedź -> TTS włączone?  nie -> wyślij tekst  tak -> zawiera multimedia / jest krótka?          tak -> wyślij tekst          nie -> długość > limit?                   nie -> TTS -> dołącz dźwięk                   tak -> podsumowanie włączone i dostępne?                            nie -> skróć -> TTS -> dołącz dźwięk                            tak -> podsumuj -> TTS -> dołącz dźwięk

    Dokumentacja pól

    Najwyższy poziom messages.tts.*
    auto"off" | "always" | "inbound" | "tagged"

    Tryb automatycznego TTS. inbound wysyła dźwięk tylko po przychodzącej wiadomości głosowej; tagged wysyła dźwięk tylko wtedy, gdy odpowiedź zawiera dyrektywy [[tts:...]] lub blok [[tts:text]].

    enabledboolean

    Starszy przełącznik. openclaw doctor --fix migruje go do auto.

    mode"final" | "all"default: final

    "all" uwzględnia odpowiedzi narzędzi/bloków oprócz odpowiedzi końcowych.

    providerstring

    Identyfikator dostawcy syntezy mowy. Jeśli nie jest ustawiony, OpenClaw używa pierwszego skonfigurowanego dostawcy zgodnie z kolejnością automatycznego wyboru w rejestrze. Starsza wartość provider: "edge" jest przepisywana na "microsoft" przez openclaw doctor --fix.

    personastring

    Identyfikator aktywnej persony z personas. Normalizowany do małych liter.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA " type="object"> Stała tożsamość głosowa. Pola: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Zobacz Persony.

    summaryModelstring

    Ekonomiczny model do automatycznego podsumowywania; domyślnie agents.defaults.model.primary. Akceptuje provider/model lub skonfigurowany alias modelu.

    modelOverridesobject

    Zezwala modelowi na generowanie dyrektyw TTS. enabled ma domyślnie wartość true; allowProvider ma domyślnie wartość false.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ " type="object"> Ustawienia należące do dostawcy, indeksowane według identyfikatora dostawcy syntezy mowy. Starsze bezpośrednie bloki (messages.tts.openai, .elevenlabs, .microsoft, .edge) są przepisywane przez openclaw doctor --fix; należy zatwierdzać tylko messages.tts.providers.<id>.

    maxTextLengthnumberdefault: 4096

    Bezwzględny limit liczby znaków wejściowych TTS. /tts audio, tts.convert i tts.speak kończą się niepowodzeniem po jego przekroczeniu.

    timeoutMsnumberdefault: 30000

    Limit czasu żądania w milisekundach. Ustawiona wartość timeoutMs dla pojedynczego wywołania (narzędzie agenta, gateway) ma pierwszeństwo; w przeciwnym razie jawnie skonfigurowana wartość messages.tts.timeoutMs ma pierwszeństwo przed dowolną wartością domyślną dostawcy zdefiniowaną przez plugin.

    prefsPathstring

    Zastępuje lokalną ścieżkę do pliku JSON preferencji (dostawca/limit/podsumowanie). Domyślnie ~/.openclaw/settings/tts.json.

    Azure Speech

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Zmienna środowiskowa: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY lub SPEECH_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg Region Azure Speech (np. eastus). Zmienna środowiskowa: AZURE_SPEECH_REGION lub SPEECH_REGION. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci Opcjonalne zastąpienie punktu końcowego Azure Speech (alias baseUrl). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg ShortName głosu Azure. Domyślnie en-US-JennyNeural. Starszy alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI Kod języka SSML. Domyślnie en-US. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Wartość X-Microsoft-OutputFormat usługi Azure dla standardowego dźwięku. Domyślnie audio-24khz-48kbitrate-mono-mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Wartość X-Microsoft-OutputFormat usługi Azure dla wyjściowej notatki głosowej. Domyślnie ogg-24khz-16bit-mono-opus. OPENCLAW_DOCS_MARKER:paramClose:

    ElevenLabs

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg W razie braku używa ELEVENLABS_API_KEY lub XI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Identyfikator modelu. Domyślnie eleven_multilingual_v2. Starsze identyfikatory eleven_turbo_v2_5/eleven_turbo_v2 są normalizowane do odpowiadającego modelu flash. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Identyfikator głosu ElevenLabs. Domyślnie pMsXgVXv3BLzUgSXRplE. Starszy alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    voiceSettingsobject

    stability, similarityBoost, style (każde 0..1, wartości domyślne 0.5/0.75/0), useSpeakerBoost (true|false, domyślnie true), speed (0.5..2.0, domyślnie 1.0).

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg Dwuliterowy kod ISO 639-1 (np. en, de). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI Liczba całkowita 0..4294967295 zapewniająca deterministyczność w miarę możliwości. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring
    Google Gemini

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Wartość zastępcza to GEMINI_API_KEY / GOOGLE_API_KEY. W przypadku pominięcia TTS może ponownie użyć models.providers.google.apiKey przed zastosowaniem wartości zastępczej ze środowiska. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Model TTS Gemini. Domyślnie gemini-3.1-flash-tts-preview. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nazwa gotowego głosu Gemini. Domyślnie Kore. Starsze aliasy: voiceName, voice. OPENCLAW_DOCS_MARKER:paramClose:

    audioProfilestring
    speakerNamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn Ustaw na audio-profile-v1, aby opakować aktywne pola promptu persony w deterministyczną strukturę promptu TTS Gemini. OPENCLAW_DOCS_MARKER:paramClose:

    personaPromptstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Akceptowane jest tylko https://generativelanguage.googleapis.com. OPENCLAW_DOCS_MARKER:paramClose:

    Gradium

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: GRADIUM_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Adres URL HTTPS API Gradium na api.gradium.ai. Domyślnie https://api.gradium.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Domyślnie Emma (YTpq7expH9539ERJ). Starszy alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    Inworld

    Główny Inworld

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: INWORLD_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Domyślnie https://api.inworld.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI Domyślnie inworld-tts-1.5-max. Także: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Domyślnie Sarah. Starszy alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi Temperatura próbkowania 0..2 (z wyłączeniem 0). OPENCLAW_DOCS_MARKER:paramClose:

    Lokalny CLI (tts-local-cli)
    commandstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg Argumenty polecenia. Obsługuje symbole zastępcze {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic Oczekiwany format wyjściowy CLI. Domyślnie mp3 dla załączników audio. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Limit czasu polecenia w milisekundach. Domyślnie 120000. OPENCLAW_DOCS_MARKER:paramClose:

    cwdstring
    envRecord<string, string��-�өr:'jYޝ�i�Ƨ���v�

    Standardowe wyjście polecenia oraz wygenerowany lub przekonwertowany dźwięk są ograniczone do 50 MiB. Diagnostyczne standardowe wyjście błędów jest ograniczone do 1 MiB. OpenClaw kończy polecenie i zgłasza niepowodzenie syntezy po przekroczeniu któregokolwiek limitu.

    Microsoft (bez klucza API)
    enabledbooleandefault: true

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nazwa głosu neuronowego Microsoft (np. en-US-MichelleNeural). Starszy alias: voice. Jeśli używany jest domyślny głos angielski, a tekst odpowiedzi jest zdominowany przez znaki CJK, OpenClaw automatycznie przełącza się na zh-CN-XiaoxiaoNeural. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI Kod języka (np. en-US). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Format wyjściowy Microsoft. Domyślnie audio-24khz-48kbitrate-mono-mp3. Nie wszystkie formaty są obsługiwane przez dołączony transport oparty na Edge. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg Ciągi procentowe (np. +10%, -5%). OPENCLAW_DOCS_MARKER:paramClose:

    saveSubtitlesboolean
    proxystring
    timeoutMsnumber

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk Starszy alias. Uruchom openclaw doctor --fix, aby przepisać utrwaloną konfigurację na providers.microsoft. OPENCLAW_DOCS_MARKER:paramClose:

    MiniMax

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Wartość zastępcza to MINIMAX_API_KEY. Uwierzytelnianie Token Plan za pomocą MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY lub MINIMAX_CODING_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Domyślnie https://api.minimax.io. Środowisko: MINIMAX_API_HOST. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Domyślnie speech-2.8-hd. Środowisko: MINIMAX_TTS_MODEL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Domyślnie English_expressive_narrator. Środowisko: MINIMAX_TTS_VOICE_ID. Starszy alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi 0.5..2.0. Domyślnie 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg (0, 10]. Domyślnie 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi Liczba całkowita -12..12. Domyślnie 0. Wartości ułamkowe są obcinane przed wysłaniem żądania. OPENCLAW_DOCS_MARKER:paramClose:

    OpenAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Wartość zastępcza to OPENAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Identyfikator modelu TTS OpenAI. Domyślnie gpt-4o-mini-tts. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nazwa głosu (np. alloy, cedar). Domyślnie coral. Starszy alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg Jawne pole OpenAI instructions. Po jego ustawieniu pola promptu persony nie są mapowane automatycznie. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24 ">Dodatkowe pola JSON scalane z treściami żądań /audio/speech po wygenerowaniu pól TTS OpenAI. Należy ich używać w przypadku punktów końcowych zgodnych z OpenAI, takich jak Kokoro, które wymagają kluczy specyficznych dla dostawcy, np. lang; niebezpieczne klucze prototypu są ignorowane. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring

    Nadpisuje punkt końcowy TTS OpenAI. Kolejność rozstrzygania: konfiguracja → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Wartości inne niż domyślne są traktowane jako punkty końcowe TTS zgodne z OpenAI, dlatego akceptowane są niestandardowe nazwy modeli i głosów, a speed traci kontrolę zakresu 0.25..4.0.

    OpenRouter

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: OPENROUTER_API_KEY. Może ponownie użyć models.providers.openrouter.apiKey. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Domyślnie https://openrouter.ai/api/v1. Starsze https://openrouter.ai/v1 jest normalizowane. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Domyślnie hexgrad/kokoro-82m. Alias: modelId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Domyślnie af_alloy. Starsze aliasy: voice, voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw Domyślnie mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Volcengine (BytePlus Seed Speech)

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: VOLCENGINE_TTS_API_KEY lub BYTEPLUS_SEED_SPEECH_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI Domyślnie seed-tts-1.0. Środowisko: VOLCENGINE_TTS_RESOURCE_ID. Użyj seed-tts-2.0, jeśli projekt ma uprawnienie do TTS 2.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg Nagłówek klucza aplikacji. Domyślnie aGjiRDfUWi. Środowisko: VOLCENGINE_TTS_APP_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Nadpisuje punkt końcowy HTTP TTS Seed Speech. Środowisko: VOLCENGINE_TTS_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Typ głosu. Domyślnie en_female_anna_mars_bigtts. Środowisko: VOLCENGINE_TTS_VOICE. Starszy alias: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI Natywny dla dostawcy współczynnik szybkości, 0.2..3. OPENCLAW_DOCS_MARKER:paramClose:

    emotionstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQi Starsze pola Volcengine Speech Console. Środowisko: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (domyślnie volcano_tts). OPENCLAW_DOCS_MARKER:paramClose:

    xAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: XAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Domyślnie https://api.x.ai/v1. Środowisko: XAI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Domyślnie eve. Przy uwierzytelnieniu openclaw infer tts voices --provider xai pobiera bieżący wbudowany katalog; bez uwierzytelnienia wyświetla zapasowe opcje offline: ara, eve, leo, rex i sal. Identyfikatory niestandardowych głosów konta są przekazywane dalej, nawet jeśli nie występują na wbudowanej liście. Starszy alias: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci Kod języka BCP-47 lub auto. Domyślnie en. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw Domyślnie mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi Natywne dla dostawcy nadpisanie szybkości, 0.7..1.5. OPENCLAW_DOCS_MARKER:paramClose:

    Xiaomi MiMo

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Środowisko: XIAOMI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Domyślnie https://api.xiaomimimo.com/v1. Środowisko: XIAOMI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Domyślnie mimo-v2.5-tts. Środowisko: XIAOMI_TTS_MODEL. Obsługuje również mimo-v2-tts i mimo-v2.5-tts-voicedesign. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Domyślnie mimo_default dla modeli z gotowymi głosami. Środowisko: XIAOMI_TTS_VOICE. Starszy alias: voice. Nie jest wysyłane dla mimo-v2.5-tts-voicedesign. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic Domyślnie mp3. Środowisko: XIAOMI_TTS_FORMAT. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci Opcjonalna instrukcja stylu w języku naturalnym, wysyłana jako wiadomość użytkownika, lecz niewypowiadana. Dla mimo-v2.5-tts-voicedesign jest to prompt projektowania głosu; OpenClaw podaje wartość domyślną w przypadku pominięcia. OPENCLAW_DOCS_MARKER:paramClose:

    Narzędzie agenta

    Narzędzie tts konwertuje tekst na mowę i zwraca załącznik audio do dostarczenia odpowiedzi. W Feishu, Matrix, Telegram i WhatsApp dźwięk jest dostarczany jako wiadomość głosowa zamiast załącznika plikowego. Feishu i WhatsApp mogą transkodować na tej ścieżce dane wyjściowe TTS inne niż Opus, gdy dostępne jest ffmpeg.

    WhatsApp wysyła dźwięk przez Baileys jako notatkę głosową PTT (audio z ptt: true) i wysyła widoczny tekst oddzielnie od dźwięku PTT, ponieważ klienty nie zawsze wyświetlają podpisy notatek głosowych.

    Narzędzie akceptuje opcjonalne pola channel i timeoutMs; timeoutMs to limit czasu żądania dostawcy dla pojedynczego wywołania, podany w milisekundach. Wartości dla poszczególnych wywołań nadpisują messages.tts.timeoutMs; skonfigurowane limity czasu TTS nadpisują każdą wartość domyślną dostawcy określoną przez plugin.

    RPC Gateway

    Metoda Przeznaczenie
    tts.status Odczytuje bieżący stan TTS i ostatnią próbę.
    tts.enable Ustawia lokalną preferencję automatyczną na always.
    tts.disable Ustawia lokalną preferencję automatyczną na off.
    tts.convert Jednorazowa konwersja tekstu → dźwięk.
    tts.setProvider Ustawia lokalną preferencję dostawcy.
    tts.personas Wyświetla skonfigurowane persony i aktywną personę.
    tts.setPersona Ustawia lokalną preferencję persony.
    tts.providers Wyświetla skonfigurowanych dostawców i ich stan.

    Łącza do usług

    Powiązane

    Was this useful?
    On this page

    On this page