Skip to main content
OpenClaw convertit les réponses sortantes en audio avec 14 fournisseurs de synthèse vocale : messages vocaux natifs sur Feishu, Matrix, Telegram et WhatsApp ; pièces jointes audio partout ailleurs ; et flux PCM/Ulaw pour la téléphonie et Talk. La synthèse vocale constitue la partie sortie vocale du mode stt-tts de Talk (talk.speak appelle ce même chemin de synthèse). Les sessions Talk realtime natives du fournisseur synthétisent la parole au sein du fournisseur en temps réel ; les sessions transcription ne synthétisent jamais de réponse vocale de l’assistant.

Démarrage rapide

1

Choisir un fournisseur

OpenAI et ElevenLabs sont les options hébergées les plus fiables. Microsoft et la CLI locale fonctionnent sans clé d’API. Consultez la matrice des fournisseurs pour obtenir la liste complète.
2

Définir la clé d’API

Exportez la variable d’environnement de votre fournisseur (par exemple OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft et la CLI locale ne nécessitent aucune clé.
3

Activer dans la configuration

Définissez messages.tts.auto: "always" et messages.tts.provider :
4

Essayer dans le chat

/tts status affiche l’état actuel. /tts audio Hello from OpenClaw envoie une réponse audio ponctuelle.
La synthèse vocale automatique est désactivée par défaut. Lorsque messages.tts.provider n’est pas défini, OpenClaw choisit le premier fournisseur configuré selon l’ordre de sélection automatique du registre. L’outil d’agent intégré tts ne répond qu’aux intentions explicites : les échanges ordinaires restent textuels, sauf si l’utilisateur demande de l’audio, utilise /tts ou active la synthèse vocale automatique/par directive.

Fournisseurs pris en charge

Si plusieurs fournisseurs sont configurés, celui qui est sélectionné est utilisé en premier et les autres servent de solutions de secours. Le résumé automatique utilise summaryModel (ou agents.defaults.model.primary) ; ce fournisseur doit donc également être authentifié si vous laissez les résumés activés.
Le fournisseur Microsoft inclus utilise le service en ligne de synthèse vocale neuronale de Microsoft Edge via node-edge-tts. Il s’agit d’un service web public sans SLA ni quota publiés — considérez-le comme un service fourni au mieux. L’identifiant de fournisseur hérité edge est normalisé en microsoft et openclaw doctor --fix réécrit la configuration persistante ; les nouvelles configurations doivent toujours utiliser microsoft.

Configuration

La configuration de la synthèse vocale se trouve sous messages.tts dans ~/.openclaw/openclaw.json. Choisissez un préréglage et adaptez le bloc du fournisseur. Les champs speakerVoice/speakerVoiceId présentés ci-dessous sont canoniques ; les noms de champs voice/voiceId/ voiceName propres à chaque fournisseur continuent de fonctionner comme alias hérités.
Pour Xiaomi mimo-v2.5-tts-voicedesign, omettez speakerVoice et définissez style sur l’invite de conception vocale. OpenClaw envoie cette invite comme message user de synthèse vocale et n’envoie pas audio.voice pour le modèle voicedesign.

Remplacements de voix par agent

Utilisez agents.list[].tts lorsqu’un agent doit parler avec un fournisseur, une voix, un modèle, une persona ou un mode TTS automatique différent. Le bloc de l’agent est fusionné récursivement par-dessus messages.tts, de sorte que les identifiants du fournisseur peuvent rester dans la configuration globale du fournisseur :
Pour épingler une persona par agent, définissez agents.list[].tts.persona avec la configuration du fournisseur : cette valeur remplace la valeur globale messages.tts.persona pour cet agent uniquement. Ordre de priorité pour les réponses automatiques, /tts audio, /tts status et l’outil d’agent tts :
  1. messages.tts
  2. agents.list[].tts actif
  3. remplacement du canal, lorsque le canal prend en charge channels.<channel>.tts
  4. remplacement du compte, lorsque le canal transmet channels.<channel>.accounts.<id>.tts
  5. préférences /tts locales pour cet hôte
  6. directives [[tts:...]] intégrées lorsque les remplacements pilotés par le modèle sont activés
Les remplacements de canal et de compte utilisent la même structure que messages.tts et sont fusionnés récursivement par-dessus les couches précédentes. Les identifiants partagés du fournisseur peuvent ainsi rester dans messages.tts, tandis qu’un canal ou un compte de bot ne modifie que la voix du locuteur, le modèle, la persona ou le mode automatique :

Personas

Une persona est une identité vocale stable qui peut être appliquée de manière déterministe entre les fournisseurs. Elle peut privilégier un fournisseur, définir une intention d’invite indépendante du fournisseur et comporter des liaisons propres à chaque fournisseur pour les voix, les modèles, les modèles d’invite, les graines et les paramètres vocaux.

Persona minimale

Persona complète (invite indépendante du fournisseur)

Résolution de la persona

La persona active est sélectionnée de manière déterministe :
  1. préférence locale /tts persona <id>, si elle est définie.
  2. messages.tts.persona, si elle est définie.
  3. Aucune persona.
La sélection du fournisseur donne la priorité aux valeurs explicites :
  1. Remplacements directs (CLI, Gateway, Talk, directives TTS autorisées).
  2. Préférence locale /tts provider <id>.
  3. provider de la persona active.
  4. messages.tts.provider.
  5. Sélection automatique par le registre.
Pour chaque tentative de fournisseur, OpenClaw fusionne les configurations dans cet ordre :
  1. messages.tts.providers.<id>
  2. messages.tts.personas.<persona>.providers.<id>
  3. Remplacements de requête fiables
  4. Remplacements autorisés des directives TTS émises par le modèle

Utilisation des invites de persona par les fournisseurs

Les champs d’invite de persona (profile, scene, sampleContext, style, accent, pacing, constraints) sont indépendants du fournisseur. Chaque fournisseur décide de leur utilisation :
Encapsule les champs d’invite de persona dans une structure d’invite TTS Gemini uniquement lorsque la configuration effective du fournisseur Google définit promptTemplate: "audio-profile-v1" ou personaPrompt. Les anciens champs audioProfile et speakerName sont toujours ajoutés en préfixe sous forme de texte d’invite propre à Google. Les balises audio intégrées telles que [whispers] ou [laughs] dans un bloc [[tts:text]] sont conservées dans la transcription Gemini ; OpenClaw ne génère pas ces balises.
Associe les champs d’invite de persona au champ instructions de la requête **uniquement lorsqu’**aucune valeur OpenAI instructions explicite n’est configurée. Une valeur instructions explicite est toujours prioritaire.
Utilisent uniquement les liaisons de persona propres au fournisseur sous personas.<id>.providers.<provider>. Les champs d’invite de persona sont ignorés, sauf si le fournisseur met en œuvre sa propre association d’invite de persona.

Politique de repli

fallbackPolicy contrôle le comportement lorsqu’une persona ne possède aucune liaison pour le fournisseur tenté : La requête TTS complète n’échoue que lorsque tous les fournisseurs tentés sont ignorés ou échouent. La sélection du fournisseur d’une session Talk est limitée à la session. Un client Talk doit choisir les identifiants de fournisseur, de modèle et de voix ainsi que les paramètres régionaux dans talk.catalog, puis les transmettre par l’intermédiaire de la requête de session ou de transfert Talk. L’ouverture d’une session vocale ne doit pas modifier messages.tts ni les valeurs globales par défaut du fournisseur Talk.

Directives pilotées par le modèle

Par défaut, l’assistant peut émettre des directives [[tts:...]] pour remplacer la voix, le modèle ou la vitesse pour une seule réponse, ainsi qu’un bloc facultatif [[tts:text]]...[[/tts:text]] pour les indications expressives qui doivent apparaître uniquement dans l’audio :
Lorsque messages.tts.auto vaut "tagged", les directives sont obligatoires pour déclencher l’audio. La diffusion des blocs en continu supprime les directives du texte visible avant que le canal ne les reçoive, même lorsqu’elles sont réparties entre des blocs adjacents. provider=... est ignoré sauf si modelOverrides.allowProvider: true. Lorsqu’une réponse déclare provider=..., les autres clés de cette directive sont analysées uniquement par ce fournisseur ; les clés non prises en charge sont supprimées et signalées comme avertissements de directive TTS. Clés de directive disponibles :
  • provider (identifiant de fournisseur enregistré ; nécessite allowProvider: true)
  • speakerVoice / speakerVoiceId (anciens alias : voice, voiceName, voice_name, google_voice, voiceId)
  • model / google_model
  • stability, similarityBoost, style, speed, useSpeakerBoost
  • vol / volume (volume MiniMax, (0, 10])
  • pitch (hauteur MiniMax entière, de −12 à 12 ; les valeurs fractionnaires sont tronquées)
  • emotion (balise d’émotion Volcengine)
  • applyTextNormalization (auto|on|off)
  • languageCode (ISO 639-1)
  • seed
Désactiver entièrement les remplacements par le modèle :
Autoriser le changement de fournisseur tout en conservant les autres paramètres configurables :

Commandes à barre oblique

Commande unique /tts. Sur Discord, OpenClaw enregistre également /voice, car /tts est une commande Discord intégrée ; la commande textuelle /tts ... fonctionne toujours.
Les commandes nécessitent un expéditeur autorisé (les règles de liste d’autorisation et de propriétaire s’appliquent), et commands.text ou l’enregistrement natif des commandes doit être activé.
Remarques sur le comportement :
  • /tts on écrit la préférence TTS locale dans always ; /tts off l’écrit dans off.
  • /tts chat on|off|default écrit un remplacement TTS automatique limité à la session pour la discussion actuelle.
  • /tts persona <id> écrit la préférence locale de persona ; /tts persona off l’efface.
  • /tts latest lit la dernière réponse de l’assistant dans la transcription de la session actuelle et l’envoie une fois sous forme audio. Seul un hachage de cette réponse est stocké dans l’entrée de session afin d’éviter les envois vocaux en double.
  • /tts audio génère une réponse audio ponctuelle (n’active pas le TTS).
  • /tts limit <chars> accepte 100–4096 (4096 correspond au maximum de légende ou de message Telegram) ; les valeurs hors de cette plage sont rejetées.
  • limit et summary sont stockés dans les préférences locales, et non dans la configuration principale.
  • /tts status inclut les diagnostics de repli de la dernière tentative : Fallback: <primary> -> <used>, Attempts: ... et les détails de chaque tentative (provider:outcome(reasonCode) latency).
  • /status affiche le mode TTS actif ainsi que le fournisseur, le modèle, la voix et les métadonnées nettoyées du point de terminaison personnalisé configurés lorsque le TTS est activé.

Préférences par utilisateur

Les commandes à barre oblique écrivent les remplacements locaux dans prefsPath. La valeur par défaut est ~/.openclaw/settings/tts.json ; remplacez-la avec la variable d’environnement OPENCLAW_TTS_PREFS ou messages.tts.prefsPath. Ces valeurs remplacent la configuration effective issue de messages.tts, ainsi que le bloc agents.list[].tts actif pour cet hôte.

Formats de sortie

La diffusion vocale TTS dépend des capacités du canal. Les plugins de canal indiquent si le TTS de type vocal doit demander aux fournisseurs une cible voice-note native ou conserver la synthèse audio-file normale, et si le canal transcode la sortie non native avant l’envoi. Remarques par fournisseur :
  • Transcodage Feishu / WhatsApp : lorsqu’une réponse sous forme de message vocal arrive au format MP3/WebM/WAV/M4A ou dans un autre fichier probablement audio, le plugin de canal la transcode en Ogg/Opus 48 kHz avec ffmpeg (libopus, 64 kbps) avant d’envoyer le message vocal natif. WhatsApp envoie le résultat au moyen de la charge utile Baileys audio avec ptt: true et audio/ogg; codecs=opus. En cas d’échec du transcodage : Feishu intercepte l’erreur et envoie à la place le fichier d’origine comme simple pièce jointe ; WhatsApp ne dispose d’aucune solution de repli, l’envoi lui-même échoue donc au lieu de publier une charge utile PTT incompatible.
  • MiniMax : MP3 (modèle speech-2.8-hd, fréquence d’échantillonnage de 32 kHz) pour les pièces jointes audio normales ; transcodé en Opus 48 kHz avec ffmpeg pour les cibles de message vocal annoncées par le canal.
  • Xiaomi MiMo : MP3 par défaut, ou WAV selon la configuration ; transcodé en Opus 48 kHz avec ffmpeg pour les cibles de message vocal annoncées par le canal.
  • CLI locale : utilise le outputFormat configuré. Les cibles de message vocal sont converties en Ogg/Opus et la sortie téléphonique est convertie en PCM mono brut 16 kHz avec ffmpeg.
  • Google Gemini : renvoie du PCM brut 24 kHz. OpenClaw l’encapsule au format WAV pour les pièces jointes audio, le transcode en Opus 48 kHz pour les cibles de message vocal et renvoie directement le PCM pour Talk/la téléphonie.
  • Gradium : WAV pour les pièces jointes audio, Opus pour les cibles de message vocal et ulaw_8000 à 8 kHz pour la téléphonie.
  • Inworld : MP3 pour les pièces jointes audio normales, OGG_OPUS natif pour les cibles de message vocal et PCM brut à 22050 Hz pour Talk/la téléphonie.
  • xAI : MP3 par défaut ; la synthèse de fichiers audio peut utiliser mp3, wav, pcm, mulaw ou alaw pour les sorties mises en mémoire tampon comme pour les sorties en streaming. Les cibles de message vocal utilisent le MP3 pour le streaming et comme solution de repli mise en mémoire tampon, car les sorties pcm, mulaw et alaw de xAI sont des données audio brutes sans en-tête. La synthèse mise en mémoire tampon utilise le point de terminaison REST par lot /v1/tts de xAI ; textToSpeechStream utilise le wss://api.x.ai/v1/tts natif. Il ne s’agit pas du contrat vocal en temps réel. Le format vocal Opus natif n’est pas pris en charge.
  • Microsoft : utilise microsoft.outputFormat (audio-24khz-48kbitrate-mono-mp3 par défaut).
    • Le transport intégré accepte un outputFormat, mais tous les formats ne sont pas disponibles auprès du service.
    • Les valeurs du format de sortie suivent les formats de sortie de Microsoft Speech (notamment Ogg/WebM Opus).
    • Le sendVoice de Telegram accepte OGG/MP3/M4A ; utilisez OpenAI/ElevenLabs si vous avez besoin de messages vocaux Opus garantis.
    • Si le format de sortie Microsoft configuré échoue, OpenClaw réessaie en MP3.
    • Lorsqu’aucun remplacement vocal explicite n’est défini et que la voix anglaise par défaut est utilisée, OpenClaw bascule automatiquement vers une voix neuronale chinoise (zh-CN-XiaoxiaoNeural, paramètres régionaux zh-CN) si le texte de la réponse est majoritairement en caractères CJK.
Les formats de sortie d’OpenAI et d’ElevenLabs sont fixes pour chaque canal, comme indiqué ci-dessus.

Comportement du TTS automatique

Lorsque messages.tts.auto est activé, OpenClaw :
  • Ignore la synthèse vocale si la réponse contient déjà des médias structurés.
  • Ignore les réponses très courtes (moins de 10 caractères).
  • Résume les réponses longues lorsque les résumés sont activés, à l’aide de summaryModel (ou agents.defaults.model.primary).
  • Joint l’audio généré à la réponse.
  • Dans mode: "final", envoie toujours une synthèse vocale uniquement audio pour les réponses finales diffusées en continu une fois la diffusion du texte terminée ; le média généré passe par la même normalisation des médias du canal que les pièces jointes habituelles des réponses.
Si la réponse dépasse maxLength, OpenClaw n’omet jamais complètement l’audio :
  • Résumé activé (par défaut) et un modèle de résumé est disponible : résume le texte à environ maxLength caractères, puis synthétise le résumé.
  • Résumé désactivé, échec du résumé ou aucune clé API disponible pour le modèle de résumé : tronque le texte à maxLength caractères et synthétise le texte tronqué.

Référence des champs

"off" | "always" | "inbound" | "tagged"
Mode de synthèse vocale automatique. inbound n’envoie l’audio qu’après un message vocal entrant ; tagged n’envoie l’audio que lorsque la réponse comprend des directives [[tts:...]] ou un bloc [[tts:text]].
boolean
obsolète
Ancienne option d’activation. openclaw doctor --fix la migre vers auto.
"final" | "all"
défaut:"final"
"all" inclut les réponses des outils/blocs en plus des réponses finales.
string
Identifiant du fournisseur vocal. Lorsqu’il n’est pas défini, OpenClaw utilise le premier fournisseur configuré selon l’ordre de sélection automatique du registre. L’ancienne valeur provider: "edge" est réécrite en "microsoft" par openclaw doctor --fix.
string
Identifiant du personnage actif provenant de personas. Normalisé en minuscules.
object
Identité vocale stable. Champs : label, description, provider, fallbackPolicy, prompt, providers.<provider>. Consultez Personnages.
string
Modèle économique pour le résumé automatique ; la valeur par défaut est agents.defaults.model.primary. Accepte provider/model ou un alias de modèle configuré.
object
Autorise le modèle à émettre des directives de synthèse vocale. enabled a pour valeur par défaut true ; allowProvider a pour valeur par défaut false.
object
Paramètres appartenant au fournisseur, indexés par identifiant de fournisseur vocal. Les anciens blocs directs (messages.tts.openai, .elevenlabs, .microsoft, .edge) sont réécrits par openclaw doctor --fix ; validez uniquement messages.tts.providers.<id>.
number
défaut:"4096"
Limite stricte du nombre de caractères en entrée de la synthèse vocale. /tts audio, tts.convert et tts.speak échouent si elle est dépassée.
number
défaut:"30000"
Délai d’expiration de la requête en millisecondes. Une valeur timeoutMs propre à l’appel (outil de l’agent, Gateway) prévaut lorsqu’elle est définie ; sinon, une valeur messages.tts.timeoutMs explicitement configurée prévaut sur toute valeur par défaut du fournisseur définie par un Plugin.
string
Remplace le chemin local du fichier JSON de préférences (fournisseur/limite/résumé). Valeur par défaut : ~/.openclaw/settings/tts.json.
string
Variable d’environnement : AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY ou SPEECH_KEY.
string
Région Azure Speech (par exemple eastus). Variable d’environnement : AZURE_SPEECH_REGION ou SPEECH_REGION.
string
Remplacement facultatif du point de terminaison Azure Speech (alias baseUrl).
string
ShortName de la voix Azure. Valeur par défaut : en-US-JennyNeural. Ancien alias : voice.
string
Code de langue SSML. Valeur par défaut : en-US.
string
Valeur Azure X-Microsoft-OutputFormat pour l’audio standard. Valeur par défaut : audio-24khz-48kbitrate-mono-mp3.
string
Valeur Azure X-Microsoft-OutputFormat pour la sortie des notes vocales. Valeur par défaut : ogg-24khz-16bit-mono-opus.
string
Se rabat sur ELEVENLABS_API_KEY ou XI_API_KEY.
string
Identifiant du modèle. Valeur par défaut : eleven_multilingual_v2. Les anciens identifiants eleven_turbo_v2_5/eleven_turbo_v2 sont normalisés vers le modèle flash correspondant.
string
Identifiant de voix ElevenLabs. Valeur par défaut : pMsXgVXv3BLzUgSXRplE. Ancien alias : voiceId.
object
stability, similarityBoost, style (chacun 0..1, valeurs par défaut 0.5/0.75/0), useSpeakerBoost (true|false, valeur par défaut true), speed (0.5..2.0, valeur par défaut 1.0).
"auto" | "on" | "off"
Mode de normalisation du texte.
string
Code ISO 639-1 à 2 lettres (par exemple en, de).
number
Entier 0..4294967295 pour un déterminisme au mieux.
string
Remplace l’URL de base de l’API ElevenLabs.
string
Utilise à défaut GEMINI_API_KEY / GOOGLE_API_KEY. Si cette valeur est omise, la synthèse vocale peut réutiliser models.providers.google.apiKey avant de recourir aux variables d’environnement.
string
Modèle de synthèse vocale Gemini. Valeur par défaut : gemini-3.1-flash-tts-preview.
string
Nom de la voix prédéfinie Gemini. Valeur par défaut : Kore. Alias hérités : voiceName, voice.
string
Instruction de style en langage naturel ajoutée avant le texte prononcé.
string
Libellé facultatif du locuteur ajouté avant le texte prononcé lorsque votre prompt utilise un locuteur nommé.
"audio-profile-v1"
Définissez cette valeur sur audio-profile-v1 pour intégrer les champs actifs du prompt de persona dans une structure de prompt de synthèse vocale Gemini déterministe.
string
Texte supplémentaire propre à Google pour le prompt de persona, ajouté aux notes du réalisateur du modèle.
string
Seul https://generativelanguage.googleapis.com est accepté.
string
Variable d’environnement : GRADIUM_API_KEY.
string
URL HTTPS de l’API Gradium sur api.gradium.ai. Valeur par défaut : https://api.gradium.ai.
string
Valeur par défaut : Emma (YTpq7expH9539ERJ). Alias hérité : voiceId.

Configuration principale d’Inworld

string
Variable d’environnement : INWORLD_API_KEY.
string
Valeur par défaut : https://api.inworld.ai.
string
Valeur par défaut : inworld-tts-1.5-max. Également disponibles : inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
string
Valeur par défaut : Sarah. Alias hérité : voiceId.
number
Température d’échantillonnage 0..2 (0 exclu).
string
Exécutable local ou chaîne de commande pour la synthèse vocale via la CLI.
string[]
Arguments de la commande. Prend en charge les espaces réservés {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
"mp3" | "opus" | "wav"
Format de sortie attendu de la CLI. Valeur par défaut : mp3 pour les pièces jointes audio.
number
Délai d’expiration de la commande en millisecondes. Valeur par défaut : 120000.
string
Répertoire de travail facultatif de la commande.
Record<string, string>
Remplacements facultatifs des variables d’environnement pour la commande.
La sortie standard de la commande et l’audio généré ou converti sont limités à 50 Mio. La sortie d’erreur de diagnostic est limitée à 1 Mio. OpenClaw met fin à la commande et fait échouer la synthèse si l’une de ces limites est dépassée.
boolean
défaut:"true"
Autorise l’utilisation de la synthèse vocale Microsoft.
string
Nom de la voix neuronale Microsoft (par exemple en-US-MichelleNeural). Alias hérité : voice. Si la voix anglaise par défaut est utilisée et que le texte de la réponse est majoritairement en caractères CJK, OpenClaw bascule automatiquement vers zh-CN-XiaoxiaoNeural.
string
Code de langue (par exemple en-US).
string
Format de sortie Microsoft. Valeur par défaut : audio-24khz-48kbitrate-mono-mp3. Le transport intégré reposant sur Edge ne prend pas en charge tous les formats.
string
Chaînes de pourcentage (par exemple +10%, -5%).
boolean
Écrit des sous-titres JSON à côté du fichier audio.
string
URL du proxy pour les requêtes de synthèse vocale Microsoft.
number
Remplacement du délai d’expiration des requêtes (ms).
object
obsolète
Alias hérité. Exécutez openclaw doctor --fix pour réécrire la configuration persistante en providers.microsoft.
string
Utilise à défaut MINIMAX_API_KEY. Authentification Token Plan via MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY ou MINIMAX_CODING_API_KEY.
string
Valeur par défaut : https://api.minimax.io. Variable d’environnement : MINIMAX_API_HOST.
string
Valeur par défaut : speech-2.8-hd. Variable d’environnement : MINIMAX_TTS_MODEL.
string
Valeur par défaut : English_expressive_narrator. Variable d’environnement : MINIMAX_TTS_VOICE_ID. Alias hérité : voiceId.
number
0.5..2.0. Valeur par défaut : 1.0.
number
(0, 10]. Valeur par défaut : 1.0.
number
Entier -12..12. Valeur par défaut : 0. Les valeurs fractionnaires sont tronquées avant la requête.
string
Utilise à défaut OPENAI_API_KEY.
string
Identifiant du modèle de synthèse vocale OpenAI. Valeur par défaut : gpt-4o-mini-tts.
string
Nom de la voix (par exemple alloy, cedar). Valeur par défaut : coral. Alias hérité : voice.
string
Champ OpenAI instructions explicite. Lorsqu’il est défini, les champs du prompt de persona ne sont pas mappés automatiquement.
Record<string, unknown>
Champs JSON supplémentaires fusionnés dans les corps de requête /audio/speech après les champs de synthèse vocale OpenAI générés. Utilisez-les pour les points de terminaison compatibles avec OpenAI, tels que Kokoro, qui nécessitent des clés propres au fournisseur comme lang ; les clés de prototype non sûres sont ignorées.
string
Remplace le point de terminaison de synthèse vocale OpenAI. Ordre de résolution : configuration → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Les valeurs autres que celle par défaut sont traitées comme des points de terminaison de synthèse vocale compatibles avec OpenAI ; les noms de modèles et de voix personnalisés sont donc acceptés, et speed n’est plus soumis à sa vérification de plage 0.25..4.0.
string
Variable d’environnement : OPENROUTER_API_KEY. Peut réutiliser models.providers.openrouter.apiKey.
string
Valeur par défaut : https://openrouter.ai/api/v1. La valeur héritée https://openrouter.ai/v1 est normalisée.
string
Valeur par défaut : hexgrad/kokoro-82m. Alias : modelId.
string
Valeur par défaut : af_alloy. Alias hérités : voice, voiceId.
"mp3" | "pcm"
Valeur par défaut : mp3.
number
Remplacement de la vitesse natif du fournisseur.
string
Variable d’environnement : VOLCENGINE_TTS_API_KEY ou BYTEPLUS_SEED_SPEECH_API_KEY.
string
Valeur par défaut : seed-tts-1.0. Variable d’environnement : VOLCENGINE_TTS_RESOURCE_ID. Utilisez seed-tts-2.0 lorsque votre projet dispose des droits TTS 2.0.
string
En-tête de clé d’application. Valeur par défaut : aGjiRDfUWi. Variable d’environnement : VOLCENGINE_TTS_APP_KEY.
string
Remplace le point de terminaison HTTP de synthèse vocale Seed Speech. Variable d’environnement : VOLCENGINE_TTS_BASE_URL.
string
Type de voix. Valeur par défaut : en_female_anna_mars_bigtts. Variable d’environnement : VOLCENGINE_TTS_VOICE. Alias hérité : voice.
number
Rapport de vitesse natif du fournisseur, 0.2..3.
string
Balise d’émotion native du fournisseur.
string
obsolète
Champs hérités de Volcengine Speech Console. Variables d’environnement : VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (valeur par défaut : volcano_tts).
string
Variable d’environnement : XAI_API_KEY.
string
Valeur par défaut : https://api.x.ai/v1. Variable d’environnement : XAI_BASE_URL.
string
Valeur par défaut : eve. Avec authentification, openclaw infer tts voices --provider xai récupère le catalogue intégré actuel ; sans authentification, il répertorie les solutions de secours hors ligne ara, eve, leo, rex et sal. Les identifiants de voix personnalisées du compte sont transmis même s’ils ne figurent pas dans la liste intégrée. Alias hérité : voiceId.
string
Code de langue BCP-47 ou auto. Valeur par défaut : en.
"mp3" | "wav" | "pcm" | "mulaw" | "alaw"
Valeur par défaut : mp3.
number
Remplacement de la vitesse natif du fournisseur, 0.7..1.5.
string
Variable d’environnement : XIAOMI_API_KEY.
string
Valeur par défaut : https://api.xiaomimimo.com/v1. Variable d’environnement : XIAOMI_BASE_URL.
string
Valeur par défaut : mimo-v2.5-tts. Variable d’environnement : XIAOMI_TTS_MODEL. Prend également en charge mimo-v2-tts et mimo-v2.5-tts-voicedesign.
string
Valeur par défaut : mimo_default pour les modèles à voix prédéfinies. Variable d’environnement : XIAOMI_TTS_VOICE. Alias hérité : voice. Non envoyé pour mimo-v2.5-tts-voicedesign.
"mp3" | "wav"
Valeur par défaut : mp3. Variable d’environnement : XIAOMI_TTS_FORMAT.
string
Instruction de style facultative en langage naturel envoyée comme message utilisateur ; elle n’est pas prononcée. Pour mimo-v2.5-tts-voicedesign, il s’agit du prompt de conception de la voix ; OpenClaw fournit une valeur par défaut lorsqu’elle est omise.

Outil de l’agent

L’outil tts convertit le texte en parole et renvoie une pièce jointe audio pour la remise de la réponse. Sur Feishu, Matrix, Telegram et WhatsApp, l’audio est remis sous forme de message vocal plutôt que de pièce jointe. Feishu et WhatsApp peuvent transcoder une sortie de synthèse vocale autre qu’Opus sur ce chemin lorsque ffmpeg est disponible. WhatsApp envoie l’audio par l’intermédiaire de Baileys sous forme de note vocale PTT (audio avec ptt: true) et envoie le texte visible séparément de l’audio PTT, car les clients n’affichent pas systématiquement les légendes des notes vocales. L’outil accepte les champs facultatifs channel et timeoutMs ; timeoutMs est un délai d’expiration par appel, en millisecondes, pour la requête au fournisseur. Les valeurs par appel remplacent messages.tts.timeoutMs ; les délais d’expiration configurés pour la synthèse vocale remplacent toute valeur par défaut du fournisseur définie par un Plugin.

RPC du Gateway

Liens vers les services

Ressources connexes