diff --git a/docs/de/gateway/cli-backends.md b/docs/de/gateway/cli-backends.md index 2160be729..86d95d26b 100644 --- a/docs/de/gateway/cli-backends.md +++ b/docs/de/gateway/cli-backends.md @@ -1,36 +1,36 @@ --- read_when: - - Sie möchten einen zuverlässigen Fallback, wenn API-Anbieter ausfallen - - Sie verwenden Codex CLI oder andere lokale KI-CLIs und möchten sie wiederverwenden - - Sie möchten die MCP-Loopback-Bridge für den Tool-Zugriff des CLI-Backends verstehen -summary: 'CLI-Backends: lokaler KI-CLI-Fallback mit optionaler MCP-Tool-Bridge' + - Sie möchten eine zuverlässige Ausweichlösung, wenn API-Anbieter ausfallen + - Sie verwenden Codex CLI oder andere lokale AI-CLIs und möchten sie wiederverwenden + - Sie möchten die MCP-loopback-Bridge für den Tool-Zugriff des CLI-Backends verstehen +summary: 'CLI-Backends: lokale AI-CLI-Ausweichlösung mit optionaler MCP-Tool-Bridge' title: CLI-Backends x-i18n: - generated_at: "2026-04-11T02:44:18Z" + generated_at: "2026-04-16T19:31:12Z" model: gpt-5.4 provider: openai - source_hash: d108dbea043c260a80d15497639298f71a6b4d800f68d7b39bc129f7667ca608 + source_hash: 381273532a8622bc4628000a6fb999712b12af08faade2b5f2b7ac4cc7d23efe source_path: gateway/cli-backends.md workflow: 15 --- -# CLI-Backends (Fallback-Laufzeit) +# CLI-Backends (Ausweich-Runtime) -OpenClaw kann **lokale KI-CLIs** als **reinen Text-Fallback** ausführen, wenn API-Anbieter ausfallen, -rate-limitiert sind oder sich vorübergehend fehlerhaft verhalten. Das ist bewusst konservativ: +OpenClaw kann **lokale AI-CLIs** als **reine Text-Ausweichlösung** ausführen, wenn API-Anbieter ausgefallen sind, +ratelimited werden oder sich vorübergehend fehlerhaft verhalten. Das ist bewusst konservativ: - **OpenClaw-Tools werden nicht direkt injiziert**, aber Backends mit `bundleMcp: true` - können Gateway-Tools über eine Loopback-MCP-Bridge erhalten. + können Gateway-Tools über eine loopback-MCP-Bridge empfangen. - **JSONL-Streaming** für CLIs, die es unterstützen. -- **Sitzungen werden unterstützt** (damit Folge-Turns kohärent bleiben). +- **Sitzungen werden unterstützt** (damit Folgedurchläufe konsistent bleiben). - **Bilder können durchgereicht werden**, wenn die CLI Bildpfade akzeptiert. -Dies ist eher als **Sicherheitsnetz** als als primärer Pfad gedacht. Verwenden Sie es, wenn Sie -„funktioniert immer“-Textantworten möchten, ohne von externen APIs abhängig zu sein. +Dies ist als **Sicherheitsnetz** und nicht als primärer Pfad gedacht. Verwenden Sie es, wenn Sie +„funktioniert immer“-Textantworten möchten, ohne auf externe APIs angewiesen zu sein. -Wenn Sie stattdessen eine vollständige Harness-Laufzeit mit ACP-Sitzungssteuerung, Hintergrundaufgaben, -Thread-/Konversationsbindung und persistenten externen Coding-Sitzungen möchten, verwenden Sie -[ACP Agents](/de/tools/acp-agents). CLI-Backends sind kein ACP. +Wenn Sie eine vollständige Harness-Runtime mit ACP-Sitzungssteuerung, Hintergrundaufgaben, +Thread-/Konversationsbindung und persistenten externen Coding-Sitzungen benötigen, verwenden Sie +stattdessen [ACP Agents](/de/tools/acp-agents). CLI-Backends sind kein ACP. ## Einsteigerfreundlicher Schnellstart @@ -41,7 +41,7 @@ registriert ein Standard-Backend): openclaw agent --message "hi" --model codex-cli/gpt-5.4 ``` -Wenn Ihr Gateway unter launchd/systemd läuft und `PATH` minimal ist, fügen Sie nur den +Wenn Ihr Gateway unter launchd/systemd läuft und PATH minimal ist, fügen Sie nur den Befehlspfad hinzu: ```json5 @@ -58,16 +58,16 @@ Befehlspfad hinzu: } ``` -Das ist alles. Keine Schlüssel, keine zusätzliche Auth-Konfiguration über die CLI selbst hinaus erforderlich. +Das ist alles. Keine Schlüssel, keine zusätzliche Auth-Konfiguration erforderlich, außer der CLI selbst. Wenn Sie ein gebündeltes CLI-Backend als **primären Nachrichtenanbieter** auf einem Gateway-Host verwenden, lädt OpenClaw jetzt automatisch das zugehörige gebündelte Plugin, wenn Ihre Konfiguration dieses Backend explizit in einer Modell-Referenz oder unter `agents.defaults.cliBackends` referenziert. -## Als Fallback verwenden +## Verwendung als Ausweichlösung -Fügen Sie Ihrer Fallback-Liste ein CLI-Backend hinzu, damit es nur ausgeführt wird, wenn primäre Modelle fehlschlagen: +Fügen Sie Ihrer Ausweichliste ein CLI-Backend hinzu, damit es nur ausgeführt wird, wenn primäre Modelle fehlschlagen: ```json5 { @@ -100,8 +100,8 @@ Alle CLI-Backends befinden sich unter: agents.defaults.cliBackends ``` -Jeder Eintrag ist durch eine **Anbieter-ID** gekennzeichnet (z. B. `codex-cli`, `my-cli`). -Die Anbieter-ID wird zur linken Seite Ihrer Modell-Referenz: +Jeder Eintrag ist über eine **Provider-ID** verschlüsselt (z. B. `codex-cli`, `my-cli`). +Die Provider-ID wird zur linken Seite Ihrer Modell-Referenz: ``` / @@ -131,7 +131,7 @@ Die Anbieter-ID wird zur linken Seite Ihrer Modell-Referenz: sessionMode: "existing", sessionIdFields: ["session_id", "conversation_id"], systemPromptArg: "--system", - // Codex-style CLIs can point at a prompt file instead: + // CLIs im Codex-Stil können stattdessen auf eine Prompt-Datei verweisen: // systemPromptFileConfigArg: "-c", // systemPromptFileConfigKey: "model_instructions_file", systemPromptWhen: "first", @@ -145,55 +145,55 @@ Die Anbieter-ID wird zur linken Seite Ihrer Modell-Referenz: } ``` -## Funktionsweise +## So funktioniert es -1. **Wählt ein Backend aus** anhand des Anbieterpräfixes (`codex-cli/...`). -2. **Erstellt einen System-Prompt** unter Verwendung desselben OpenClaw-Prompts und Workspace-Kontexts. +1. **Wählt ein Backend aus** basierend auf dem Provider-Präfix (`codex-cli/...`). +2. **Erstellt einen System-Prompt** mit demselben OpenClaw-Prompt + Workspace-Kontext. 3. **Führt die CLI aus** mit einer Sitzungs-ID (falls unterstützt), damit der Verlauf konsistent bleibt. 4. **Parst die Ausgabe** (JSON oder Klartext) und gibt den finalen Text zurück. -5. **Persistiert Sitzungs-IDs** pro Backend, damit Folgeanfragen dieselbe CLI-Sitzung wiederverwenden. +5. **Speichert Sitzungs-IDs** pro Backend, damit Folgedurchläufe dieselbe CLI-Sitzung wiederverwenden. -Das gebündelte Anthropic-`claude-cli`-Backend wird wieder unterstützt. Anthropic-Mitarbeiter +Das gebündelte Anthropic-`claude-cli`-Backend wird wieder unterstützt. Anthropic-Mitarbeitende haben uns mitgeteilt, dass die Nutzung von Claude CLI im OpenClaw-Stil wieder zulässig ist, daher behandelt OpenClaw -die Verwendung von `claude -p` für diese Integration als erlaubt, sofern Anthropic keine -neue Richtlinie veröffentlicht. +die Nutzung von `claude -p` für diese Integration als genehmigt, sofern Anthropic +keine neue Richtlinie veröffentlicht. Das gebündelte OpenAI-`codex-cli`-Backend übergibt den System-Prompt von OpenClaw über -die `model_instructions_file`-Konfigurationsüberschreibung von Codex (`-c -model_instructions_file="..."`). Codex bietet kein Claude-ähnliches -`--append-system-prompt`-Flag, daher schreibt OpenClaw den zusammengesetzten Prompt für jede neue Codex-CLI-Sitzung -in eine temporäre Datei. +die Codex-Konfigurationsüberschreibung `model_instructions_file` (`-c +model_instructions_file="..."`). Codex stellt kein Claude-ähnliches +Flag `--append-system-prompt` bereit, daher schreibt OpenClaw den zusammengesetzten Prompt +für jede neue Codex-CLI-Sitzung in eine temporäre Datei. Das gebündelte Anthropic-`claude-cli`-Backend erhält den OpenClaw-Skills-Snapshot -auf zwei Arten: den kompakten OpenClaw-Skills-Katalog im angehängten System-Prompt und +auf zwei Wegen: den kompakten OpenClaw-Skills-Katalog im angehängten System-Prompt sowie ein temporäres Claude-Code-Plugin, das mit `--plugin-dir` übergeben wird. Das Plugin enthält -nur die zulässigen Skills für diese Agent-/Sitzung, sodass der native Skill-Resolver von Claude Code -dieselbe gefilterte Menge sieht, die OpenClaw andernfalls im Prompt bewerben würde. -Skill-Umgebungs-/API-Schlüssel-Überschreibungen werden weiterhin von OpenClaw auf die -Child-Process-Umgebung für den Lauf angewendet. +nur die zulässigen Skills für diesen Agenten bzw. diese Sitzung, sodass der native Skill-Resolver von Claude Code +dieselbe gefilterte Menge sieht, die OpenClaw ansonsten im Prompt bewerben würde. +Skill-Umgebungs-/API-Key-Überschreibungen werden von OpenClaw weiterhin auf die +Umgebung des Child-Prozesses für den Lauf angewendet. ## Sitzungen - Wenn die CLI Sitzungen unterstützt, setzen Sie `sessionArg` (z. B. `--session-id`) oder `sessionArgs` (Platzhalter `{sessionId}`), wenn die ID in mehrere Flags eingefügt werden muss. -- Wenn die CLI einen **Resume-Subcommand** mit anderen Flags verwendet, setzen Sie +- Wenn die CLI einen **Resume-Unterbefehl** mit anderen Flags verwendet, setzen Sie `resumeArgs` (ersetzt `args` beim Fortsetzen) und optional `resumeOutput` (für nicht-JSON-Resumes). - `sessionMode`: - - `always`: sendet immer eine Sitzungs-ID (neue UUID, falls keine gespeichert ist). - - `existing`: sendet eine Sitzungs-ID nur, wenn zuvor eine gespeichert wurde. - - `none`: sendet niemals eine Sitzungs-ID. + - `always`: immer eine Sitzungs-ID senden (neue UUID, wenn keine gespeichert ist). + - `existing`: nur dann eine Sitzungs-ID senden, wenn zuvor bereits eine gespeichert wurde. + - `none`: niemals eine Sitzungs-ID senden. Hinweise zur Serialisierung: -- `serialize: true` hält Läufe auf derselben Lane in Reihenfolge. -- Die meisten CLIs serialisieren auf einer Anbieter-Lane. -- OpenClaw verwirft die Wiederverwendung gespeicherter CLI-Sitzungen, wenn sich der Auth-Status des Backends ändert, einschließlich erneuter Anmeldung, Token-Rotation oder geänderter Anmeldedaten eines Auth-Profils. +- `serialize: true` hält Läufe auf derselben Lane in geordneter Reihenfolge. +- Die meisten CLIs serialisieren auf einer Provider-Lane. +- OpenClaw verwirft die Wiederverwendung gespeicherter CLI-Sitzungen, wenn sich der Auth-Status des Backends ändert, einschließlich erneuter Anmeldung, Token-Rotation oder geänderter Zugangsdaten eines Auth-Profils. -## Bilder (Durchreichen) +## Bilder (Pass-through) Wenn Ihre CLI Bildpfade akzeptiert, setzen Sie `imageArg`: @@ -202,18 +202,18 @@ imageArg: "--image", imageMode: "repeat" ``` -OpenClaw schreibt Base64-Bilder in temporäre Dateien. Wenn `imageArg` gesetzt ist, werden diese +OpenClaw schreibt base64-Bilder in temporäre Dateien. Wenn `imageArg` gesetzt ist, werden diese Pfade als CLI-Argumente übergeben. Wenn `imageArg` fehlt, hängt OpenClaw die -Dateipfade an den Prompt an (Path Injection), was für CLIs ausreicht, die lokale +Dateipfade an den Prompt an (Pfad-Injektion), was für CLIs ausreicht, die lokale Dateien aus einfachen Pfaden automatisch laden. ## Ein- / Ausgaben - `output: "json"` (Standard) versucht, JSON zu parsen und Text + Sitzungs-ID zu extrahieren. -- Für die JSON-Ausgabe von Gemini CLI liest OpenClaw den Antworttext aus `response` und - die Nutzung aus `stats`, wenn `usage` fehlt oder leer ist. +- Für die JSON-Ausgabe von Gemini CLI liest OpenClaw Antworttext aus `response` und + Nutzungsdaten aus `stats`, wenn `usage` fehlt oder leer ist. - `output: "jsonl"` parst JSONL-Streams (zum Beispiel Codex CLI `--json`) und extrahiert die finale Agent-Nachricht sowie Sitzungs- - kennungen, sofern vorhanden. + Kennungen, sofern vorhanden. - `output: "text"` behandelt stdout als finale Antwort. Eingabemodi: @@ -224,18 +224,18 @@ Eingabemodi: ## Standards (plugin-eigen) -Das gebündelte OpenAI-Plugin registriert außerdem einen Standard für `codex-cli`: +Das gebündelte OpenAI-Plugin registriert außerdem einen Standardwert für `codex-cli`: - `command: "codex"` - `args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]` -- `resumeArgs: ["exec","resume","{sessionId}","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]` +- `resumeArgs: ["exec","resume","{sessionId}","-c","sandbox_mode=\"workspace-write\"","--skip-git-repo-check"]` - `output: "jsonl"` - `resumeOutput: "text"` - `modelArg: "--model"` - `imageArg: "--image"` - `sessionMode: "existing"` -Das gebündelte Google-Plugin registriert außerdem einen Standard für `google-gemini-cli`: +Das gebündelte Google-Plugin registriert außerdem einen Standardwert für `google-gemini-cli`: - `command: "gemini"` - `args: ["--output-format", "json", "--prompt", "{prompt}"]` @@ -250,28 +250,28 @@ Voraussetzung: Die lokale Gemini CLI muss installiert und als `gemini` auf `PATH` verfügbar sein (`brew install gemini-cli` oder `npm install -g @google/gemini-cli`). -Hinweise zu Gemini-CLI-JSON: +Hinweise zur Gemini-CLI-JSON-Ausgabe: - Antworttext wird aus dem JSON-Feld `response` gelesen. -- Die Nutzung fällt auf `stats` zurück, wenn `usage` fehlt oder leer ist. -- `stats.cached` wird in OpenClaw-`cacheRead` normalisiert. -- Wenn `stats.input` fehlt, leitet OpenClaw Eingabetoken aus +- Die Nutzung greift auf `stats` zurück, wenn `usage` fehlt oder leer ist. +- `stats.cached` wird zu OpenClaw-`cacheRead` normalisiert. +- Wenn `stats.input` fehlt, leitet OpenClaw Eingabe-Token aus `stats.input_tokens - stats.cached` ab. -Überschreiben Sie dies nur bei Bedarf (üblich: absoluter `command`-Pfad). +Nur bei Bedarf überschreiben (üblich: absoluter `command`-Pfad). ## Plugin-eigene Standards CLI-Backend-Standards sind jetzt Teil der Plugin-Oberfläche: - Plugins registrieren sie mit `api.registerCliBackend(...)`. -- Die `id` des Backends wird zum Anbieterpräfix in Modell-Referenzen. -- Benutzerkonfiguration in `agents.defaults.cliBackends.` überschreibt weiterhin den Plugin-Standard. +- Die Backend-`id` wird zum Provider-Präfix in Modell-Referenzen. +- Benutzerkonfiguration unter `agents.defaults.cliBackends.` überschreibt weiterhin den Plugin-Standard. - Backend-spezifische Konfigurationsbereinigung bleibt über den optionalen Hook `normalizeConfig` plugin-eigen. -Plugins, die kleine Kompatibilitäts-Shims für Prompt/Nachrichten benötigen, können -bidirektionale Texttransformationen deklarieren, ohne einen Anbieter oder ein CLI-Backend zu ersetzen: +Plugins, die kleine Kompatibilitäts-Shims für Prompts/Nachrichten benötigen, können +bidirektionale Texttransformationen deklarieren, ohne einen Provider oder ein CLI-Backend zu ersetzen: ```typescript api.registerTextTransforms({ @@ -288,16 +288,16 @@ api.registerTextTransforms({ }); ``` -`input` schreibt den System-Prompt und den Benutzer-Prompt um, die an die CLI übergeben werden. `output` -schreibt gestreamte Assistant-Deltas und geparsten finalen Text um, bevor OpenClaw seine -eigenen Kontrollmarker und die Zustellung an den Kanal verarbeitet. +`input` schreibt den an die CLI übergebenen System-Prompt und Benutzer-Prompt um. `output` +schreibt gestreamte Assistant-Deltas und geparsten finalen Text um, bevor OpenClaw +seine eigenen Kontrollmarker und die Channel-Auslieferung verarbeitet. -Für CLIs, die JSONL ausgeben, das mit Claude Code stream-json kompatibel ist, setzen Sie +Für CLIs, die mit Claude Code stream-json kompatibles JSONL ausgeben, setzen Sie `jsonlDialect: "claude-stream-json"` in der Konfiguration dieses Backends. ## Bundle-MCP-Overlays -CLI-Backends erhalten **keine** OpenClaw-Tool-Aufrufe direkt, aber ein Backend kann +CLI-Backends erhalten **keine** direkten OpenClaw-Tool-Aufrufe, aber ein Backend kann sich mit `bundleMcp: true` für ein generiertes MCP-Konfigurations-Overlay anmelden. Aktuelles gebündeltes Verhalten: @@ -308,32 +308,32 @@ Aktuelles gebündeltes Verhalten: Wenn Bundle MCP aktiviert ist, führt OpenClaw Folgendes aus: -- startet einen Loopback-HTTP-MCP-Server, der Gateway-Tools für den CLI-Prozess bereitstellt -- authentifiziert die Bridge mit einem Sitzungstoken pro Sitzung (`OPENCLAW_MCP_TOKEN`) -- begrenzt den Tool-Zugriff auf die aktuelle Sitzung, das Konto und den Kanalkontext -- lädt aktivierte Bundle-MCP-Server für den aktuellen Workspace -- führt sie mit einer eventuell vorhandenen MCP-Konfigurations-/Einstellungsstruktur des Backends zusammen -- schreibt die Startkonfiguration unter Verwendung des backend-eigenen Integrationsmodus aus der besitzenden Erweiterung um +- es startet einen loopback-HTTP-MCP-Server, der Gateway-Tools für den CLI-Prozess bereitstellt +- es authentifiziert die Bridge mit einem Token pro Sitzung (`OPENCLAW_MCP_TOKEN`) +- es begrenzt den Tool-Zugriff auf die aktuelle Sitzung sowie den Account- und Channel-Kontext +- es lädt aktivierte Bundle-MCP-Server für den aktuellen Workspace +- es führt sie mit einer vorhandenen backend-spezifischen MCP-Konfigurations-/Einstellungsstruktur zusammen +- es schreibt die Startkonfiguration mit dem backend-eigenen Integrationsmodus der zugehörigen Erweiterung um -Wenn keine MCP-Server aktiviert sind, injiziert OpenClaw dennoch eine strikte Konfiguration, wenn ein -Backend sich für Bundle MCP anmeldet, damit Hintergrundläufe isoliert bleiben. +Wenn keine MCP-Server aktiviert sind, injiziert OpenClaw dennoch eine strikte Konfiguration, wenn sich ein +Backend für Bundle MCP anmeldet, damit Hintergrundläufe isoliert bleiben. ## Einschränkungen - **Keine direkten OpenClaw-Tool-Aufrufe.** OpenClaw injiziert keine Tool-Aufrufe in - das CLI-Backend-Protokoll. Backends sehen Gateway-Tools nur, wenn sie sich für + das CLI-Backend-Protokoll. Backends sehen Gateway-Tools nur dann, wenn sie sich für `bundleMcp: true` anmelden. -- **Streaming ist backend-spezifisch.** Einige Backends streamen JSONL; andere puffern +- **Streaming ist backend-spezifisch.** Manche Backends streamen JSONL, andere puffern bis zum Beenden. - **Strukturierte Ausgaben** hängen vom JSON-Format der CLI ab. -- **Codex-CLI-Sitzungen** werden per Textausgabe fortgesetzt (kein JSONL), was weniger - strukturiert ist als der anfängliche `--json`-Lauf. OpenClaw-Sitzungen funktionieren weiterhin - normal. +- **Codex-CLI-Sitzungen** werden über Textausgabe fortgesetzt (kein JSONL), was weniger + strukturiert ist als der anfängliche `--json`-Lauf. OpenClaw-Sitzungen funktionieren + weiterhin normal. ## Fehlerbehebung - **CLI nicht gefunden**: Setzen Sie `command` auf einen vollständigen Pfad. -- **Falscher Modellname**: Verwenden Sie `modelAliases`, um `provider/model` → CLI-Modell abzubilden. +- **Falscher Modellname**: Verwenden Sie `modelAliases`, um `provider/model` → CLI-Modell zuzuordnen. - **Keine Sitzungskontinuität**: Stellen Sie sicher, dass `sessionArg` gesetzt ist und `sessionMode` nicht `none` ist (Codex CLI kann derzeit nicht mit JSON-Ausgabe fortsetzen). - **Bilder werden ignoriert**: Setzen Sie `imageArg` (und prüfen Sie, ob die CLI Dateipfade unterstützt). diff --git a/docs/de/providers/google.md b/docs/de/providers/google.md index e91d148ec..1ded94888 100644 --- a/docs/de/providers/google.md +++ b/docs/de/providers/google.md @@ -1,14 +1,14 @@ --- read_when: - - Sie möchten Google-Gemini-Modelle mit OpenClaw verwenden. + - Sie möchten Google Gemini-Modelle mit OpenClaw verwenden. - Sie benötigen den API-Schlüssel oder den OAuth-Authentifizierungsablauf. -summary: Google-Gemini-Einrichtung (API-Schlüssel + OAuth, Bildgenerierung, Medienverständnis, Websuche) +summary: Google Gemini-Einrichtung (API-Schlüssel + OAuth, Bildgenerierung, Medienverständnis, TTS, Websuche) title: Google (Gemini) x-i18n: - generated_at: "2026-04-12T23:31:14Z" + generated_at: "2026-04-16T19:31:07Z" model: gpt-5.4 provider: openai - source_hash: 64b848add89061b208a5d6b19d206c433cace5216a0ca4b63d56496aecbde452 + source_hash: ec2d62855f5e80efda758aad71bcaa95c38b1e41761fa1100d47a06c62881419 source_path: providers/google.md workflow: 15 --- @@ -16,17 +16,17 @@ x-i18n: # Google (Gemini) Das Google-Plugin bietet Zugriff auf Gemini-Modelle über Google AI Studio sowie -Bildgenerierung, Medienverständnis (Bild/Audio/Video) und Websuche über +Bildgenerierung, Medienverständnis (Bild/Audio/Video), Text-to-Speech und Websuche über Gemini Grounding. -- Provider: `google` -- Auth: `GEMINI_API_KEY` oder `GOOGLE_API_KEY` +- Anbieter: `google` +- Authentifizierung: `GEMINI_API_KEY` oder `GOOGLE_API_KEY` - API: Google Gemini API -- Alternativer Provider: `google-gemini-cli` (OAuth) +- Alternativer Anbieter: `google-gemini-cli` (OAuth) ## Erste Schritte -Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrichtungsschritten. +Wählen Sie Ihre bevorzugte Authentifizierungsmethode und befolgen Sie die Einrichtungsschritte. @@ -66,17 +66,17 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrich - Die Umgebungsvariablen `GEMINI_API_KEY` und `GOOGLE_API_KEY` werden beide akzeptiert. Verwenden Sie diejenige, die Sie bereits konfiguriert haben. + Die Umgebungsvariablen `GEMINI_API_KEY` und `GOOGLE_API_KEY` werden beide unterstützt. Verwenden Sie diejenige, die Sie bereits konfiguriert haben. - **Am besten geeignet für:** die Wiederverwendung einer bestehenden Gemini-CLI-Anmeldung über PKCE-OAuth statt eines separaten API-Schlüssels. + **Am besten geeignet für:** die Wiederverwendung einer bestehenden Gemini-CLI-Anmeldung über PKCE OAuth anstelle eines separaten API-Schlüssels. - Der Provider `google-gemini-cli` ist eine inoffizielle Integration. Einige Nutzer - berichten bei dieser Verwendung von OAuth über Kontoeinschränkungen. Die Nutzung erfolgt auf eigenes Risiko. + Der Anbieter `google-gemini-cli` ist eine inoffizielle Integration. Einige Nutzer + berichten von Kontoeinschränkungen, wenn OAuth auf diese Weise verwendet wird. Die Nutzung erfolgt auf eigenes Risiko. @@ -92,7 +92,7 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrich ``` OpenClaw unterstützt sowohl Homebrew-Installationen als auch globale npm-Installationen, einschließlich - gängiger Windows-/npm-Layouts. + gängiger Windows/npm-Layouts. ```bash @@ -117,7 +117,7 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrich (Oder die Varianten `GEMINI_CLI_*`.) - Wenn OAuth-Anfragen der Gemini CLI nach der Anmeldung fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder + Wenn Gemini-CLI-OAuth-Anfragen nach der Anmeldung fehlschlagen, setzen Sie `GOOGLE_CLOUD_PROJECT` oder `GOOGLE_CLOUD_PROJECT_ID` auf dem Gateway-Host und versuchen Sie es erneut. @@ -126,9 +126,9 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrich installiert ist und sich auf `PATH` befindet. - Der reine OAuth-Provider `google-gemini-cli` ist eine separate - Oberfläche für Textinferenz. Bildgenerierung, Medienverständnis und Gemini Grounding bleiben auf - der Provider-ID `google`. + Der reine OAuth-Anbieter `google-gemini-cli` ist eine separate Oberfläche für Textinferenz. + Bildgenerierung, Medienverständnis und Gemini Grounding bleiben auf der + Anbieter-ID `google`. @@ -137,34 +137,35 @@ Wählen Sie Ihre bevorzugte Authentifizierungsmethode und folgen Sie den Einrich | Fähigkeit | Unterstützt | | ---------------------- | ----------------- | -| Chat Completions | Ja | +| Chat-Completions | Ja | | Bildgenerierung | Ja | | Musikgenerierung | Ja | +| Text-to-Speech | Ja | | Bildverständnis | Ja | | Audiotranskription | Ja | | Videoverständnis | Ja | | Websuche (Grounding) | Ja | | Thinking/Reasoning | Ja (Gemini 3.1+) | -| Gemma-4-Modelle | Ja | +| Gemma 4-Modelle | Ja | -Gemma-4-Modelle (zum Beispiel `gemma-4-26b-a4b-it`) unterstützen den Thinking-Modus. OpenClaw -schreibt `thinkingBudget` für Gemma 4 in ein unterstütztes Google-`thinkingLevel` um. +Gemma 4-Modelle (zum Beispiel `gemma-4-26b-a4b-it`) unterstützen den Thinking-Modus. OpenClaw +schreibt `thinkingBudget` in ein unterstütztes Google-`thinkingLevel` für Gemma 4 um. Wenn Thinking auf `off` gesetzt wird, bleibt Thinking deaktiviert, statt auf `MINIMAL` abgebildet zu werden. ## Bildgenerierung -Der gebündelte Provider `google` für Bildgenerierung verwendet standardmäßig +Der gebündelte Bildgenerierungsanbieter `google` verwendet standardmäßig `google/gemini-3.1-flash-image-preview`. -- Unterstützt außerdem `google/gemini-3-pro-image-preview` -- Generieren: bis zu 4 Bilder pro Anfrage +- Unterstützt auch `google/gemini-3-pro-image-preview` +- Generierung: bis zu 4 Bilder pro Anfrage - Bearbeitungsmodus: aktiviert, bis zu 5 Eingabebilder - Geometriesteuerungen: `size`, `aspectRatio` und `resolution` -So verwenden Sie Google als Standard-Provider für Bilder: +So verwenden Sie Google als Standardanbieter für Bilder: ```json5 { @@ -179,20 +180,20 @@ So verwenden Sie Google als Standard-Provider für Bilder: ``` -Siehe [Bildgenerierung](/de/tools/image-generation) für gemeinsame Tool-Parameter, Providerauswahl und Failover-Verhalten. +Siehe [Bildgenerierung](/de/tools/image-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. ## Videogenerierung -Das gebündelte Plugin `google` registriert außerdem Videogenerierung über das gemeinsame +Das gebündelte `google`-Plugin registriert auch Videogenerierung über das gemeinsame Tool `video_generate`. - Standard-Videomodell: `google/veo-3.1-fast-generate-preview` -- Modi: Text-zu-Video, Bild-zu-Video und Referenz-Abläufe mit einem einzelnen Video +- Modi: Text-zu-Video-, Bild-zu-Video- und Einzelvideo-Referenzabläufe - Unterstützt `aspectRatio`, `resolution` und `audio` - Aktuelle Begrenzung der Dauer: **4 bis 8 Sekunden** -So verwenden Sie Google als Standard-Provider für Video: +So verwenden Sie Google als Standardanbieter für Video: ```json5 { @@ -207,22 +208,22 @@ So verwenden Sie Google als Standard-Provider für Video: ``` -Siehe [Videogenerierung](/de/tools/video-generation) für gemeinsame Tool-Parameter, Providerauswahl und Failover-Verhalten. +Siehe [Videogenerierung](/de/tools/video-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. ## Musikgenerierung -Das gebündelte Plugin `google` registriert außerdem Musikgenerierung über das gemeinsame +Das gebündelte `google`-Plugin registriert auch Musikgenerierung über das gemeinsame Tool `music_generate`. - Standard-Musikmodell: `google/lyria-3-clip-preview` -- Unterstützt außerdem `google/lyria-3-pro-preview` +- Unterstützt auch `google/lyria-3-pro-preview` - Prompt-Steuerungen: `lyrics` und `instrumental` -- Ausgabeformat: standardmäßig `mp3`, außerdem `wav` auf `google/lyria-3-pro-preview` +- Ausgabeformat: standardmäßig `mp3`, zusätzlich `wav` auf `google/lyria-3-pro-preview` - Referenzeingaben: bis zu 10 Bilder -- Sitzungsgebundene Läufe werden über den gemeinsamen Task-/Status-Ablauf entkoppelt, einschließlich `action: "status"` +- Sitzungsbasierte Läufe werden über den gemeinsamen Task-/Status-Ablauf getrennt ausgeführt, einschließlich `action: "status"` -So verwenden Sie Google als Standard-Provider für Musik: +So verwenden Sie Google als Standardanbieter für Musik: ```json5 { @@ -237,21 +238,65 @@ So verwenden Sie Google als Standard-Provider für Musik: ``` -Siehe [Musikgenerierung](/de/tools/music-generation) für gemeinsame Tool-Parameter, Providerauswahl und Failover-Verhalten. +Siehe [Musikgenerierung](/de/tools/music-generation) für gemeinsame Tool-Parameter, Anbieterauswahl und Failover-Verhalten. + + +## Text-to-Speech + +Der gebündelte Sprachanbieter `google` verwendet den Gemini-API-TTS-Pfad mit +`gemini-3.1-flash-tts-preview`. + +- Standardstimme: `Kore` +- Authentifizierung: `messages.tts.providers.google.apiKey`, `models.providers.google.apiKey`, `GEMINI_API_KEY` oder `GOOGLE_API_KEY` +- Ausgabe: WAV für reguläre TTS-Anhänge, PCM für Talk/Telefonie +- Native Sprachnachrichten-Ausgabe: auf diesem Gemini-API-Pfad nicht unterstützt, da die API PCM statt Opus zurückgibt + +So verwenden Sie Google als Standardanbieter für TTS: + +```json5 +{ + messages: { + tts: { + auto: "always", + provider: "google", + providers: { + google: { + model: "gemini-3.1-flash-tts-preview", + voiceName: "Kore", + }, + }, + }, + }, +} +``` + +Gemini API TTS akzeptiert ausdrucksstarke Audio-Tags in eckigen Klammern im Text, wie +`[whispers]` oder `[laughs]`. Um Tags aus der sichtbaren Chat-Antwort herauszuhalten und sie gleichzeitig +an TTS zu senden, setzen Sie sie in einen `[[tts:text]]...[[/tts:text]]`-Block: + +```text +Hier ist der saubere Antworttext. + +[[tts:text]][whispers] Hier ist die gesprochene Version.[[/tts:text]] +``` + + +Ein Google-Cloud-Console-API-Schlüssel, der auf die Gemini API beschränkt ist, ist für diesen +Anbieter gültig. Dies ist nicht der separate Cloud-Text-to-Speech-API-Pfad. ## Erweiterte Konfiguration - Für direkte Gemini-API-Läufe (`api: "google-generative-ai"`) übergibt OpenClaw - ein konfiguriertes `cachedContent`-Handle an Gemini-Anfragen. + Bei direkten Gemini-API-Läufen (`api: "google-generative-ai"`) gibt OpenClaw + ein konfiguriertes `cachedContent`-Handle an Gemini-Anfragen weiter. - Konfigurieren Sie pro Modell oder global Parameter mit entweder - `cachedContent` oder dem veralteten `cached_content` + `cachedContent` oder dem älteren `cached_content` - Wenn beide vorhanden sind, hat `cachedContent` Vorrang - Beispielwert: `cachedContents/prebuilt-context` - - Gemini-Cache-Treffer bei der Nutzung werden von OpenClaw in `cacheRead` normalisiert, basierend auf + - Die Gemini-Cache-Treffernutzung wird in OpenClaw-`cacheRead` normalisiert aus dem Upstream-Wert `cachedContentTokenCount` ```json5 @@ -273,14 +318,14 @@ Siehe [Musikgenerierung](/de/tools/music-generation) für gemeinsame Tool-Parame - Wenn der OAuth-Provider `google-gemini-cli` verwendet wird, normalisiert OpenClaw + Bei Verwendung des OAuth-Anbieters `google-gemini-cli` normalisiert OpenClaw die JSON-Ausgabe der CLI wie folgt: - - Antworttext stammt aus dem Feld `response` der CLI-JSON. - - Die Nutzung fällt auf `stats` zurück, wenn die CLI `usage` leer lässt. - - `stats.cached` wird in OpenClaw `cacheRead` normalisiert. - - Wenn `stats.input` fehlt, leitet OpenClaw Eingabetokens aus - `stats.input_tokens - stats.cached` ab. + - Der Antworttext stammt aus dem JSON-Feld `response` der CLI. + - Die Nutzungsdaten greifen auf `stats` zurück, wenn die CLI `usage` leer lässt. + - `stats.cached` wird in OpenClaw-`cacheRead` normalisiert. + - Wenn `stats.input` fehlt, leitet OpenClaw Eingabetoken ab aus + `stats.input_tokens - stats.cached`. @@ -291,19 +336,19 @@ Siehe [Musikgenerierung](/de/tools/music-generation) für gemeinsame Tool-Parame -## Verwandt +## Verwandte Themen - Auswahl von Providern, Modell-Refs und Failover-Verhalten. + Auswahl von Anbietern, Modell-Referenzen und Failover-Verhalten. - Gemeinsame Bild-Tool-Parameter und Providerauswahl. + Gemeinsame Bild-Tool-Parameter und Anbieterauswahl. - Gemeinsame Video-Tool-Parameter und Providerauswahl. + Gemeinsame Video-Tool-Parameter und Anbieterauswahl. - Gemeinsame Musik-Tool-Parameter und Providerauswahl. + Gemeinsame Musik-Tool-Parameter und Anbieterauswahl. diff --git a/docs/de/tools/tts.md b/docs/de/tools/tts.md index 1874baaf7..b31bed15e 100644 --- a/docs/de/tools/tts.md +++ b/docs/de/tools/tts.md @@ -1,81 +1,84 @@ --- read_when: - - Text-zu-Sprache für Antworten aktivieren - - TTS-Provider oder Limits konfigurieren - - '`/tts`-Befehle verwenden' -summary: Text-zu-Sprache (TTS) für ausgehende Antworten -title: Text-zu-Sprache + - Aktivieren von Text-to-Speech für Antworten + - Konfigurieren von TTS-Anbietern oder -Limits + - Verwenden von `/tts`-Befehlen +summary: Text-to-Speech (TTS) für ausgehende Antworten +title: Text-to-Speech x-i18n: - generated_at: "2026-04-12T23:34:19Z" + generated_at: "2026-04-16T19:31:09Z" model: gpt-5.4 provider: openai - source_hash: ad79a6be34879347dc73fdab1bd219823cd7c6aa8504e3e4c73e1a0554c837c5 + source_hash: de7c1dc8831c1ba307596afd48cb4d36f844724887a13b17e35f41ef5174a86f source_path: tools/tts.md workflow: 15 --- -# Text-zu-Sprache (TTS) +# Text-to-Speech (TTS) -OpenClaw kann ausgehende Antworten mit ElevenLabs, Microsoft, MiniMax oder OpenAI in Audio umwandeln. -Das funktioniert überall dort, wo OpenClaw Audio senden kann. +OpenClaw kann ausgehende Antworten mit ElevenLabs, Google Gemini, Microsoft, MiniMax oder OpenAI in Audio umwandeln. +Es funktioniert überall dort, wo OpenClaw Audio senden kann. ## Unterstützte Dienste -- **ElevenLabs** (primärer oder Fallback-Provider) -- **Microsoft** (primärer oder Fallback-Provider; die aktuelle gebündelte Implementierung verwendet `node-edge-tts`) -- **MiniMax** (primärer oder Fallback-Provider; verwendet die T2A-v2-API) -- **OpenAI** (primärer oder Fallback-Provider; wird auch für Zusammenfassungen verwendet) +- **ElevenLabs** (primärer oder Fallback-Anbieter) +- **Google Gemini** (primärer oder Fallback-Anbieter; verwendet Gemini API TTS) +- **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-Sprach-Provider verwendet derzeit den Online- -Neural-TTS-Dienst von Microsoft Edge über die Bibliothek `node-edge-tts`. Es handelt sich um einen gehosteten Dienst (nicht lokal), der Microsoft-Endpunkte verwendet und keinen API-Schlüssel erfordert. +Der gebündelte Microsoft-Sprachanbieter verwendet derzeit den gehosteten +neuronalen TTS-Dienst von Microsoft Edge über die Bibliothek `node-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. Legacy-Konfiguration und Direktiveingaben +aber nicht alle Optionen werden vom Dienst unterstützt. Legacy-Konfiguration und Direktiven-Eingaben mit `edge` funktionieren weiterhin und werden zu `microsoft` normalisiert. -Da dieser Pfad ein öffentlicher Webdienst ohne veröffentlichte SLA oder Kontingente ist, -sollten Sie ihn als Best-Effort behandeln. Wenn Sie garantierte Limits und Support benötigen, verwenden Sie OpenAI +Da dieser Pfad ein öffentlicher Webdienst ohne veröffentlichte SLA oder Quoten ist, +solltest du ihn als Best-Effort betrachten. Wenn du garantierte Limits und Support benötigst, verwende OpenAI oder ElevenLabs. ## Optionale Schlüssel -Wenn Sie OpenAI, ElevenLabs oder MiniMax verwenden möchten: +Wenn du OpenAI, ElevenLabs, Google Gemini oder MiniMax verwenden möchtest: - `ELEVENLABS_API_KEY` (oder `XI_API_KEY`) +- `GEMINI_API_KEY` (oder `GOOGLE_API_KEY`) - `MINIMAX_API_KEY` - `OPENAI_API_KEY` -Microsoft Speech erfordert **keinen** API-Schlüssel. +Microsoft Speech benötigt **keinen** API-Schlüssel. -Wenn mehrere Provider konfiguriert sind, wird zuerst der ausgewählte Provider verwendet, die anderen dienen als Fallback-Optionen. +Wenn mehrere Anbieter konfiguriert sind, wird zuerst der ausgewählte Anbieter verwendet, die anderen dienen als Fallback-Optionen. Die automatische Zusammenfassung verwendet das konfigurierte `summaryModel` (oder `agents.defaults.model.primary`), -daher muss dieser Provider ebenfalls authentifiziert sein, wenn Sie Zusammenfassungen aktivieren. +daher muss dieser Anbieter ebenfalls authentifiziert sein, wenn du Zusammenfassungen aktivierst. -## Dienstlinks +## Dienst-Links -- [OpenAI-Leitfaden für Text-zu-Sprache](https://platform.openai.com/docs/guides/text-to-speech) -- [OpenAI-Audio-API-Referenz](https://platform.openai.com/docs/api-reference/audio) +- [OpenAI Text-to-Speech guide](https://platform.openai.com/docs/guides/text-to-speech) +- [OpenAI Audio API reference](https://platform.openai.com/docs/api-reference/audio) - [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech) - [ElevenLabs Authentication](https://elevenlabs.io/docs/api-reference/authentication) - [MiniMax T2A v2 API](https://platform.minimaxi.com/document/T2A%20V2) - [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts) -- [Microsoft-Speech-Ausgabeformate](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) +- [Microsoft Speech output formats](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) ## Ist es standardmäßig aktiviert? -Nein. Auto‑TTS ist standardmäßig **deaktiviert**. Aktivieren Sie es in der Konfiguration mit +Nein. Auto‑TTS ist standardmäßig **deaktiviert**. Aktiviere es in der Konfiguration mit `messages.tts.auto` oder lokal mit `/tts on`. Wenn `messages.tts.provider` nicht gesetzt ist, wählt OpenClaw den ersten konfigurierten -Speech-Provider in der Auto-Select-Reihenfolge des Registry aus. +Sprachanbieter in der Auto-Select-Reihenfolge des Registrys aus. ## Konfiguration -Die TTS-Konfiguration liegt unter `messages.tts` in `openclaw.json`. -Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/configuration). +Die TTS-Konfiguration befindet sich unter `messages.tts` in `openclaw.json`. +Das vollständige Schema findest du unter [Gateway-Konfiguration](/de/gateway/configuration). -### Minimale Konfiguration (aktivieren + Provider) +### Minimale Konfiguration (Aktivierung + Anbieter) ```json5 { @@ -88,7 +91,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### OpenAI primär mit ElevenLabs als Fallback +### OpenAI als primärer Anbieter mit ElevenLabs als Fallback ```json5 { @@ -129,7 +132,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### Microsoft primär (ohne API-Schlüssel) +### Microsoft als primärer Anbieter (kein API-Schlüssel) ```json5 { @@ -152,7 +155,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### MiniMax primär +### MiniMax als primärer Anbieter ```json5 { @@ -176,6 +179,32 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` +### Google Gemini als primärer Anbieter + +```json5 +{ + messages: { + tts: { + auto: "always", + provider: "google", + providers: { + google: { + apiKey: "gemini_api_key", + model: "gemini-3.1-flash-tts-preview", + voiceName: "Kore", + }, + }, + }, + }, +} +``` + +Google Gemini TTS verwendet den Gemini-API-Schlüsselpfad. Ein API-Schlüssel aus der Google Cloud Console, +der auf die Gemini API beschränkt ist, ist hier gültig, und es ist derselbe Schlüsseltyp, +der vom gebündelten Google-Bildgenerierungsanbieter verwendet wird. Die Auflösungsreihenfolge ist +`messages.tts.providers.google.apiKey` -> `models.providers.google.apiKey` -> +`GEMINI_API_KEY` -> `GOOGLE_API_KEY`. + ### Microsoft Speech deaktivieren ```json5 @@ -207,7 +236,7 @@ Das vollständige Schema finden Sie unter [Gateway-Konfiguration](/de/gateway/co } ``` -### Nur nach einer eingehenden Sprachnachricht mit Audio antworten +### Nur mit Audio antworten nach einer eingehenden Sprachnachricht ```json5 { @@ -237,30 +266,30 @@ Dann ausführen: /tts summary off ``` -### Hinweise zu Feldern +### Hinweise zu den Feldern - `auto`: Auto‑TTS-Modus (`off`, `always`, `inbound`, `tagged`). - - `inbound` sendet nur nach einer eingehenden Sprachnachricht Audio. - - `tagged` sendet nur dann Audio, wenn die Antwort `[[tts:key=value]]`-Direktiven oder einen Block `[[tts:text]]...[[/tts:text]]` enthält. + - `inbound` sendet Audio nur nach einer eingehenden Sprachnachricht. + - `tagged` sendet Audio nur, wenn die Antwort `[[tts:key=value]]`-Direktiven oder einen `[[tts:text]]...[[/tts:text]]`-Block enthält. - `enabled`: Legacy-Schalter (doctor migriert dies zu `auto`). - `mode`: `"final"` (Standard) oder `"all"` (einschließlich Tool-/Block-Antworten). -- `provider`: Speech-Provider-ID wie `"elevenlabs"`, `"microsoft"`, `"minimax"` oder `"openai"` (Fallback erfolgt automatisch). -- Wenn `provider` **nicht gesetzt** ist, verwendet OpenClaw den ersten konfigurierten Speech-Provider in der Auto-Select-Reihenfolge des Registry. -- Legacy `provider: "edge"` funktioniert weiterhin und wird zu `microsoft` normalisiert. +- `provider`: Sprachanbieter-ID wie `"elevenlabs"`, `"google"`, `"microsoft"`, `"minimax"` oder `"openai"` (Fallback erfolgt automatisch). +- Wenn `provider` **nicht gesetzt** ist, verwendet OpenClaw den ersten konfigurierten Sprachanbieter in der Auto-Select-Reihenfolge des Registrys. +- Das Legacy-`provider: "edge"` funktioniert weiterhin und wird zu `microsoft` normalisiert. - `summaryModel`: optionales günstiges Modell für die automatische Zusammenfassung; standardmäßig `agents.defaults.model.primary`. - Akzeptiert `provider/model` oder einen konfigurierten Modellalias. - `modelOverrides`: erlaubt dem Modell, TTS-Direktiven auszugeben (standardmäßig aktiviert). - - `allowProvider` ist standardmäßig `false` (Provider-Wechsel ist Opt-in). -- `providers.`: Provider-eigene Einstellungen, verschlüsselt nach Speech-Provider-ID. -- Legacy-direkte Provider-Blöcke (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) werden beim Laden automatisch zu `messages.tts.providers.` migriert. + - `allowProvider` ist standardmäßig `false` (Anbieterwechsel ist Opt-in). +- `providers.`: anbieterinterne Einstellungen, verschlüsselt nach Sprachanbieter-ID. +- Legacy-direkte Anbieterblöcke (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) werden beim Laden automatisch zu `messages.tts.providers.` migriert. - `maxTextLength`: harte Obergrenze für TTS-Eingaben (Zeichen). `/tts audio` schlägt fehl, wenn diese überschritten wird. - `timeoutMs`: Anfrage-Timeout (ms). -- `prefsPath`: überschreibt den lokalen Prefs-JSON-Pfad (Provider/Limit/Zusammenfassung). -- `apiKey`-Werte verwenden Env-Variablen als Fallback (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`). -- `providers.elevenlabs.baseUrl`: überschreibt die ElevenLabs-API-Base-URL. +- `prefsPath`: überschreibt den lokalen JSON-Pfad für Prefs (Anbieter/Limit/Zusammenfassung). +- `apiKey`-Werte greifen auf Umgebungsvariablen zurück (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_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. + - Nicht standardmäßige Werte werden als OpenAI-kompatible TTS-Endpunkte behandelt, daher werden benutzerdefinierte Modell- und Stimmnamen akzeptiert. - `providers.elevenlabs.voiceSettings`: - `stability`, `similarityBoost`, `style`: `0..1` - `useSpeakerBoost`: `true|false` @@ -268,39 +297,43 @@ Dann ausführen: - `providers.elevenlabs.applyTextNormalization`: `auto|on|off` - `providers.elevenlabs.languageCode`: 2-stelliger ISO-639-1-Code (z. B. `en`, `de`) - `providers.elevenlabs.seed`: Ganzzahl `0..4294967295` (Best-Effort-Determinismus) -- `providers.minimax.baseUrl`: überschreibt die MiniMax-API-Base-URL (Standard `https://api.minimax.io`, Env: `MINIMAX_API_HOST`). -- `providers.minimax.model`: TTS-Modell (Standard `speech-2.8-hd`, Env: `MINIMAX_TTS_MODEL`). -- `providers.minimax.voiceId`: Voice-Kennung (Standard `English_expressive_narrator`, Env: `MINIMAX_TTS_VOICE_ID`). +- `providers.minimax.baseUrl`: überschreibt die MiniMax-API-Basis-URL (Standard `https://api.minimax.io`, Umgebungsvariable: `MINIMAX_API_HOST`). +- `providers.minimax.model`: TTS-Modell (Standard `speech-2.8-hd`, Umgebungsvariable: `MINIMAX_TTS_MODEL`). +- `providers.minimax.voiceId`: Stimmkennung (Standard `English_expressive_narrator`, Umgebungsvariable: `MINIMAX_TTS_VOICE_ID`). - `providers.minimax.speed`: Wiedergabegeschwindigkeit `0.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.google.model`: Gemini-TTS-Modell (Standard `gemini-3.1-flash-tts-preview`). +- `providers.google.voiceName`: Name der vorgefertigten Gemini-Stimme (Standard `Kore`; `voice` wird ebenfalls akzeptiert). +- `providers.google.baseUrl`: überschreibt die Gemini-API-Basis-URL. Nur `https://generativelanguage.googleapis.com` wird akzeptiert. + - Wenn `messages.tts.providers.google.apiKey` ausgelassen wird, kann TTS vor dem Fallback auf Umgebungsvariablen `models.providers.google.apiKey` wiederverwenden. - `providers.microsoft.enabled`: erlaubt die Verwendung von Microsoft Speech (Standard `true`; kein API-Schlüssel). -- `providers.microsoft.voice`: Name der neuronalen Microsoft-Voice (z. B. `en-US-MichelleNeural`). +- `providers.microsoft.voice`: Name der neuronalen Microsoft-Stimme (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-Ausgabeformate; nicht alle Formate werden vom gebündelten, Edge-basierten Transport unterstützt. + - Siehe Microsoft Speech output formats für gültige Werte; 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`: JSON-Untertitel zusammen mit der Audiodatei schreiben. +- `providers.microsoft.saveSubtitles`: schreibt JSON-Untertitel zusammen mit der Audiodatei. - `providers.microsoft.proxy`: Proxy-URL für Microsoft-Speech-Anfragen. -- `providers.microsoft.timeoutMs`: Überschreibung des Anfrage-Timeouts (ms). +- `providers.microsoft.timeoutMs`: überschreibt das Anfrage-Timeout (ms). - `edge.*`: Legacy-Alias für dieselben Microsoft-Einstellungen. -## Modellgesteuerte Überschreibungen (standardmäßig aktiviert) +## Modellgesteuerte Overrides (standardmäßig aktiviert) Standardmäßig **kann** das Modell TTS-Direktiven für eine einzelne Antwort ausgeben. Wenn `messages.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, plus optional einen Block `[[tts:text]]...[[/tts:text]]`, um -ausdrucksstarke Tags (Lachen, Gesangshinweise usw.) bereitzustellen, die nur im +Wenn aktiviert, kann das Modell `[[tts:...]]`-Direktiven ausgeben, um die Stimme +für eine einzelne Antwort zu überschreiben, sowie optional einen `[[tts:text]]...[[/tts:text]]`-Block, +um expressive Tags (Lachen, Gesangshinweise usw.) bereitzustellen, die nur im Audio erscheinen sollen. `provider=...`-Direktiven werden ignoriert, sofern nicht `modelOverrides.allowProvider: true` gesetzt ist. -Beispiel-Payload für eine Antwort: +Beispiel für eine Antwort-Payload: ``` -Hier ist es. +Hier ist sie. [[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]] [[tts:text]](lacht) Lies das Lied noch einmal vor.[[/tts:text]] @@ -308,9 +341,9 @@ Hier ist es. Verfügbare Direktivschlüssel (wenn aktiviert): -- `provider` (registrierte Speech-Provider-ID, zum Beispiel `openai`, `elevenlabs`, `minimax` oder `microsoft`; erfordert `allowProvider: true`) -- `voice` (OpenAI-Voice) oder `voiceId` (ElevenLabs / MiniMax) -- `model` (OpenAI-TTS-Modell, ElevenLabs-Modell-ID oder MiniMax-Modell) +- `provider` (registrierte Sprachanbieter-ID, zum Beispiel `openai`, `elevenlabs`, `google`, `minimax` oder `microsoft`; erfordert `allowProvider: true`) +- `voice` (OpenAI-Stimme), `voiceName` / `voice_name` / `google_voice` (Google-Stimme) oder `voiceId` (ElevenLabs / MiniMax) +- `model` (OpenAI-TTS-Modell, ElevenLabs-Modell-ID oder MiniMax-Modell) oder `google_model` (Google-TTS-Modell) - `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost` - `vol` / `volume` (MiniMax-Lautstärke, 0-10) - `pitch` (MiniMax-Tonhöhe, -12 bis 12) @@ -318,7 +351,7 @@ Verfügbare Direktivschlüssel (wenn aktiviert): - `languageCode` (ISO 639-1) - `seed` -Alle Modellüberschreibungen deaktivieren: +Alle modellgesteuerten Overrides deaktivieren: ```json5 { @@ -332,7 +365,7 @@ Alle Modellüberschreibungen deaktivieren: } ``` -Optionale Allowlist (Provider-Wechsel aktivieren, während andere Einstellungen konfigurierbar bleiben): +Optionale Allowlist (Anbieterwechsel aktivieren, während andere Parameter weiterhin konfigurierbar bleiben): ```json5 { @@ -348,9 +381,9 @@ Optionale Allowlist (Provider-Wechsel aktivieren, während andere Einstellungen } ``` -## Benutzerbezogene Einstellungen +## Benutzerspezifische Einstellungen -Slash-Befehle schreiben lokale Überschreibungen nach `prefsPath` (Standard: +Slash-Befehle schreiben lokale Overrides nach `prefsPath` (Standard: `~/.openclaw/settings/tts.json`, überschreibbar mit `OPENCLAW_TTS_PREFS` oder `messages.tts.prefsPath`). @@ -358,7 +391,7 @@ Gespeicherte Felder: - `enabled` - `provider` -- `maxLength` (Zusammenfassungsschwelle; Standard 1500 Zeichen) +- `maxLength` (Schwellenwert für Zusammenfassungen; Standard 1500 Zeichen) - `summarize` (Standard `true`) Diese überschreiben `messages.tts.*` für diesen Host. @@ -366,26 +399,27 @@ Diese überschreiben `messages.tts.*` für diesen Host. ## Ausgabeformate (fest) - **Feishu / Matrix / Telegram / WhatsApp**: Opus-Sprachnachricht (`opus_48000_64` von ElevenLabs, `opus` von OpenAI). - - 48 kHz / 64 kbit/s ist ein guter Kompromiss für Sprachnachrichten. -- **Andere Channels**: MP3 (`mp3_44100_128` von ElevenLabs, `mp3` von OpenAI). - - 44,1 kHz / 128 kbit/s ist die Standardbalance für Sprachverständlichkeit. -- **MiniMax**: MP3 (Modell `speech-2.8-hd`, 32-kHz-Abtastrate). Voice-Note-Format wird nativ nicht unterstützt; verwenden Sie OpenAI oder ElevenLabs für garantiert Opus-Sprachnachrichten. + - 48 kHz / 64 kbps ist ein guter Kompromiss für Sprachnachrichten. +- **Andere Kanäle**: MP3 (`mp3_44100_128` von ElevenLabs, `mp3` von OpenAI). + - 44,1 kHz / 128 kbps ist die Standardbalance für Sprachverständlichkeit. +- **MiniMax**: MP3 (`speech-2.8-hd`-Modell, 32-kHz-Abtastrate). Voice-Note-Format wird nativ nicht unterstützt; verwende OpenAI oder ElevenLabs für garantierte Opus-Sprachnachrichten. +- **Google Gemini**: Gemini API TTS gibt rohes 24-kHz-PCM zurück. OpenClaw verpackt es als WAV für Audioanhänge und gibt PCM direkt für Talk/Telephonie zurück. Das native Opus-Voice-Note-Format wird auf diesem Weg nicht unterstützt. - **Microsoft**: verwendet `microsoft.outputFormat` (Standard `audio-24khz-48kbitrate-mono-mp3`). - Der gebündelte Transport akzeptiert ein `outputFormat`, aber nicht alle Formate sind vom Dienst verfügbar. - - Werte für Ausgabeformate folgen den Microsoft-Speech-Ausgabeformaten (einschließlich Ogg/WebM Opus). - - Telegram `sendVoice` akzeptiert OGG/MP3/M4A; verwenden Sie OpenAI/ElevenLabs, wenn Sie - garantiert Opus-Sprachnachrichten benötigen. + - Werte für das Ausgabeformat entsprechen den Microsoft Speech output formats (einschließlich Ogg/WebM Opus). + - Telegram `sendVoice` akzeptiert OGG/MP3/M4A; verwende OpenAI/ElevenLabs, wenn du + garantierte Opus-Sprachnachrichten benötigst. - Wenn das konfigurierte Microsoft-Ausgabeformat fehlschlägt, versucht OpenClaw es erneut mit MP3. -OpenAI-/ElevenLabs-Ausgabeformate sind pro Channel fest vorgegeben (siehe oben). +Die OpenAI-/ElevenLabs-Ausgabeformate sind je Kanal festgelegt (siehe oben). -## Auto-TTS-Verhalten +## Verhalten von Auto-TTS -Wenn aktiviert, tut OpenClaw Folgendes: +Wenn aktiviert, führt OpenClaw Folgendes aus: - überspringt TTS, wenn die Antwort bereits Medien oder eine `MEDIA:`-Direktive enthält. - überspringt sehr kurze Antworten (< 10 Zeichen). -- fasst lange Antworten zusammen, wenn aktiviert, unter Verwendung von `agents.defaults.model.primary` (oder `summaryModel`). +- fasst lange Antworten bei Aktivierung mit `agents.defaults.model.primary` (oder `summaryModel`) zusammen. - hängt das generierte Audio an die Antwort an. Wenn die Antwort `maxLength` überschreitet und die Zusammenfassung deaktiviert ist (oder kein API-Schlüssel für das @@ -398,7 +432,7 @@ Zusammenfassungsmodell vorhanden ist), wird Audio Antwort -> TTS aktiviert? nein -> Text senden ja -> Medien / MEDIA: / kurz vorhanden? - ja -> Text senden + ja -> Text senden nein -> Länge > Limit? nein -> TTS -> Audio anhängen ja -> Zusammenfassung aktiviert? @@ -407,13 +441,13 @@ Antwort -> TTS aktiviert? -> TTS -> Audio anhängen ``` -## Verwendung des Slash-Befehls +## Verwendung von Slash-Befehlen -Es gibt einen einzelnen Befehl: `/tts`. -Einzelheiten zur Aktivierung finden Sie unter [Slash-Befehle](/de/tools/slash-commands). +Es gibt einen einzigen Befehl: `/tts`. +Details zur Aktivierung findest du unter [Slash-Befehle](/de/tools/slash-commands). -Hinweis zu Discord: `/tts` ist ein integrierter Discord-Befehl, daher registriert OpenClaw dort -`/voice` als nativen Befehl. Textbasiertes `/tts ...` funktioniert weiterhin. +Hinweis zu Discord: `/tts` ist ein integrierter Discord-Befehl, daher registriert OpenClaw +dort `/voice` als nativen Befehl. Textbasiertes `/tts ...` funktioniert weiterhin. ``` /tts off @@ -431,22 +465,22 @@ Hinweise: - `commands.text` oder die Registrierung nativer Befehle muss aktiviert sein. - Die Konfiguration `messages.tts.auto` akzeptiert `off|always|inbound|tagged`. - `/tts on` schreibt die lokale TTS-Einstellung auf `always`; `/tts off` schreibt sie auf `off`. -- Verwenden Sie die Konfiguration, wenn Sie `inbound`- oder `tagged`-Standards wünschen. +- Verwende die Konfiguration, wenn du `inbound`- oder `tagged`-Standards möchtest. - `limit` und `summary` werden in lokalen Prefs gespeichert, nicht in der Hauptkonfiguration. -- `/tts audio` erzeugt eine einmalige Audioantwort (aktiviert TTS nicht dauerhaft). -- `/tts status` enthält Sichtbarkeit des Fallbacks für den letzten Versuch: - - erfolgreicher Fallback: `Fallback: -> ` plus `Attempts: ...` +- `/tts audio` erzeugt eine einmalige Audioantwort (aktiviert TTS nicht). +- `/tts status` enthält Fallback-Sichtbarkeit für den letzten Versuch: + - erfolgreiches Fallback: `Fallback: -> ` plus `Attempts: ...` - Fehler: `Error: ...` plus `Attempts: ...` - detaillierte Diagnose: `Attempt details: provider:outcome(reasonCode) latency` -- OpenAI- und ElevenLabs-API-Fehler enthalten jetzt geparste Provider-Fehlerdetails und die Anfrage-ID (wenn vom Provider zurückgegeben), die in TTS-Fehlern/Logs angezeigt werden. +- Fehler von OpenAI- und ElevenLabs-APIs enthalten jetzt geparste Anbieterdetails und die Request-ID (wenn vom Anbieter zurückgegeben), die in TTS-Fehlern/Logs angezeigt werden. ## Agent-Tool Das Tool `tts` wandelt Text in Sprache um und gibt einen Audioanhang für -die Zustellung der Antwort zurück. Wenn der Channel Feishu, Matrix, Telegram oder WhatsApp ist, +die Antwortzustellung zurück. Wenn der Kanal Feishu, Matrix, Telegram oder WhatsApp ist, wird das Audio als Sprachnachricht statt als Dateianhang zugestellt. -## Gateway-RPC +## Gateway RPC Gateway-Methoden: