Text-to-speech (TTS)
OpenClaw może konwertować odpowiedzi wychodzące na audio przy użyciu ElevenLabs, Microsoft, MiniMax lub OpenAI. Działa to wszędzie tam, gdzie OpenClaw może wysyłać audio.Obsługiwane usługi
- ElevenLabs (dostawca główny lub fallback)
- Microsoft (dostawca główny lub fallback; obecna dołączona implementacja używa
node-edge-tts) - MiniMax (dostawca główny lub fallback; używa API T2A v2)
- OpenAI (dostawca główny lub fallback; używany również do podsumowań)
Uwagi dotyczące mowy Microsoft
Dołączony dostawca mowy Microsoft obecnie używa internetowej neuronalnej usługi TTS Microsoft Edge przez bibliotekęnode-edge-tts. Jest to usługa hostowana (nie
lokalna), używa punktów końcowych Microsoft i nie wymaga klucza API.
node-edge-tts udostępnia opcje konfiguracji mowy i formaty wyjściowe, ale
nie wszystkie opcje są obsługiwane przez usługę. Starsza konfiguracja i dane wejściowe dyrektyw
używające edge nadal działają i są normalizowane do microsoft.
Ponieważ ta ścieżka wykorzystuje publiczną usługę internetową bez opublikowanego SLA ani limitu,
traktuj ją jako best-effort. Jeśli potrzebujesz gwarantowanych limitów i wsparcia, użyj OpenAI
lub ElevenLabs.
Opcjonalne klucze
Jeśli chcesz używać OpenAI, ElevenLabs lub MiniMax:ELEVENLABS_API_KEY(lubXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel (lub agents.defaults.model.primary),
więc ten dostawca także musi być uwierzytelniony, jeśli włączysz podsumowania.
Linki do usług
- Przewodnik OpenAI Text-to-Speech
- Odniesienie do OpenAI Audio API
- ElevenLabs Text to Speech
- Uwierzytelnianie ElevenLabs
- MiniMax T2A v2 API
- node-edge-tts
- Formaty wyjściowe Microsoft Speech
Czy jest włączone domyślnie?
Nie. Auto‑TTS jest domyślnie wyłączone. Włącz je w konfiguracji przezmessages.tts.auto albo per sesja przez /tts always (alias: /tts on).
Gdy messages.tts.provider nie jest ustawione, OpenClaw wybiera pierwszego skonfigurowanego
dostawcę mowy w kolejności automatycznego wyboru rejestru.
Konfiguracja
Konfiguracja TTS znajduje się podmessages.tts w openclaw.json.
Pełny schemat znajduje się w Konfiguracji Gateway.
Minimalna konfiguracja (włączenie + dostawca)
OpenAI jako główny z fallback do ElevenLabs
Microsoft jako główny (bez klucza API)
MiniMax jako główny
Wyłączenie mowy Microsoft
Niestandardowe limity + ścieżka prefs
Odpowiadaj audio tylko po przychodzącej wiadomości głosowej
Wyłączenie auto-podsumowania dla długich odpowiedzi
Uwagi dotyczące pól
auto: tryb auto‑TTS (off,always,inbound,tagged).inboundwysyła audio tylko po przychodzącej wiadomości głosowej.taggedwysyła audio tylko wtedy, gdy odpowiedź zawiera tagi[[tts]].
enabled: starszy przełącznik (doctor migruje go doauto).mode:"final"(domyślnie) lub"all"(obejmuje odpowiedzi narzędzi/bloków).provider: identyfikator dostawcy mowy, taki jak"elevenlabs","microsoft","minimax"lub"openai"(fallback jest automatyczny).- Jeśli
providernie jest ustawiony, OpenClaw używa pierwszego skonfigurowanego dostawcy mowy w kolejności automatycznego wyboru rejestru. - Starsze
provider: "edge"nadal działa i jest normalizowane domicrosoft. summaryModel: opcjonalny tani model do auto-podsumowania; domyślnieagents.defaults.model.primary.- Akceptuje
provider/modelalbo skonfigurowany alias modelu.
- Akceptuje
modelOverrides: pozwala modelowi emitować dyrektywy TTS (domyślnie włączone).allowProviderdomyślnie ma wartośćfalse(przełączanie dostawcy jest opt-in).
providers.<id>: ustawienia należące do dostawcy, z kluczami według identyfikatora dostawcy mowy.- Starsze bezpośrednie bloki dostawców (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) są automatycznie migrowane podczas ładowania domessages.tts.providers.<id>. maxTextLength: twardy limit wejścia TTS (znaki)./tts audiokończy się błędem po jego przekroczeniu.timeoutMs: limit czasu żądania (ms).prefsPath: nadpisuje lokalną ścieżkę JSON preferencji (dostawca/limit/podsumowanie).- Wartości
apiKeywracają do zmiennych środowiskowych (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: nadpisuje bazowy URL API ElevenLabs.providers.openai.baseUrl: nadpisuje punkt końcowy OpenAI TTS.- Kolejność rozstrzygania:
messages.tts.providers.openai.baseUrl->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 akceptowane są niestandardowe nazwy modeli i głosów.
- Kolejność rozstrzygania:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normalnie)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: 2-literowy ISO 639-1 (np.en,de)providers.elevenlabs.seed: liczba całkowita0..4294967295(deterministyczność best-effort)providers.minimax.baseUrl: nadpisuje bazowy URL API MiniMax (domyślniehttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: model TTS (domyślniespeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: identyfikator głosu (domyślnieEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: prędkość odtwarzania0.5..2.0(domyślnie 1.0).providers.minimax.vol: głośność(0, 10](domyślnie 1.0; musi być większa niż 0).providers.minimax.pitch: przesunięcie wysokości tonu-12..12(domyślnie 0).providers.microsoft.enabled: zezwala na użycie mowy Microsoft (domyślnietrue; bez klucza API).providers.microsoft.voice: nazwa głosu neuronowego Microsoft (np.en-US-MichelleNeural).providers.microsoft.lang: kod języka (np.en-US).providers.microsoft.outputFormat: format wyjściowy Microsoft (np.audio-24khz-48kbitrate-mono-mp3).- Prawidłowe wartości znajdziesz w formatach wyjściowych Microsoft Speech; nie wszystkie formaty są obsługiwane przez dołączony transport oparty na Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: ciągi procentowe (np.+10%,-5%).providers.microsoft.saveSubtitles: zapisuje napisy JSON obok pliku audio.providers.microsoft.proxy: URL proxy dla żądań Microsoft speech.providers.microsoft.timeoutMs: nadpisanie limitu czasu żądania (ms).edge.*: starszy alias dla tych samych ustawień Microsoft.
Nadpisania sterowane modelem (domyślnie włączone)
Domyślnie model może emitować dyrektywy TTS dla pojedynczej odpowiedzi. Gdymessages.tts.auto ma wartość tagged, dyrektywy te są wymagane do uruchomienia audio.
Po włączeniu model może emitować dyrektywy [[tts:...]], aby nadpisać głos
dla pojedynczej odpowiedzi, a także opcjonalny blok [[tts:text]]...[[/tts:text]], aby
dostarczyć ekspresyjne tagi (śmiech, wskazówki śpiewane itp.), które powinny pojawić się tylko
w audio.
Dyrektywy provider=... są ignorowane, chyba że modelOverrides.allowProvider: true.
Przykładowy ładunek odpowiedzi:
provider(zarejestrowany identyfikator dostawcy mowy, np.openai,elevenlabs,minimaxlubmicrosoft; wymagaallowProvider: true)voice(głos OpenAI) lubvoiceId(ElevenLabs / MiniMax)model(model OpenAI TTS, identyfikator modelu ElevenLabs lub model MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(głośność MiniMax, 0-10)pitch(wysokość tonu MiniMax, -12 do 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Preferencje per użytkownik
Polecenia slash zapisują lokalne nadpisania doprefsPath (domyślnie:
~/.openclaw/settings/tts.json, nadpisywane przez OPENCLAW_TTS_PREFS lub
messages.tts.prefsPath).
Zapisywane pola:
enabledprovidermaxLength(próg podsumowania; domyślnie 1500 znaków)summarize(domyślnietrue)
messages.tts.* dla tego hosta.
Formaty wyjściowe (stałe)
- Feishu / Matrix / Telegram / WhatsApp: wiadomość głosowa Opus (
opus_48000_64z ElevenLabs,opusz OpenAI).- 48 kHz / 64 kb/s to dobry kompromis dla wiadomości głosowych.
- Inne kanały: MP3 (
mp3_44100_128z ElevenLabs,mp3z OpenAI).- 44,1 kHz / 128 kb/s to domyślny balans dla czytelności mowy.
- MiniMax: MP3 (model
speech-2.8-hd, częstotliwość próbkowania 32 kHz). Format notatki głosowej nie jest obsługiwany natywnie; użyj OpenAI lub ElevenLabs, jeśli potrzebujesz gwarantowanych wiadomości głosowych Opus. - 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 są zgodne z formatami wyjściowymi 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 się nie powiedzie, OpenClaw ponawia próbę z MP3.
- Dołączony transport akceptuje
Zachowanie auto-TTS
Po włączeniu OpenClaw:- pomija TTS, jeśli odpowiedź już zawiera media lub dyrektywę
MEDIA:. - pomija bardzo krótkie odpowiedzi (< 10 znaków).
- podsumowuje długie odpowiedzi, gdy ta opcja jest włączona, przy użyciu
agents.defaults.model.primary(lubsummaryModel). - dołącza wygenerowane audio do odpowiedzi.
maxLength, a podsumowanie jest wyłączone (lub brak klucza API dla
modelu podsumowania), audio
jest pomijane i wysyłana jest zwykła odpowiedź tekstowa.
Schemat przepływu
Użycie poleceń slash
Istnieje jedno polecenie:/tts.
Szczegóły włączania znajdziesz w Poleceniach slash.
Uwaga dotycząca Discord: /tts to wbudowane polecenie Discord, więc OpenClaw rejestruje tam
/voice jako natywne polecenie. Tekstowe /tts ... nadal działa.
- Polecenia wymagają autoryzowanego nadawcy (nadal obowiązują zasady allowlist/owner).
commands.textlub rejestracja natywnych poleceń musi być włączona.off|always|inbound|taggedto przełączniki per sesja (/tts onto alias dla/tts always).limitisummarysą zapisywane w lokalnych preferencjach, a nie w głównej konfiguracji./tts audiogeneruje jednorazową odpowiedź audio (nie przełącza TTS na włączone)./tts statuszawiera widoczność fallback dla ostatniej próby:- fallback zakończony sukcesem:
Fallback: <primary> -> <used>plusAttempts: ... - błąd:
Error: ...plusAttempts: ... - szczegółowa diagnostyka:
Attempt details: provider:outcome(reasonCode) latency
- fallback zakończony sukcesem:
- Błędy API OpenAI i ElevenLabs zawierają teraz sparsowane szczegóły błędu dostawcy oraz identyfikator żądania (jeśli został zwrócony przez dostawcę), który jest ujawniany w błędach/logach TTS.
Narzędzie agenta
Narzędzietts konwertuje tekst na mowę i zwraca załącznik audio do
dostarczenia odpowiedzi. Gdy kanałem jest Feishu, Matrix, Telegram lub WhatsApp,
audio jest dostarczane jako wiadomość głosowa, a nie załącznik plikowy.
Gateway RPC
Metody Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers