Text-to-Speech (TTS)
OpenClaw kann ausgehende Antworten mit ElevenLabs, Microsoft, MiniMax oder OpenAI in Audio umwandeln. Es funktioniert überall dort, wo OpenClaw Audio senden kann.Unterstützte Dienste
- ElevenLabs (primärer oder Fallback-Anbieter)
- Microsoft (primärer oder Fallback-Anbieter; die aktuelle gebündelte Implementierung verwendet
node-edge-tts) - MiniMax (primärer oder Fallback-Anbieter; verwendet die T2A-v2-API)
- OpenAI (primärer oder Fallback-Anbieter; wird auch für Zusammenfassungen verwendet)
Hinweise zu Microsoft Speech
Der gebündelte Microsoft-Speech-Anbieter verwendet derzeit den gehosteten neuronalen TTS-Dienst von Microsoft Edge über die Bibliotheknode-edge-tts. Es
handelt sich um einen gehosteten Dienst (nicht lokal), der Microsoft-Endpunkte
verwendet und keinen API-Schlüssel erfordert.
node-edge-tts stellt Sprachkonfigurationsoptionen und Ausgabeformate bereit,
aber nicht alle Optionen werden vom Dienst unterstützt. Alte Konfigurationen
und Direktiveneingaben mit edge funktionieren weiterhin und werden zu microsoft normalisiert.
Da dieser Pfad ein öffentlicher Webdienst ohne veröffentlichte SLA oder Quota
ist, sollte er als Best-Effort behandelt werden. Wenn Sie garantierte Limits
und Support benötigen, verwenden Sie OpenAI oder ElevenLabs.
Optionale Schlüssel
Wenn Sie OpenAI, ElevenLabs oder MiniMax verwenden möchten:ELEVENLABS_API_KEY(oderXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel (oder agents.defaults.model.primary),
daher muss dieser Anbieter ebenfalls authentifiziert sein, wenn Sie Zusammenfassungen aktivieren.
Dienst-Links
- OpenAI Text-to-Speech guide
- OpenAI Audio API reference
- ElevenLabs Text to Speech
- ElevenLabs Authentication
- MiniMax T2A v2 API
- node-edge-tts
- Microsoft Speech output formats
Ist es standardmäßig aktiviert?
Nein. Auto‑TTS ist standardmäßig deaktiviert. Aktivieren Sie es in der Konfiguration mitmessages.tts.auto oder lokal mit /tts on.
Wenn messages.tts.provider nicht gesetzt ist, wählt OpenClaw den ersten konfigurierten
Speech-Anbieter in der Auto-Select-Reihenfolge der Registry aus.
Konfiguration
Die TTS-Konfiguration befindet sich untermessages.tts in openclaw.json.
Das vollständige Schema finden Sie unter Gateway-Konfiguration.
Minimale Konfiguration (Aktivieren + Anbieter)
OpenAI primär mit ElevenLabs als Fallback
Microsoft primär (ohne API-Schlüssel)
MiniMax primär
Microsoft Speech deaktivieren
Benutzerdefinierte Limits + prefs-Pfad
Nur nach einer eingehenden Sprachnachricht mit Audio antworten
Auto-Zusammenfassung für lange Antworten deaktivieren
Hinweise zu den Feldern
auto: Auto‑TTS-Modus (off,always,inbound,tagged).inboundsendet Audio nur nach einer eingehenden Sprachnachricht.taggedsendet Audio nur, wenn die Antwort[[tts]]-Tags enthält.
enabled: alter Schalter (doctor migriert dies zuauto).mode:"final"(Standard) oder"all"(einschließlich Tool-/Block-Antworten).provider: Speech-Anbieter-ID wie"elevenlabs","microsoft","minimax"oder"openai"(Fallback erfolgt automatisch).- Wenn
providernicht gesetzt ist, verwendet OpenClaw den ersten konfigurierten Speech-Anbieter in der Auto-Select-Reihenfolge der Registry. - Das alte
provider: "edge"funktioniert weiterhin und wird zumicrosoftnormalisiert. summaryModel: optionales günstiges Modell für Auto-Zusammenfassungen; Standard istagents.defaults.model.primary.- Akzeptiert
provider/modeloder einen konfigurierten Modellalias.
- Akzeptiert
modelOverrides: erlaubt dem Modell, TTS-Direktiven auszugeben (standardmäßig aktiviert).allowProviderist standardmäßigfalse(Anbieterwechsel ist Opt-in).
providers.<id>: anbieterbezogene Einstellungen, nach Speech-Anbieter-ID gruppiert.- Alte direkte Anbieterblöcke (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) werden beim Laden automatisch zumessages.tts.providers.<id>migriert. maxTextLength: hartes Limit für TTS-Eingaben (Zeichen)./tts audioschlägt fehl, wenn es überschritten wird.timeoutMs: Request-Timeout (ms).prefsPath: überschreibt den lokalen JSON-Pfad für Einstellungen (Anbieter/Limit/Zusammenfassung).apiKey-Werte greifen auf Umgebungsvariablen zurück (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY).providers.elevenlabs.baseUrl: überschreibt die ElevenLabs-API-Basis-URL.providers.openai.baseUrl: überschreibt den OpenAI-TTS-Endpunkt.- Auflösungsreihenfolge:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, daher werden benutzerdefinierte Modell- und Voice-Namen akzeptiert.
- Auflösungsreihenfolge:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: 2-stelliger ISO-639-1-Code (z. B.en,de)providers.elevenlabs.seed: Ganzzahl0..4294967295(Best-Effort-Determinismus)providers.minimax.baseUrl: überschreibt die MiniMax-API-Basis-URL (Standardhttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: TTS-Modell (Standardspeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: Voice-Kennung (StandardEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: Wiedergabegeschwindigkeit0.5..2.0(Standard 1.0).providers.minimax.vol: Lautstärke(0, 10](Standard 1.0; muss größer als 0 sein).providers.minimax.pitch: Tonhöhenverschiebung-12..12(Standard 0).providers.microsoft.enabled: erlaubt die Nutzung von Microsoft Speech (Standardtrue; kein API-Schlüssel).providers.microsoft.voice: Name der Microsoft-Neural-Voice (z. B.en-US-MichelleNeural).providers.microsoft.lang: Sprachcode (z. B.en-US).providers.microsoft.outputFormat: Microsoft-Ausgabeformat (z. B.audio-24khz-48kbitrate-mono-mp3).- Gültige Werte finden Sie unter Microsoft Speech output formats; nicht alle Formate werden vom gebündelten Edge-basierten Transport unterstützt.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: Prozentzeichenfolgen (z. B.+10%,-5%).providers.microsoft.saveSubtitles: schreibt JSON-Untertitel neben die Audiodatei.providers.microsoft.proxy: Proxy-URL für Microsoft-Speech-Requests.providers.microsoft.timeoutMs: Überschreibung des Request-Timeouts (ms).edge.*: alter Alias für dieselben Microsoft-Einstellungen.
Modellgesteuerte Überschreibungen (standardmäßig aktiviert)
Standardmäßig kann das Modell TTS-Direktiven für eine einzelne Antwort ausgeben. Wennmessages.tts.auto auf tagged gesetzt ist, sind diese Direktiven erforderlich, um Audio auszulösen.
Wenn aktiviert, kann das Modell [[tts:...]]-Direktiven ausgeben, um die Voice
für eine einzelne Antwort zu überschreiben, sowie optional einen [[tts:text]]...[[/tts:text]]-Block,
um ausdrucksstarke Tags (Lachen, Gesangshinweise usw.) bereitzustellen, die nur im
Audio erscheinen sollen.
provider=...-Direktiven werden ignoriert, es sei denn, modelOverrides.allowProvider: true.
Beispiel für eine Antwort-Payload:
provider(registrierte Speech-Anbieter-ID, zum Beispielopenai,elevenlabs,minimaxodermicrosoft; erfordertallowProvider: true)voice(OpenAI-Voice) odervoiceId(ElevenLabs / MiniMax)model(OpenAI-TTS-Modell, ElevenLabs-Modell-ID oder MiniMax-Modell)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(MiniMax-Lautstärke, 0-10)pitch(MiniMax-Tonhöhe, -12 bis 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Benutzerspezifische Einstellungen
Slash-Befehle schreiben lokale Überschreibungen nachprefsPath (Standard:
~/.openclaw/settings/tts.json, überschreibbar mit OPENCLAW_TTS_PREFS oder
messages.tts.prefsPath).
Gespeicherte Felder:
enabledprovidermaxLength(Zusammenfassungsschwelle; Standard 1500 Zeichen)summarize(Standardtrue)
messages.tts.* für diesen Host.
Ausgabeformate (fest)
- Feishu / Matrix / Telegram / WhatsApp: Opus-Voice-Message (
opus_48000_64von ElevenLabs,opusvon OpenAI).- 48 kHz / 64 kbps ist ein guter Kompromiss für Voice-Messages.
- Andere Kanäle: MP3 (
mp3_44100_128von ElevenLabs,mp3von OpenAI).- 44,1 kHz / 128 kbps ist die Standardbalance für klare Sprachwiedergabe.
- MiniMax: MP3 (Modell
speech-2.8-hd, 32-kHz-Samplerate). Voice-Note-Format wird nativ nicht unterstützt; verwenden Sie OpenAI oder ElevenLabs für garantierte Opus-Voice-Messages. - Microsoft: verwendet
microsoft.outputFormat(Standardaudio-24khz-48kbitrate-mono-mp3).- Der gebündelte Transport akzeptiert ein
outputFormat, aber nicht alle Formate sind über den Dienst verfügbar. - Werte für das Ausgabeformat entsprechen Microsoft Speech output formats (einschließlich Ogg/WebM Opus).
- Telegram
sendVoiceakzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie garantierte Opus-Voice-Messages benötigen. - Wenn das konfigurierte Microsoft-Ausgabeformat fehlschlägt, versucht OpenClaw es erneut mit MP3.
- Der gebündelte Transport akzeptiert ein
Verhalten von Auto-TTS
Wenn aktiviert, führt OpenClaw Folgendes aus:- TTS wird übersprungen, wenn die Antwort bereits Medien oder eine
MEDIA:-Direktive enthält. - sehr kurze Antworten (< 10 Zeichen) werden übersprungen.
- lange Antworten werden, wenn aktiviert, mit
agents.defaults.model.primary(odersummaryModel) zusammengefasst. - das generierte Audio wird an die Antwort angehängt.
maxLength überschreitet und die Zusammenfassung deaktiviert ist (oder kein API-Schlüssel für das
Zusammenfassungsmodell vorhanden ist), wird Audio
übersprungen und die normale Textantwort gesendet.
Ablaufdiagramm
Verwendung von Slash-Befehlen
Es gibt einen einzelnen Befehl:/tts.
Details zur Aktivierung finden Sie unter Slash-Befehle.
Hinweis zu Discord: /tts ist ein integrierter Discord-Befehl, daher registriert OpenClaw dort
/voice als nativen Befehl. Textbasiertes /tts ... funktioniert weiterhin.
- Befehle erfordern einen autorisierten Absender (Allowlist-/Owner-Regeln gelten weiterhin).
commands.textoder die Registrierung nativer Befehle muss aktiviert sein.- Die Konfiguration
messages.tts.autoakzeptiertoff|always|inbound|tagged. /tts onschreibt die lokale TTS-Einstellung aufalways;/tts offschreibt sie aufoff.- Verwenden Sie die Konfiguration, wenn Sie
inbound- odertagged-Standards möchten. limitundsummarywerden in lokalen Einstellungen gespeichert, nicht in der Hauptkonfiguration./tts audioerzeugt eine einmalige Audioantwort (aktiviert TTS nicht dauerhaft)./tts statusenthält Sichtbarkeit von Fallbacks für den neuesten Versuch:- erfolgreicher Fallback:
Fallback: <primary> -> <used>plusAttempts: ... - Fehler:
Error: ...plusAttempts: ... - detaillierte Diagnose:
Attempt details: provider:outcome(reasonCode) latency
- erfolgreicher Fallback:
- OpenAI- und ElevenLabs-API-Fehler enthalten jetzt geparste Fehlerdetails des Anbieters und die Request-ID (wenn vom Anbieter zurückgegeben), die in TTS-Fehlern/Logs sichtbar gemacht werden.
Agent-Tool
Dastts-Tool wandelt Text in Sprache um und gibt einen Audio-Anhang zur
Auslieferung der Antwort zurück. Wenn der Kanal Feishu, Matrix, Telegram oder WhatsApp ist,
wird das Audio als Voice-Message statt als Dateianhang gesendet.
Gateway-RPC
Gateway-Methoden:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers