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:
{ 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
{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
{messages: {tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{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
{messages: {tts: { auto: "always", provider: "gradium", providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{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
{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)
{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
{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
{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
{messages: {tts: { auto: "always", provider: "openrouter", providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{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
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{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:
{ 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:
messages.tts- aktywne
agents.list[].tts - ustawienie kanału, gdy kanał obsługuje
channels.<channel>.tts - ustawienie konta, gdy kanał przekazuje
channels.<channel>.accounts.<id>.tts - lokalne preferencje
/ttsdla tego hosta - 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:
{ 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
{ 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)
{ 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:
- lokalna preferencja
/tts persona <id>, jeśli jest ustawiona. messages.tts.persona, jeśli jest ustawiona.- Brak persony.
Wybór dostawcy rozpoczyna się od ustawień jawnych:
- Bezpośrednie ustawienia (CLI, Gateway, Talk, dozwolone dyrektywy TTS).
- Lokalna preferencja
/tts provider <id>. provideraktywnej persony.messages.tts.provider.- Automatyczny wybór z rejestru.
Przy każdej próbie użycia dostawcy OpenClaw scala konfiguracje w następującej kolejności:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Zaufane ustawienia żądania
- 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:
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; wymagaallowProvider: true)speakerVoice/speakerVoiceId(starsze aliasy:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/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:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Zezwolenie na przełączanie dostawców przy zachowaniu możliwości konfiguracji pozostałych parametrów:
{ 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.
/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 onzapisuje lokalną preferencję TTS walways;/tts offzapisuje ją woff./tts chat on|off|defaultzapisuje ustawienie automatycznego TTS o zakresie sesji dla bieżącego czatu./tts persona <id>zapisuje lokalną preferencję persony;/tts persona offją usuwa./tts latestodczytuje 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 audiogeneruje 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.limitisummarysą przechowywane w lokalnych preferencjach, a nie w głównej konfiguracji./tts statuszawiera diagnostykę mechanizmu rezerwowego dla ostatniej próby —Fallback: <primary> -> <used>,Attempts: ...oraz szczegóły poszczególnych prób (provider:outcome(reasonCode) latency)./statuspokazuje 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 Baileysaudiozptt: trueiaudio/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ąffmpegdla 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ą
ffmpegdla 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_8000przy 8 kHz dla telefonii. - Inworld: MP3 dla zwykłych załączników audio, natywny
OGG_OPUSdla celów wiadomości głosowych oraz surowyPCMprzy 22050 Hz dla Talk/telefonii. - xAI: domyślnie MP3; synteza plików audio może używać
mp3,wav,pcm,mulawlubalawzaró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 xAIpcm,mulawialawsą surowymi danymi audio bez nagłówków. Synteza buforowana używa punktu końcowego wsadowego interfejsu REST xAI/v1/tts;textToSpeechStreamużywa natywnegowss://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ślnieaudio-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
sendVoiceakceptuje 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 regionalnezh-CN), gdy tekst odpowiedzi zawiera głównie znaki CJK.
- Dołączony transport akceptuje
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(lubagents.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
maxLengthznakó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
maxLengthznaków i syntetyzuje skrócony tekst.
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ękDokumentacja 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]].
enabledbooleanStarszy 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.
providerstringIdentyfikator 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.
personastringIdentyfikator 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.
summaryModelstringEkonomiczny model do automatycznego podsumowywania; domyślnie agents.defaults.model.primary. Akceptuje provider/model lub skonfigurowany alias modelu.
modelOverridesobjectZezwala 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: 4096Bezwzględny limit liczby znaków wejściowych TTS. /tts audio, tts.convert i tts.speak kończą się niepowodzeniem po jego przekroczeniu.
timeoutMsnumberdefault: 30000Limit 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.
prefsPathstringZastę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:
voiceSettingsobjectstability, 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:
baseUrlstringGoogle 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:
audioProfilestringspeakerNamestringOPENCLAW_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:
personaPromptstringOPENCLAW_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)
commandstringOPENCLAW_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:
cwdstringenvRecord<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: trueOPENCLAW_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:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_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:
baseUrlstringNadpisuje punkt końcowy TTS OpenAI. Kolejność rozstrzygania: konfiguracja → OPENAI_TTS_BASE_URL → https://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:
speednumberVolcengine (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:
emotionstringOPENCLAW_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
- Przewodnik OpenAI dotyczący zamiany tekstu na mowę
- Dokumentacja referencyjna OpenAI Audio API
- Zamiana tekstu na mowę za pomocą interfejsu REST usługi Azure Speech
- Dostawca Azure Speech
- Zamiana tekstu na mowę w ElevenLabs
- Uwierzytelnianie w ElevenLabs
- Gradium
- Interfejs Inworld TTS API
- Interfejs MiniMax T2A v2 API
- Interfejs HTTP API syntezy mowy Volcengine
- Synteza mowy Xiaomi MiMo
- node-edge-tts
- Formaty wyjściowe mowy firmy Microsoft
- Zamiana tekstu na mowę w xAI