Tools
Zamiana tekstu na mowę
OpenClaw może konwertować odpowiedzi wychodzące na dźwięk u 14 dostawców mowy oraz dostarczać natywne wiadomości głosowe w Feishu, Matrix, Telegram i WhatsApp, załączniki audio wszędzie indziej oraz strumienie PCM/Ulaw dla telefonii i Talk.
TTS to wyjściowa połowa mowy w trybie stt-tts Talk. Sesje Talk realtime
natywne dla dostawcy syntetyzują mowę wewnątrz dostawcy czasu rzeczywistego
zamiast wywoływać tę ścieżkę TTS, natomiast sesje transcription nie syntetyzują
głosowej odpowiedzi asystenta.
Szybki start
Pick a provider
OpenAI i ElevenLabs to najbardziej niezawodne opcje hostowane. Microsoft i Local CLI działają bez klucza API. Pełną listę znajdziesz w macierzy dostawców.
Set the API key
Wyeksportuj zmienną środowiskową dla swojego dostawcy, na przykład OPENAI_API_KEY,
ELEVENLABS_API_KEY. Microsoft i Local CLI nie wymagają klucza.
Enable in config
Ustaw messages.tts.auto: "always" oraz messages.tts.provider:
{ messages: { tts: { auto: "always", provider: "elevenlabs", }, },}Try it in chat
/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 hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY lub XI_API_KEY |
Klonowanie głosu, wielojęzyczność, deterministyczność przez seed; strumieniowane do odtwarzania głosu w Discord. |
| Google Gemini | GEMINI_API_KEY lub GOOGLE_API_KEY |
Wsadowe TTS Gemini API; świadome persony przez promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Wyjście notatek głosowych i telefonii. |
| Inworld | INWORLD_API_KEY |
Strumieniowe API TTS. Natywne notatki głosowe Opus i telefonia PCM. |
| Local CLI | brak | Uruchamia skonfigurowane lokalne polecenie TTS. |
| Microsoft | brak | Publiczne neuronowe TTS Edge przez node-edge-tts. Najlepsze staranie, bez SLA. |
| MiniMax | MINIMAX_API_KEY (lub plan tokenowy: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. Domyślnie speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
Używane także do automatycznych podsumowań; obsługuje personę instructions. |
| OpenRouter | OPENROUTER_API_KEY (może ponownie użyć models.providers.openrouter.apiKey) |
Model domyślny hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY lub BYTEPLUS_SEED_SPEECH_API_KEY (starszy AppID/token: VOLCENGINE_TTS_APPID/_TOKEN) |
HTTP API BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Wspólny dostawca obrazów, wideo i mowy. |
| xAI | XAI_API_KEY |
Wsadowe TTS xAI. Natywna notatka głosowa Opus nie jest obsługiwana. |
| Xiaomi MiMo | XIAOMI_API_KEY |
MiMo TTS przez uzupełnienia czatu Xiaomi. |
Jeśli skonfigurowano wielu dostawców, wybrany dostawca jest używany jako pierwszy,
a pozostali są opcjami zapasowymi. Automatyczne podsumowania używają summaryModel
(lub agents.defaults.model.primary), więc ten dostawca również musi być
uwierzytelniony, jeśli pozostawisz podsumowania włączone.
Konfiguracja
Konfiguracja TTS znajduje się w messages.tts w ~/.openclaw/openclaw.json.
Wybierz preset i dostosuj blok dostawcy:
Azure Speech
{messages: {tts: { auto: "always", provider: "azure-speech", providers: { "azure-speech": { apiKey: "${AZURE_SPEECH_KEY}", region: "eastus", voice: "en-US-JennyNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus", }, },},},}ElevenLabs
{messages: {tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", voiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{messages: {tts: { auto: "always", provider: "google", providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", voiceName: "Kore", // Optional natural-language style prompts: // audioProfile: "Speak in a calm, podcast-host tone.", // speakerName: "Alex", }, },},},}Gradium
{messages: {tts: { auto: "always", provider: "gradium", providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", voiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{messages: {tts: { auto: "always", provider: "inworld", providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", voiceId: "Sarah", temperature: 0.7, }, },},},}Local CLI
{messages: {tts: { auto: "always", provider: "tts-local-cli", providers: { "tts-local-cli": { command: "say", args: ["-o", "{{OutputPath}}", "{{Text}}"], outputFormat: "wav", timeoutMs: 120000, }, },},},}Microsoft (no key)
{messages: {tts: { auto: "always", provider: "microsoft", providers: { microsoft: { enabled: true, voice: "en-US-MichelleNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", rate: "+0%", pitch: "+0%", }, },},},}MiniMax
{messages: {tts: { auto: "always", provider: "minimax", providers: { minimax: { apiKey: "${MINIMAX_API_KEY}", model: "speech-2.8-hd", voiceId: "English_expressive_narrator", speed: 1.0, vol: 1.0, pitch: 0, }, },},},}OpenAI + ElevenLabs
{messages: {tts: { auto: "always", provider: "openai", summaryModel: "openai/gpt-4.1-mini", modelOverrides: { enabled: true }, providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts", voice: "alloy", }, elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", voiceId: "EXAVITQu4vr4xnSDxMaL", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 }, applyTextNormalization: "auto", languageCode: "en", }, },},},}OpenRouter
{messages: {tts: { auto: "always", provider: "openrouter", providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", voice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{messages: {tts: { auto: "always", provider: "volcengine", providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", voice: "en_female_anna_mars_bigtts", }, },},},}xAI
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", voiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{messages: {tts: { auto: "always", provider: "xiaomi", providers: { xiaomi: { apiKey: "${XIAOMI_API_KEY}", model: "mimo-v2.5-tts", voice: "mimo_default", format: "mp3", }, },},},}Nadpisania głosu dla poszczególnych agentów
Użyj agents.list[].tts, gdy jeden agent powinien mówić z innym dostawcą,
głosem, modelem, personą lub trybem Auto-TTS. Blok agenta jest głęboko scalany z
messages.tts, więc poświadczenia 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: { voiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, }, ], },}Aby przypiąć personę dla 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 - nadpisanie kanału, gdy kanał obsługuje
channels.<channel>.tts - nadpisanie konta, gdy kanał przekazuje
channels.<channel>.accounts.<id>.tts - lokalne preferencje
/ttsdla tego hosta - dyrektywy wbudowane
[[tts:...]], gdy włączone są nadpisania modelu
Nadpisania kanału i konta używają tego samego kształtu co messages.tts i
są głęboko scalane z wcześniejszymi warstwami, więc współdzielone dane uwierzytelniające dostawcy mogą pozostać w
messages.tts, podczas gdy kanał lub konto bota zmienia tylko głos, model, personę
albo tryb automatyczny:
{ messages: { tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { voice: "shimmer" }, }, }, }, }, }, },}Persony
Persona to stabilna tożsamość mówiona, którą można deterministycznie stosować u różnych dostawców. Może preferować jednego dostawcę, definiować neutralny wobec dostawców zamiar promptu oraz przenosić powiązania specyficzne dla dostawcy dla 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: { voiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2" }, }, }, }, }, },}Pełna persona (prompt neutralny wobec dostawcy)
{ 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, }, }, }, }, }, }, },}Rozstrzyganie persony
Aktywna persona jest wybierana deterministycznie:
- lokalna preferencja
/tts persona <id>, jeśli jest ustawiona. messages.tts.persona, jeśli jest ustawione.- Brak persony.
Wybór dostawcy działa według zasady najpierw jawne ustawienia:
- Bezpośrednie nadpisania (CLI, Gateway, Talk, dozwolone dyrektywy TTS).
- lokalna preferencja
/tts provider <id>. provideraktywnej persony.messages.tts.provider.- Automatyczny wybór z rejestru.
Dla każdej próby dostawcy OpenClaw scala konfiguracje w tej kolejności:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Zaufane nadpisania żądania
- Dozwolone nadpisania z dyrektyw TTS wyemitowanych przez model
Jak dostawcy używają promptów persony
Pola promptu persony (profile, scene, sampleContext, style, accent,
pacing, constraints) są neutralne wobec dostawców. Każdy dostawca decyduje, jak
ich używać:
Google Gemini
Opakowuje pola promptu persony w strukturę promptu Gemini TTS tylko wtedy, gdy
efektywna konfiguracja dostawcy Google ustawia promptTemplate: "audio-profile-v1"
albo personaPrompt. Starsze pola audioProfile i speakerName nadal są
poprzedzane jako tekst promptu specyficzny dla Google. Wbudowane znaczniki audio, takie jak
[whispers] lub [laughs] wewnątrz bloku [[tts:text]], są zachowywane
w transkrypcie Gemini; OpenClaw nie generuje tych znaczników.
OpenAI
Mapuje pola promptu persony na pole żądania instructions tylko wtedy, gdy
nie skonfigurowano jawnych instructions OpenAI. Jawne instructions
zawsze ma pierwszeństwo.
Other providers
Używają tylko 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.
Zasada awaryjna
fallbackPolicy steruje zachowaniem, gdy persona nie ma powiązania dla
próbowanego dostawcy:
| Zasada | Zachowanie |
|---|---|
preserve-persona |
Domyślne. Pola promptu neutralne wobec dostawcy pozostają dostępne; dostawca może ich użyć albo je zignorować. |
provider-defaults |
Persona jest pomijana podczas przygotowania promptu dla tej próby; dostawca używa swoich neutralnych ustawień domyślnych, a przejście awaryjne do innych dostawców trwa dalej. |
fail |
Pomija tę próbę dostawcy z reasonCode: "not_configured" i personaBinding: "missing". Dostawcy awaryjni nadal są próbowani. |
Całe żądanie TTS kończy się niepowodzeniem tylko wtedy, gdy każdy próbowany dostawca zostanie pominięty albo zakończy się błędem.
Wybór dostawcy sesji Talk ma zakres sesji. Klient Talk powinien wybierać
identyfikatory dostawców, identyfikatory modeli, identyfikatory głosów i ustawienia regionalne z talk.catalog oraz przekazywać
je przez sesję Talk albo żądanie przekazania. Otwarcie sesji głosowej nie powinno
modyfikować messages.tts ani globalnych domyślnych dostawców Talk.
Dyrektywy sterowane przez model
Domyślnie asystent może emitować dyrektywy [[tts:...]], aby nadpisać
głos, model albo szybkość dla pojedynczej odpowiedzi, a także opcjonalny
blok [[tts:text]]...[[/tts:text]] dla ekspresyjnych wskazówek, które powinny pojawić się
tylko w audio:
Here you go. [[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](laughs) Read the song once more.[[/tts:text]]Gdy messages.tts.auto ma wartość "tagged", dyrektywy są wymagane, aby wyzwolić
audio. Dostarczanie bloków strumieniowych usuwa dyrektywy z widocznego tekstu, zanim
kanał je zobaczy, nawet gdy są podzielone między sąsiadujące bloki.
provider=... jest ignorowane, chyba że modelOverrides.allowProvider: true. Gdy
odpowiedź deklaruje provider=..., pozostałe klucze w tej dyrektywie są parsowane
tylko 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)voice/voiceName/voice_name/google_voice/voiceIdmodel/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(głośność MiniMax, 0–10)pitch(całkowitoliczbowy ton MiniMax, −12 do 12; wartości ułamkowe są obcinane)emotion(znacznik emocji Volcengine)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Całkowicie wyłącz nadpisania modelu:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Zezwól na przełączanie dostawców, zachowując konfigurowalność innych ustawień:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Polecenia ukośnikowe
Pojedyncze polecenie /tts. Na Discordzie OpenClaw rejestruje też /voice, ponieważ
/tts jest wbudowanym poleceniem Discorda — 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 jakoalways;/tts offzapisuje ją jakooff./tts chat on|off|defaultzapisuje nadpisanie automatycznego TTS o zakresie sesji dla bieżącego czatu./tts persona <id>zapisuje lokalną preferencję persony;/tts persona offją czyści./tts latestodczytuje najnowszą odpowiedź asystenta z transkryptu bieżącej sesji i wysyła ją raz jako audio. Przechowuje tylko hash tej odpowiedzi we wpisie sesji, aby zapobiec zduplikowanym wysyłkom głosowym./tts audiogeneruje jednorazową odpowiedź audio (nie włącza TTS).limitisummarysą przechowywane w lokalnych preferencjach, nie w głównej konfiguracji./tts statuszawiera diagnostykę przejścia awaryjnego dla najnowszej próby —Fallback: <primary> -> <used>,Attempts: ...oraz szczegóły każdej próby (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 nadpisania w prefsPath. Wartość domyślna to
~/.openclaw/settings/tts.json; nadpisz ją zmienną środowiskową OPENCLAW_TTS_PREFS
albo 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 (domyślnie 1500 znaków) |
summarize |
Przełącznik podsumowania (domyślnie true) |
Nadpisują one efektywną konfigurację z messages.tts oraz aktywnego
bloku agents.list[].tts dla tego hosta.
Formaty wyjściowe (stałe)
Dostarczanie głosu TTS jest sterowane możliwościami kanału. Pluginy kanałów deklarują,
czy TTS w stylu wiadomości głosowej powinien prosić dostawców o natywny cel voice-note, czy
zachować normalną syntezę audio-file i tylko oznaczać zgodne dane wyjściowe do dostarczania
głosowego.
- Kanały obsługujące wiadomości głosowe: odpowiedzi jako wiadomości głosowe preferują Opus (
opus_48000_64z ElevenLabs,opusz OpenAI).- 48 kHz / 64 kbps to dobry kompromis dla wiadomości głosowych.
- Feishu / WhatsApp: gdy odpowiedź jako wiadomość głosowa jest tworzona jako MP3/WebM/WAV/M4A
lub inny prawdopodobny plik audio, Plugin kanału transkoduje ją do 48 kHz
Ogg/Opus za pomocą
ffmpegprzed wysłaniem natywnej wiadomości głosowej. WhatsApp wysyła wynik przez ładunekaudioBaileys zptt: trueiaudio/ogg; codecs=opus. Jeśli konwersja się nie powiedzie, Feishu otrzymuje oryginalny plik jako załącznik; wysyłka przez WhatsApp kończy się niepowodzeniem zamiast opublikowania niezgodnego ładunku PTT. - Inne kanały: MP3 (
mp3_44100_128z ElevenLabs,mp3z OpenAI).- 44,1 kHz / 128 kbps to domyślny balans dla wyrazistości mowy.
- MiniMax: MP3 (model
speech-2.8-hd, częstotliwość próbkowania 32 kHz) dla zwykłych załączników audio. Dla celów wiadomości głosowych deklarowanych przez kanał OpenClaw transkoduje MP3 MiniMax do 48 kHz Opus za pomocąffmpegprzed dostarczeniem, gdy kanał deklaruje transkodowanie. - Xiaomi MiMo: domyślnie MP3 albo WAV, gdy skonfigurowano. Dla celów wiadomości głosowych deklarowanych przez kanał OpenClaw transkoduje wyjście Xiaomi do 48 kHz Opus za pomocą
ffmpegprzed dostarczeniem, gdy kanał deklaruje transkodowanie. - Lokalny CLI: używa skonfigurowanego
outputFormat. Cele wiadomości głosowych są konwertowane do Ogg/Opus, a wyjście telefoniczne jest konwertowane do surowego 16 kHz mono PCM za pomocąffmpeg. - Google Gemini: TTS API Gemini zwraca surowe 24 kHz PCM. OpenClaw opakowuje je jako WAV dla załączników audio, transkoduje je do 48 kHz Opus 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, natywne
OGG_OPUSdla celów wiadomości głosowych oraz surowePCMprzy 22050 Hz dla Talk/telefonii. - xAI: domyślnie MP3;
responseFormatmoże mieć wartośćmp3,wav,pcm,mulawlubalaw. OpenClaw używa wsadowego punktu końcowego REST TTS xAI i zwraca kompletny załącznik audio; streamingowy WebSocket TTS xAI nie jest używany przez tę ścieżkę dostawcy. Natywny format Opus dla wiadomości głosowych nie jest obsługiwany przez tę ścieżkę. - Microsoft: używa
microsoft.outputFormat(domyślnieaudio-24khz-48kbitrate-mono-mp3).- Wbudowany 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; użyj OpenAI/ElevenLabs, jeśli potrzebujesz gwarantowanych wiadomości głosowych Opus. - Jeśli skonfigurowany format wyjściowy Microsoft zawiedzie, OpenClaw ponawia próbę z MP3.
- Wbudowany transport akceptuje
Formaty wyjściowe OpenAI/ElevenLabs są stałe dla każdego kanału (zobacz wyżej).
Zachowanie Auto-TTS
Gdy messages.tts.auto jest włączone, OpenClaw:
- Pomija TTS, jeśli odpowiedź zawiera już media lub dyrektywę
MEDIA:. - Pomija bardzo krótkie odpowiedzi (poniżej 10 znaków).
- Streszcza długie odpowiedzi, gdy streszczenia są włączone, używając
summaryModel(lubagents.defaults.model.primary). - Dołącza wygenerowane audio do odpowiedzi.
- W
mode: "final"nadal wysyła TTS tylko audio dla strumieniowanych odpowiedzi końcowych po zakończeniu strumienia tekstu; wygenerowane media przechodzą przez tę samą normalizację mediów kanału co zwykłe załączniki odpowiedzi.
Jeśli odpowiedź przekracza maxLength, a streszczenie jest wyłączone (lub nie ma klucza API dla
modelu streszczeń), audio jest pomijane i wysyłana jest zwykła odpowiedź tekstowa.
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 audioFormaty wyjściowe według kanału
| Cel | Format |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Odpowiedzi jako wiadomości głosowe preferują Opus (opus_48000_64 z ElevenLabs, opus z OpenAI). 48 kHz / 64 kbps równoważy wyrazistość i rozmiar. |
| Inne kanały | MP3 (mp3_44100_128 z ElevenLabs, mp3 z OpenAI). 44,1 kHz / 128 kbps domyślnie dla mowy. |
| Talk / telefonia | Natywne dla dostawcy PCM (Inworld 22050 Hz, Google 24 kHz) albo ulaw_8000 z Gradium dla telefonii. |
Uwagi dotyczące dostawców:
- Transkodowanie Feishu / WhatsApp: Gdy odpowiedź jako wiadomość głosowa trafia jako MP3/WebM/WAV/M4A, Plugin kanału transkoduje ją do 48 kHz Ogg/Opus za pomocą
ffmpeg. WhatsApp wysyła przez Baileys zptt: trueiaudio/ogg; codecs=opus. Jeśli konwersja się nie powiedzie: Feishu awaryjnie dołącza oryginalny plik; wysyłka przez WhatsApp kończy się niepowodzeniem zamiast opublikowania niezgodnego ładunku PTT. - MiniMax / Xiaomi MiMo: Domyślnie MP3 (32 kHz dla MiniMax
speech-2.8-hd); transkodowane do 48 kHz Opus dla celów wiadomości głosowych przezffmpeg. - Lokalny CLI: Używa skonfigurowanego
outputFormat. Cele wiadomości głosowych są konwertowane do Ogg/Opus, a wyjście telefoniczne do surowego 16 kHz mono PCM. - Google Gemini: Zwraca surowe 24 kHz PCM. OpenClaw opakowuje jako WAV dla załączników, transkoduje do 48 kHz Opus dla celów wiadomości głosowych, zwraca PCM bezpośrednio dla Talk/telefonii.
- Inworld: Załączniki MP3, natywna wiadomość głosowa
OGG_OPUS, surowePCM22050 Hz dla Talk/telefonii. - xAI: Domyślnie MP3;
responseFormatmoże mieć wartośćmp3|wav|pcm|mulaw|alaw. Używa wsadowego punktu końcowego REST xAI — streamingowe WebSocket TTS nie jest używane. Natywny format Opus dla wiadomości głosowych nie jest obsługiwany. - Microsoft: Używa
microsoft.outputFormat(domyślnieaudio-24khz-48kbitrate-mono-mp3). TelegramsendVoiceakceptuje OGG/MP3/M4A; użyj OpenAI/ElevenLabs, jeśli potrzebujesz gwarantowanych wiadomości głosowych Opus. Jeśli skonfigurowany format Microsoft zawiedzie, OpenClaw ponawia próbę z MP3.
Formaty wyjściowe OpenAI i ElevenLabs są stałe dla każdego kanału zgodnie z powyższą listą.
Dokumentacja pól
Top-level messages.tts.*
auto"off" | "always" | "inbound" | "tagged"Tryb Auto-TTS. inbound wysyła audio tylko po przychodzącej wiadomości głosowej; tagged wysyła audio 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" obejmuje odpowiedzi narzędzi/bloków oprócz odpowiedzi końcowych.
providerstringIdentyfikator dostawcy mowy. Gdy nie jest ustawiony, OpenClaw używa pierwszego skonfigurowanego dostawcy w kolejności automatycznego wyboru rejestru. Starsze provider: "edge" jest przepisywane na "microsoft" przez openclaw doctor --fix.
personastringAktywny identyfikator persony z personas. Normalizowany do małych liter.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
Stabilna tożsamość mówiona. Pola: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Zobacz Persony.
summaryModelstringTani model do automatycznego streszczenia; domyślnie agents.defaults.model.primary. Akceptuje provider/model lub skonfigurowany alias modelu.
modelOverridesobjectPozwala modelowi emitować dyrektywy TTS. enabled domyślnie ma wartość true; allowProvider domyślnie ma wartość false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Ustawienia należące do dostawcy, kluczowane identyfikatorem dostawcy mowy. Starsze bezpośrednie bloki (messages.tts.openai, .elevenlabs, .microsoft, .edge) są przepisywane przez openclaw doctor --fix; zatwierdzaj tylko messages.tts.providers.<id>.
maxTextLengthnumberTwardy limit znaków wejścia TTS. /tts audio kończy się niepowodzeniem po przekroczeniu.
timeoutMsnumberLimit czasu żądania w milisekundach.
prefsPathstringNadpisuje lokalną ścieżkę JSON preferencji (dostawca/limit/streszczenie). Domyślnie ~/.openclaw/settings/tts.json.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY lub SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Region Azure Speech (np. eastus). Env: AZURE_SPEECH_REGION lub SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Opcjonalne nadpisanie punktu końcowego Azure Speech (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
ShortName głosu Azure. Domyślnie en-US-JennyNeural.
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
Azure X-Microsoft-OutputFormat dla standardowego audio. Domyślnie audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Azure X-Microsoft-OutputFormat dla wyjścia wiadomości głosowej. Domyślnie ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Awaryjnie używa ELEVENLABS_API_KEY lub XI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Identyfikator modelu (np. eleven_multilingual_v2, eleven_v3).
OPENCLAW_DOCS_MARKER:paramClose:
voiceIdstringvoiceSettingsobjectstability, similarityBoost, style (każde 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normalnie).
applyTextNormalization"auto" | "on" | "off"OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg
2-literowy ISO 639-1 (np. en, de).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
Liczba całkowita 0..4294967295 dla deterministyczności na zasadzie najlepszych starań.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Awaryjnie używa GEMINI_API_KEY / GOOGLE_API_KEY. Jeśli pominięto, TTS może ponownie użyć models.providers.google.apiKey przed awaryjnym użyciem env.
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:IHBhdGg9InZvaWNlTmFtZSIgdHlwZT0ic3RyaW5nIg
Nazwa gotowego głosu Gemini. Domyślnie Kore. Alias: voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Ustaw na audio-profile-v1, aby opakować pola promptu aktywnej persony w deterministyczną strukturę promptu TTS Gemini.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Akceptowany jest tylko https://generativelanguage.googleapis.com.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Zmienna środowiskowa: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Domyślnie https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Domyślnie Emma (YTpq7expH9539ERJ).
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Główny Inworld
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Zmienna środowiskowa: 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:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Domyślnie Sarah.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Temperatura próbkowania 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
Local 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ścia 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�Microsoft (no API key)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Nazwa głosu neuronowego Microsoft (np. en-US-MichelleNeural).
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ścia 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
Używa awaryjnie MINIMAX_API_KEY. Uwierzytelnianie Token Plan przez 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. Zmienna środowiskowa: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Domyślnie speech-2.8-hd. Zmienna środowiskowa: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Domyślnie English_expressive_narrator. Zmienna środowiskowa: MINIMAX_TTS_VOICE_ID.
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
Używa awaryjnie OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Identyfikator modelu TTS OpenAI (np. gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Nazwa głosu (np. alloy, cedar).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Jawne pole instructions OpenAI. Gdy jest ustawione, pola promptu persony nie są automatycznie mapowane.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Dodatkowe pola JSON scalane z treścią żądania /audio/speech po wygenerowanych polach TTS OpenAI. Użyj tego dla punktów końcowych zgodnych z OpenAI, takich jak Kokoro, które wymagają kluczy specyficznych dla providera, takich jak lang; niebezpieczne klucze prototypu są ignorowane.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringNadpisz punkt końcowy TTS OpenAI. Kolejność rozwiązywania: 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, więc niestandardowe nazwy modeli i głosów są akceptowane.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Zmienna środowiskowa: 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. Starszy https://openrouter.ai/v1 jest normalizowany.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Domyślnie hexgrad/kokoro-82m. Alias: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Domyślnie af_alloy. Alias: 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
Zmienna środowiskowa: 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. Zmienna środowiskowa: VOLCENGINE_TTS_RESOURCE_ID. Użyj seed-tts-2.0, gdy Twój projekt ma uprawnienie do TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Nagłówek klucza aplikacji. Domyślnie aGjiRDfUWi. Zmienna środowiskowa: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Nadpisz punkt końcowy HTTP Seed Speech TTS. Zmienna środowiskowa: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Typ głosu. Domyślnie en_female_anna_mars_bigtts. Zmienna środowiskowa: VOLCENGINE_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Starsze pola Volcengine Speech Console. Zmienna środowiskowa: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (domyślnie volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Zmienna środowiskowa: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Domyślnie https://api.x.ai/v1. Zmienna środowiskowa: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Domyślnie eve. Aktywne głosy: ara, eve, leo, rex, sal, una.
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:
speednumberXiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Zmienna środowiskowa: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Domyślnie https://api.xiaomimimo.com/v1. Zmienna środowiskowa: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Domyślnie mimo-v2.5-tts. Zmienna środowiskowa: XIAOMI_TTS_MODEL. Obsługuje także mimo-v2-tts.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Domyślnie mimo_default. Zmienna środowiskowa: XIAOMI_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Domyślnie mp3. Zmienna środowiskowa: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
stylestringNarzędzie agenta
Narzędzie tts konwertuje tekst na mowę i zwraca załącznik audio do
dostarczenia w odpowiedzi. W Feishu, Matrix, Telegram i WhatsApp audio jest
dostarczane jako wiadomość głosowa, a nie jako załącznik pliku. Feishu i
WhatsApp mogą transkodować wyjście TTS inne niż Opus na tej ścieżce, gdy
ffmpeg jest dostępny.
WhatsApp wysyła audio przez Baileys jako notatkę głosową PTT (audio z
ptt: true) i wysyła widoczny tekst oddzielnie od audio PTT, ponieważ
klienci nie renderują konsekwentnie podpisów przy notatkach głosowych.
Narzędzie akceptuje opcjonalne pola channel i timeoutMs; timeoutMs jest
limitem czasu żądania providera dla pojedynczego wywołania, w milisekundach.
Gateway RPC
| Metoda | Cel |
|---|---|
tts.status |
Odczytaj bieżący stan TTS i ostatnią próbę. |
tts.enable |
Ustaw lokalną preferencję automatyczną na always. |
tts.disable |
Ustaw lokalną preferencję automatyczną na off. |
tts.convert |
Jednorazowa konwersja tekst → audio. |
tts.setProvider |
Ustaw lokalną preferencję providera. |
tts.setPersona |
Ustaw lokalną preferencję persony. |
tts.providers |
Wyświetl skonfigurowanych providerów i status. |
Linki do usług
- Przewodnik OpenAI po zamianie tekstu na mowę
- Dokumentacja referencyjna OpenAI Audio API
- Azure Speech REST: zamiana tekstu na mowę
- Provider Azure Speech
- ElevenLabs Text to Speech
- Uwierzytelnianie ElevenLabs
- Gradium
- Inworld TTS API
- MiniMax T2A v2 API
- Volcengine TTS HTTP API
- Synteza mowy Xiaomi MiMo
- node-edge-tts
- Formaty wyjścia Microsoft Speech
- xAI text to speech