Tools
Synthèse vocale
OpenClaw peut convertir les réponses sortantes en audio avec 14 fournisseurs de synthèse vocale et livrer des messages vocaux natifs sur Feishu, Matrix, Telegram et WhatsApp, des pièces jointes audio partout ailleurs, ainsi que des flux PCM/Ulaw pour la téléphonie et Talk.
TTS est la moitié sortie vocale du mode stt-tts de Talk. Les sessions Talk realtime
natives du fournisseur synthétisent la parole dans le fournisseur en temps réel au lieu
d’appeler ce chemin TTS, tandis que les sessions transcription ne synthétisent pas de
réponse vocale de l’assistant.
Démarrage rapide
Choisir un fournisseur
OpenAI et ElevenLabs sont les options hébergées les plus fiables. Microsoft et la CLI locale fonctionnent sans clé API. Consultez la matrice des fournisseurs pour la liste complète.
Définir la clé API
Exportez la variable d’environnement de votre fournisseur (par exemple OPENAI_API_KEY,
ELEVENLABS_API_KEY). Microsoft et la CLI locale n’ont pas besoin de clé.
Activer dans la configuration
Définissez messages.tts.auto: "always" et messages.tts.provider :
{ messages: { tts: { auto: "always", provider: "elevenlabs", }, },}L’essayer dans le chat
/tts status affiche l’état actuel. /tts audio Hello from OpenClaw
envoie une réponse audio ponctuelle.
Fournisseurs pris en charge
| Fournisseur | Authentification | Notes |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (aussi AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
Sortie native de note vocale Ogg/Opus et téléphonie. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS compatible OpenAI. Par défaut : hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY ou XI_API_KEY |
Clonage de voix, multilingue, déterministe via seed ; diffusé en continu pour la lecture vocale Discord. |
| Google Gemini | GEMINI_API_KEY ou GOOGLE_API_KEY |
TTS par lot de l’API Gemini ; sensible à la persona via promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Sortie de note vocale et de téléphonie. |
| Inworld | INWORLD_API_KEY |
API TTS en streaming. Note vocale Opus native et téléphonie PCM. |
| CLI locale | aucune | Exécute une commande TTS locale configurée. |
| Microsoft | aucune | TTS neural public Edge via node-edge-tts. Au mieux, sans SLA. |
| MiniMax | MINIMAX_API_KEY (ou Token Plan : MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. Par défaut : speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
Également utilisé pour le résumé automatique ; prend en charge les instructions de persona. |
| OpenRouter | OPENROUTER_API_KEY (peut réutiliser models.providers.openrouter.apiKey) |
Modèle par défaut hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY ou BYTEPLUS_SEED_SPEECH_API_KEY (AppID/jeton hérité : VOLCENGINE_TTS_APPID/_TOKEN) |
API HTTP BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Fournisseur partagé d’image, de vidéo et de parole. |
| xAI | XAI_API_KEY |
TTS par lot xAI. La note vocale Opus native n’est pas prise en charge. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS MiMo via les complétions de chat Xiaomi. |
Si plusieurs fournisseurs sont configurés, celui sélectionné est utilisé en premier et les
autres servent d’options de secours. Le résumé automatique utilise summaryModel (ou
agents.defaults.model.primary), ce fournisseur doit donc aussi être authentifié
si vous gardez les résumés activés.
Configuration
La configuration TTS se trouve sous messages.tts dans ~/.openclaw/openclaw.json. Choisissez un
préréglage et adaptez le bloc du fournisseur :
Azure Speech
{messages: {tts: { auto: "always", provider: "azure-speech", providers: { "azure-speech": { apiKey: "${AZURE_SPEECH_KEY}", region: "eastus", speakerVoice: "en-US-JennyNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus", }, },},},}ElevenLabs
{messages: {tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{messages: {tts: { auto: "always", provider: "google", providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", speakerVoice: "Kore", // Optional natural-language style prompts: // audioProfile: "Speak in a calm, podcast-host tone.", // speakerName: "Alex", }, },},},}Gradium
{messages: {tts: { auto: "always", provider: "gradium", providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{messages: {tts: { auto: "always", provider: "inworld", providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", speakerVoiceId: "Sarah", temperature: 0.7, }, },},},}CLI locale
{messages: {tts: { auto: "always", provider: "tts-local-cli", providers: { "tts-local-cli": { command: "say", args: ["-o", "{{OutputPath}}", "{{Text}}"], outputFormat: "wav", timeoutMs: 120000, }, },},},}Microsoft (sans clé)
{messages: {tts: { auto: "always", provider: "microsoft", providers: { microsoft: { enabled: true, speakerVoice: "en-US-MichelleNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", rate: "+0%", pitch: "+0%", }, },},},}MiniMax
{messages: {tts: { auto: "always", provider: "minimax", providers: { minimax: { apiKey: "${MINIMAX_API_KEY}", model: "speech-2.8-hd", speakerVoiceId: "English_expressive_narrator", speed: 1.0, vol: 1.0, pitch: 0, }, },},},}OpenAI + ElevenLabs
{messages: {tts: { auto: "always", provider: "openai", summaryModel: "openai/gpt-4.1-mini", modelOverrides: { enabled: true }, providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts", speakerVoice: "alloy", }, elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 }, applyTextNormalization: "auto", languageCode: "en", }, },},},}OpenRouter
{messages: {tts: { auto: "always", provider: "openrouter", providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{messages: {tts: { auto: "always", provider: "volcengine", providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", speakerVoice: "en_female_anna_mars_bigtts", }, },},},}xAI
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{messages: {tts: { auto: "always", provider: "xiaomi", providers: { xiaomi: { apiKey: "${XIAOMI_API_KEY}", model: "mimo-v2.5-tts", speakerVoice: "mimo_default", format: "mp3", }, },},},}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 TTS user
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 auto-TTS différent. Le bloc de l’agent est fusionné en profondeur au-dessus de messages.tts, ce qui permet aux identifiants du fournisseur de rester dans la configuration globale du fournisseur:
{ messages: { tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" }, }, }, }, agents: { list: [ { id: "reader", tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, }, ], },}Pour épingler une persona par agent, définissez agents.list[].tts.persona avec la configuration du fournisseur — elle remplace la messages.tts.persona globale uniquement pour cet agent.
Ordre de priorité pour les réponses automatiques, /tts audio, /tts status et l’outil d’agent tts:
messages.ttsagents.list[].ttsactif- remplacement du canal, lorsque le canal prend en charge
channels.<channel>.tts - remplacement du compte, lorsque le canal transmet
channels.<channel>.accounts.<id>.tts - préférences
/ttslocales pour cet hôte - directives inline
[[tts:...]]lorsque les remplacements pilotés par le modèle sont activés
Les remplacements de canal et de compte utilisent la même forme que messages.tts et se fusionnent en profondeur au-dessus des couches précédentes, ce qui permet aux identifiants de fournisseur partagés de rester dans messages.tts tandis qu’un canal ou un compte de bot modifie uniquement la voix du locuteur, le modèle, la persona ou le mode auto:
{ messages: { tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { speakerVoice: "shimmer" }, }, }, }, }, }, },}Personas
Une persona est une identité vocale stable qui peut être appliquée de façon déterministe entre fournisseurs. Elle peut privilégier un fournisseur, définir une intention de prompt neutre vis-à-vis des fournisseurs et transporter des liaisons propres aux fournisseurs pour les voix, modèles, modèles de prompt, seeds et réglages de voix.
Persona minimale
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrator", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, }, },}Persona complète (prompt neutre vis-à-vis du fournisseur)
{ messages: { tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "Alfred", description: "Dry, warm British butler narrator.", provider: "google", fallbackPolicy: "preserve-persona", prompt: { profile: "A brilliant British butler. Dry, witty, warm, charming, emotionally expressive, never generic.", scene: "A quiet late-night study. Close-mic narration for a trusted operator.", sampleContext: "The speaker is answering a private technical request with concise confidence and dry warmth.", style: "Refined, understated, lightly amused.", accent: "British English.", pacing: "Measured, with short dramatic pauses.", constraints: ["Do not read configuration values aloud.", "Do not explain the persona."], }, providers: { google: { model: "gemini-3.1-flash-tts-preview", speakerVoice: "Algieba", promptTemplate: "audio-profile-v1", }, openai: { model: "gpt-4o-mini-tts", speakerVoice: "cedar" }, elevenlabs: { speakerVoiceId: "voice_id", modelId: "eleven_multilingual_v2", seed: 42, voiceSettings: { stability: 0.65, similarityBoost: 0.8, style: 0.25, useSpeakerBoost: true, speed: 0.95, }, }, }, }, }, }, },}Résolution de la persona
La persona active est sélectionnée de façon déterministe:
- préférence locale
/tts persona <id>, si elle est définie. messages.tts.persona, si elle est définie.- aucune persona.
La sélection du fournisseur suit d’abord les éléments explicites:
- remplacements directs (CLI, Gateway, Talk, directives TTS autorisées).
- préférence locale
/tts provider <id>. providerde la persona active.messages.tts.provider.- sélection automatique du registre.
Pour chaque tentative de fournisseur, OpenClaw fusionne les configurations dans cet ordre:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- remplacements de requête approuvés
- remplacements autorisés issus de directives TTS émises par le modèle
Comment les fournisseurs utilisent les prompts de persona
Les champs de prompt de persona (profile, scene, sampleContext, style, accent, pacing, constraints) sont neutres vis-à-vis du fournisseur. Chaque fournisseur décide comment les utiliser:
Google Gemini
Encapsule les champs de prompt de persona dans une structure de prompt Gemini TTS uniquement lorsque la configuration effective du fournisseur Google définit promptTemplate: "audio-profile-v1" ou personaPrompt. Les anciens champs audioProfile et speakerName sont encore préfixés comme texte de prompt propre à Google. Les balises audio inline comme [whispers] ou [laughs] dans un bloc [[tts:text]] sont préservées dans la transcription Gemini; OpenClaw ne génère pas ces balises.
OpenAI
Mappe les champs de prompt de persona vers le champ de requête instructions uniquement lorsque aucune instructions OpenAI explicite n’est configurée. Les instructions explicites ont toujours priorité.
Autres fournisseurs
Utilisent uniquement les liaisons de persona propres au fournisseur sous personas.<id>.providers.<provider>. Les champs de prompt de persona sont ignorés sauf si le fournisseur implémente son propre mappage de prompt de persona.
Politique de fallback
fallbackPolicy contrôle le comportement lorsqu’une persona n’a aucune liaison pour le fournisseur tenté:
| Politique | Comportement |
|---|---|
preserve-persona |
Par défaut. Les champs de prompt neutres vis-à-vis du fournisseur restent disponibles; le fournisseur peut les utiliser ou les ignorer. |
provider-defaults |
La persona est omise de la préparation du prompt pour cette tentative; le fournisseur utilise ses valeurs par défaut neutres pendant que le fallback vers d’autres fournisseurs continue. |
fail |
Ignore cette tentative de fournisseur avec reasonCode: "not_configured" et personaBinding: "missing". Les fournisseurs de fallback sont tout de même essayés. |
L’ensemble de la requête TTS n’échoue que lorsque tous les fournisseurs tentés sont ignorés ou échouent.
La sélection du fournisseur de session Talk est limitée à la session. Un client Talk doit choisir les ID de fournisseur, ID de modèle, ID de voix et paramètres régionaux depuis talk.catalog et les transmettre via la session Talk ou la requête de transfert. L’ouverture d’une session vocale ne doit pas modifier messages.tts ni les valeurs par défaut globales 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 ne doivent apparaître que dans l’audio:
Here you go. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](laughs) Read the song once more.[[/tts:text]]Lorsque messages.tts.auto vaut "tagged", les directives sont requises pour déclencher l’audio. La livraison de blocs en streaming supprime les directives du texte visible avant que le canal ne les voie, 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(ID de fournisseur enregistré; nécessiteallowProvider: true)speakerVoice/speakerVoiceId(alias hérités:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume MiniMax, 0–10)pitch(hauteur entière MiniMax, −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 du modèle:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Autoriser le changement de fournisseur tout en gardant les autres réglages configurables:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Commandes slash
Commande unique /tts. Sur Discord, OpenClaw enregistre aussi /voice parce que /tts est une commande Discord intégrée — le texte /tts ... fonctionne toujours.
/tts off | on | status/tts chat on | off | default/tts latest/tts provider <id>/tts persona <id> | off/tts limit <chars>/tts summary off/tts audio <text>Notes de comportement:
/tts onécrit la préférence TTS locale suralways;/tts offl’écrit suroff./tts chat on|off|defaultécrit un remplacement auto-TTS limité à la session pour la conversation actuelle./tts persona <id>écrit la préférence de persona locale;/tts persona offl’efface./tts latestlit la dernière réponse de l’assistant dans la transcription de la session actuelle et l’envoie une fois sous forme d’audio. Elle ne stocke qu’un hash de cette réponse sur l’entrée de session afin de supprimer les envois vocaux en double./tts audiogénère une réponse audio ponctuelle (n’active pas TTS).limitetsummarysont stockés dans les préférences locales, pas dans la configuration principale./tts statusinclut les diagnostics de fallback pour la dernière tentative —Fallback: <primary> -> <used>,Attempts: ..., et le détail par tentative (provider:outcome(reasonCode) latency)./statusaffiche le mode TTS actif ainsi que le fournisseur, le modèle, la voix configurés et les métadonnées de point de terminaison personnalisé assainies lorsque TTS est activé.
Préférences par utilisateur
Les commandes slash é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.
| Champ stocké | Effet |
|---|---|
auto |
Remplacement auto-TTS local (always, off, …) |
provider |
Remplacement du fournisseur principal local |
persona |
Remplacement de persona local |
maxLength |
Seuil de résumé (1500 caractères par défaut) |
summarize |
Bascule de résumé (true par défaut) |
Ces valeurs remplacent la configuration effective issue de messages.tts plus le bloc agents.list[].tts actif pour cet hôte.
Formats de sortie (fixes)
La livraison vocale TTS est pilotée par les capacités du canal. Les Plugins de canal annoncent si le TTS de style vocal doit demander aux fournisseurs une cible native voice-note ou conserver une synthèse audio-file normale et seulement marquer la sortie compatible pour la livraison vocale.
- Canaux compatibles avec les notes vocales: les réponses sous forme de note vocale privilégient Opus (
opus_48000_64depuis ElevenLabs,opusdepuis OpenAI).- 48 kHz / 64 kbit/s offre un bon compromis pour les messages vocaux.
- Feishu / WhatsApp: lorsqu’une réponse sous forme de note vocale est produite en MP3/WebM/WAV/M4A
ou dans un autre format probablement audio, le Plugin de canal la transcode en Ogg/Opus
48 kHz avec
ffmpegavant d’envoyer le message vocal natif. WhatsApp envoie le résultat via la charge utile Baileysaudioavecptt: trueetaudio/ogg; codecs=opus. Si la conversion échoue, Feishu reçoit le fichier d’origine en pièce jointe ; l’envoi WhatsApp échoue plutôt que de publier une charge utile PTT incompatible. - Autres canaux: MP3 (
mp3_44100_128depuis ElevenLabs,mp3depuis OpenAI).- 44,1 kHz / 128 kbit/s est l’équilibre par défaut pour la clarté de la parole.
- MiniMax: MP3 (modèle
speech-2.8-hd, fréquence d’échantillonnage de 32 kHz) pour les pièces jointes audio normales. Pour les cibles de notes vocales annoncées par le canal, OpenClaw transcode le MP3 MiniMax en Opus 48 kHz avecffmpegavant la livraison lorsque le canal annonce la prise en charge du transcodage. - Xiaomi MiMo: MP3 par défaut, ou WAV lorsque configuré. Pour les cibles de notes vocales annoncées par le canal, OpenClaw transcode la sortie Xiaomi en Opus 48 kHz avec
ffmpegavant la livraison lorsque le canal annonce la prise en charge du transcodage. - CLI locale: utilise le
outputFormatconfiguré. Les cibles de notes vocales sont converties en Ogg/Opus, et la sortie de téléphonie est convertie en PCM mono brut 16 kHz avecffmpeg. - Google Gemini: la TTS de l’API Gemini renvoie du PCM brut 24 kHz. OpenClaw l’encapsule en WAV pour les pièces jointes audio, la transcode en Opus 48 kHz pour les cibles de notes vocales, et renvoie directement le PCM pour Talk/téléphonie.
- Gradium: WAV pour les pièces jointes audio, Opus pour les cibles de notes vocales, et
ulaw_8000à 8 kHz pour la téléphonie. - Inworld: MP3 pour les pièces jointes audio normales,
OGG_OPUSnatif pour les cibles de notes vocales, etPCMbrut à 22050 Hz pour Talk/téléphonie. - xAI: MP3 par défaut ;
responseFormatpeut êtremp3,wav,pcm,mulawoualaw. OpenClaw utilise le point de terminaison TTS REST par lots de xAI et renvoie une pièce jointe audio complète ; le WebSocket TTS en streaming de xAI n’est pas utilisé par ce chemin de fournisseur. Le format natif Opus pour les notes vocales n’est pas pris en charge par ce chemin. - Microsoft: utilise
microsoft.outputFormat(par défautaudio-24khz-48kbitrate-mono-mp3).- Le transport inclus accepte un
outputFormat, mais tous les formats ne sont pas disponibles depuis le service. - Les valeurs de format de sortie suivent les formats de sortie Microsoft Speech (y compris Ogg/WebM Opus).
- Telegram
sendVoiceaccepte 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 avec MP3.
- Le transport inclus accepte un
Les formats de sortie OpenAI/ElevenLabs sont fixes par canal (voir ci-dessus).
Comportement Auto-TTS
Lorsque messages.tts.auto est activé, OpenClaw :
- Ignore la TTS 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, en utilisant
summaryModel(ouagents.defaults.model.primary). - Joint l’audio généré à la réponse.
- En
mode: "final", envoie toujours une TTS audio seule pour les réponses finales diffusées en streaming après la fin du flux de texte ; le média généré passe par la même normalisation des médias de canal que les pièces jointes de réponse normales.
Si la réponse dépasse maxLength et que le résumé est désactivé (ou qu’il n’y a pas de clé API pour le
modèle de résumé), l’audio est ignoré et la réponse textuelle normale est envoyée.
Reply -> TTS enabled? no -> send text yes -> has media / short? yes -> send text no -> length > limit? no -> TTS -> attach audio yes -> summary enabled? no -> send text yes -> summarize -> TTS -> attach audioFormats de sortie par canal
| Cible | Format |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Les réponses par note vocale préfèrent Opus (opus_48000_64 depuis ElevenLabs, opus depuis OpenAI). 48 kHz / 64 kbps équilibre clarté et taille. |
| Autres canaux | MP3 (mp3_44100_128 depuis ElevenLabs, mp3 depuis OpenAI). 44,1 kHz / 128 kbps par défaut pour la parole. |
| Discussion / téléphonie | PCM natif du fournisseur (Inworld 22050 Hz, Google 24 kHz), ou ulaw_8000 depuis Gradium pour la téléphonie. |
Notes par fournisseur :
- Transcodage Feishu / WhatsApp : lorsqu’une réponse par note vocale arrive en MP3/WebM/WAV/M4A, le Plugin de canal la transcode en Ogg/Opus 48 kHz avec
ffmpeg. WhatsApp envoie via Baileys avecptt: trueetaudio/ogg; codecs=opus. Si la conversion échoue : Feishu revient à la pièce jointe du fichier d’origine ; l’envoi WhatsApp échoue au lieu de publier une charge utile PTT incompatible. - MiniMax / Xiaomi MiMo : MP3 par défaut (32 kHz pour MiniMax
speech-2.8-hd) ; transcodé en Opus 48 kHz pour les cibles de note vocale viaffmpeg. - CLI locale : utilise le
outputFormatconfiguré. Les cibles de note vocale sont converties en Ogg/Opus et la sortie téléphonique en PCM mono 16 kHz brut. - Google Gemini : renvoie du PCM 24 kHz brut. OpenClaw l’encapsule en WAV pour les pièces jointes, le transcode en Opus 48 kHz pour les cibles de note vocale, et renvoie directement le PCM pour Discussion/téléphonie.
- Inworld : pièces jointes MP3, note vocale native
OGG_OPUS,PCMbrut 22050 Hz pour Discussion/téléphonie. - xAI : MP3 par défaut ;
responseFormatpeut êtremp3|wav|pcm|mulaw|alaw. Utilise le point de terminaison REST par lot de xAI — le TTS WebSocket en streaming n’est pas utilisé. Le format natif Opus pour note vocale n’est pas pris en charge. - Microsoft : utilise
microsoft.outputFormat(par défautaudio-24khz-48kbitrate-mono-mp3). TelegramsendVoiceaccepte OGG/MP3/M4A ; utilisez OpenAI/ElevenLabs si vous avez besoin de messages vocaux Opus garantis. Si le format Microsoft configuré échoue, OpenClaw réessaie avec MP3.
Les formats de sortie OpenAI et ElevenLabs sont fixes par canal comme indiqué ci-dessus.
Référence des champs
Top-level messages.tts.*
auto"off" | "always" | "inbound" | "tagged"Mode Auto-TTS. inbound envoie l’audio uniquement après un message vocal entrant ; tagged envoie l’audio uniquement lorsque la réponse inclut des directives [[tts:...]] ou un bloc [[tts:text]].
enabledbooleanBascule héritée. openclaw doctor --fix la migre vers auto.
mode"final" | "all"default: final"all" inclut les réponses d’outils/blocs en plus des réponses finales.
providerstringIdentifiant du fournisseur vocal. Lorsqu’il n’est pas défini, OpenClaw utilise le premier fournisseur configuré dans l’ordre de sélection automatique du registre. L’ancien provider: "edge" est réécrit en "microsoft" par openclaw doctor --fix.
personastringIdentifiant de persona actif depuis personas. Normalisé en minuscules.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
Identité vocale stable. Champs : label, description, provider, fallbackPolicy, prompt, providers.<provider>. Voir Personas.
summaryModelstringModèle économique pour le résumé automatique ; par défaut agents.defaults.model.primary. Accepte provider/model ou un alias de modèle configuré.
modelOverridesobjectAutorise le modèle à émettre des directives TTS. enabled vaut true par défaut ; allowProvider vaut false par défaut.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Paramètres détenus par le 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 ; ne validez que messages.tts.providers.<id>.
maxTextLengthnumberLimite stricte de caractères d’entrée TTS. /tts audio échoue si elle est dépassée.
timeoutMsnumberDélai d’expiration de la requête en millisecondes.
prefsPathstringRemplace le chemin JSON local des préférences (fournisseur/limite/résumé). Par défaut ~/.openclaw/settings/tts.json.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env : AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, ou SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Région Azure Speech (p. ex. eastus). Env : AZURE_SPEECH_REGION ou SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Remplacement facultatif du point de terminaison Azure Speech (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
ShortName de la voix Azure. Par défaut en-US-JennyNeural. Alias hérité : voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Code de langue SSML. Par défaut en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure pour l’audio standard. Par défaut audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure pour la sortie note vocale. Par défaut ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Se rabat sur ELEVENLABS_API_KEY ou XI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Identifiant du modèle (p. ex. eleven_multilingual_v2, eleven_v3).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Identifiant de voix ElevenLabs. Alias hérité : voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, similarityBoost, style (chacun 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normal).
applyTextNormalization"auto" | "on" | "off"OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg
ISO 639-1 à 2 lettres (p. ex. en, de).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
Entier 0..4294967295 pour un déterminisme au mieux.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Se rabat sur GEMINI_API_KEY / GOOGLE_API_KEY. Si omis, TTS peut réutiliser models.providers.google.apiKey avant le recours à l’environnement.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Modèle TTS Gemini. Par défaut gemini-3.1-flash-tts-preview.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nom de voix Gemini prédéfinie. Par défaut Kore. Alias hérités : voiceName, voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Définissez sur audio-profile-v1 pour encapsuler les champs d’invite de la persona active dans une structure d’invite TTS Gemini déterministe.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Seul https://generativelanguage.googleapis.com est accepté.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Par défaut Emma (YTpq7expH9539ERJ). Alias hérité : voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Principal Inworld
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
Par défaut inworld-tts-1.5-max. Aussi : inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Par défaut Sarah. Alias hérité : voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Température d’échantillonnage 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
CLI local (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
Arguments de commande. Prend en charge les espaces réservés {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
Format de sortie CLI attendu. Par défaut mp3 pour les pièces jointes audio.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
Délai d’expiration de la commande en millisecondes. Par défaut 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,Microsoft (sans clé API)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nom de voix neuronale Microsoft (par ex. en-US-MichelleNeural). Alias hérité : voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Code de langue (par ex. en-US).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Format de sortie Microsoft. Par défaut audio-24khz-48kbitrate-mono-mp3. Tous les formats ne sont pas pris en charge par le transport groupé basé sur Edge.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
Chaînes de pourcentage (par ex. +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
Alias hérité. Exécutez openclaw doctor --fix pour réécrire la configuration persistée vers providers.microsoft.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Se rabat sur MINIMAX_API_KEY. Authentification Token Plan via MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY ou MINIMAX_CODING_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://api.minimax.io. Env. : MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Par défaut speech-2.8-hd. Env. : MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Par défaut English_expressive_narrator. Env. : MINIMAX_TTS_VOICE_ID. Alias hérité : voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. Par défaut 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. Par défaut 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Entier -12..12. Par défaut 0. Les valeurs fractionnaires sont tronquées avant la requête.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Se rabat sur OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Identifiant du modèle TTS OpenAI (par ex. gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nom de la voix (par ex. alloy, cedar). Alias hérité : voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Champ OpenAI instructions explicite. Lorsqu’il est défini, les champs d’invite de persona ne sont pas mappés automatiquement.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Champs JSON supplémentaires fusionnés dans les corps de requête /audio/speech après les champs TTS OpenAI générés. Utilisez ceci pour les points de terminaison compatibles OpenAI, tels que Kokoro, qui exigent des clés propres au fournisseur comme lang ; les clés de prototype non sûres sont ignorées.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringRemplace le point de terminaison TTS OpenAI. Ordre de résolution : configuration → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Les valeurs non définies par défaut sont traitées comme des points de terminaison TTS compatibles OpenAI ; les noms de modèle et de voix personnalisés sont donc acceptés.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : OPENROUTER_API_KEY. Peut réutiliser models.providers.openrouter.apiKey.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://openrouter.ai/api/v1. L’URL héritée https://openrouter.ai/v1 est normalisée.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Par défaut hexgrad/kokoro-82m. Alias : modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Par défaut af_alloy. Alias hérités : voice, voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
Par défaut mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : VOLCENGINE_TTS_API_KEY ou BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
Par défaut seed-tts-1.0. Env. : VOLCENGINE_TTS_RESOURCE_ID. Utilisez seed-tts-2.0 lorsque votre projet dispose du droit TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
En-tête de clé d’application. Par défaut aGjiRDfUWi. Env. : VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Remplace le point de terminaison HTTP Seed Speech TTS. Env. : VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Type de voix. Par défaut en_female_anna_mars_bigtts. Env. : VOLCENGINE_TTS_VOICE. Alias hérité : voice.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Champs hérités de la console Volcengine Speech. Env. : VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (par défaut volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://api.x.ai/v1. Env. : XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Par défaut eve. Voix actives : ara, eve, leo, rex, sal, una. Alias hérité : voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
Code de langue BCP-47 ou auto. Par défaut en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
Par défaut mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberXiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env. : XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Par défaut https://api.xiaomimimo.com/v1. Env. : XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Par défaut mimo-v2.5-tts. Env. : XIAOMI_TTS_MODEL. Prend aussi en charge mimo-v2-tts et mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Par défaut mimo_default pour les modèles à voix prédéfinie. Env. : XIAOMI_TTS_VOICE. Alias hérité : voice. Non envoyé pour mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Par défaut mp3. Env. : XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci
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 de l’invite de conception de voix ; OpenClaw fournit une valeur par défaut lorsqu’elle est omise.
OPENCLAW_DOCS_MARKER:paramClose:
Outil d’agent
L’outil tts convertit du texte en parole et renvoie une pièce jointe audio pour
la livraison de la réponse. Sur Feishu, Matrix, Telegram et WhatsApp, l’audio est
livré comme message vocal plutôt que comme pièce jointe de fichier. Feishu et
WhatsApp peuvent transcoder la sortie TTS non Opus sur ce chemin lorsque ffmpeg est
disponible.
WhatsApp envoie l’audio via Baileys comme 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 sur les notes vocales.
L’outil accepte les champs facultatifs channel et timeoutMs ; timeoutMs est un
délai d’expiration de requête fournisseur par appel en millisecondes. Les valeurs par appel remplacent
messages.tts.timeoutMs ; les délais d’expiration TTS configurés remplacent toute valeur par défaut
de fournisseur définie par un plugin.
RPC Gateway
| Méthode | Objectif |
|---|---|
tts.status |
Lire l’état TTS actuel et la dernière tentative. |
tts.enable |
Définir la préférence automatique locale sur always. |
tts.disable |
Définir la préférence automatique locale sur off. |
tts.convert |
Conversion ponctuelle texte → audio. |
tts.setProvider |
Définir la préférence locale de fournisseur. |
tts.setPersona |
Définir la préférence locale de persona. |
tts.providers |
Lister les fournisseurs configurés et leur état. |
Liens de service
- Guide de synthèse vocale OpenAI
- Référence de l’API Audio OpenAI
- Synthèse vocale REST Azure Speech
- Fournisseur Azure Speech
- Synthèse vocale ElevenLabs
- Authentification ElevenLabs
- Gradium
- API Inworld TTS
- API MiniMax T2A v2
- API HTTP TTS Volcengine
- Synthèse vocale Xiaomi MiMo
- node-edge-tts
- Formats de sortie Microsoft Speech
- Synthèse vocale xAI