Synthèse vocale (TTS)
OpenClaw peut convertir les réponses sortantes en audio à l’aide d’ElevenLabs, Google Gemini, Microsoft, MiniMax ou OpenAI. Cela fonctionne partout où OpenClaw peut envoyer de l’audio.Services pris en charge
- ElevenLabs (fournisseur principal ou de secours)
- Google Gemini (fournisseur principal ou de secours ; utilise la synthèse vocale TTS de l’API Gemini)
- Microsoft (fournisseur principal ou de secours ; l’implémentation groupée actuelle utilise
node-edge-tts) - MiniMax (fournisseur principal ou de secours ; utilise l’API T2A v2)
- OpenAI (fournisseur principal ou de secours ; également utilisé pour les résumés)
Remarques sur la synthèse vocale Microsoft
Le fournisseur de synthèse vocale Microsoft groupé utilise actuellement le service TTS neuronal en ligne de Microsoft Edge via la bibliothèquenode-edge-tts. Il
s’agit d’un service hébergé (et non local), qui utilise les points de terminaison de Microsoft,
et ne nécessite pas de clé API.
node-edge-tts expose des options de configuration vocale et des formats de sortie, mais
toutes les options ne sont pas prises en charge par le service. L’ancienne configuration et les entrées de directive
utilisant edge fonctionnent toujours et sont normalisées en microsoft.
Comme cette voie repose sur un service web public sans SLA ni quota publiés,
considérez-la comme du best-effort. Si vous avez besoin de limites garanties et d’un support,
utilisez OpenAI ou ElevenLabs.
Clés facultatives
Si vous souhaitez utiliser OpenAI, ElevenLabs, Google Gemini ou MiniMax :ELEVENLABS_API_KEY(ouXI_API_KEY)GEMINI_API_KEY(ouGOOGLE_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel configuré (ou agents.defaults.model.primary),
donc ce fournisseur doit également être authentifié si vous activez les résumés.
Liens des services
- Guide OpenAI Text-to-Speech
- Référence de l’API Audio OpenAI
- ElevenLabs Text to Speech
- Authentification ElevenLabs
- API MiniMax T2A v2
- node-edge-tts
- Formats de sortie Microsoft Speech
Est-ce activé par défaut ?
Non. L’auto‑TTS est désactivé par défaut. Activez-le dans la configuration avecmessages.tts.auto ou localement avec /tts on.
Lorsque messages.tts.provider n’est pas défini, OpenClaw choisit le premier
fournisseur de synthèse vocale configuré selon l’ordre de sélection automatique du registre.
Configuration
La configuration TTS se trouve sousmessages.tts dans openclaw.json.
Le schéma complet figure dans Configuration de Gateway.
Configuration minimale (activation + fournisseur)
OpenAI principal avec ElevenLabs en secours
Microsoft principal (sans clé API)
MiniMax principal
Google Gemini principal
messages.tts.providers.google.apiKey -> models.providers.google.apiKey ->
GEMINI_API_KEY -> GOOGLE_API_KEY.
Désactiver la synthèse vocale Microsoft
Limites personnalisées + chemin des préférences
Répondre uniquement avec de l’audio après un message vocal entrant
Désactiver le résumé automatique pour les réponses longues
Remarques sur les champs
auto: mode auto‑TTS (off,always,inbound,tagged).inboundenvoie de l’audio uniquement après un message vocal entrant.taggedenvoie de l’audio uniquement lorsque la réponse inclut des directives[[tts:key=value]]ou un bloc[[tts:text]]...[[/tts:text]].
enabled: bascule héritée (doctor la migre versauto).mode:"final"(par défaut) ou"all"(inclut les réponses d’outil/de bloc).provider: identifiant du fournisseur vocal tel que"elevenlabs","google","microsoft","minimax"ou"openai"(le secours est automatique).- Si
providern’est pas défini, OpenClaw utilise le premier fournisseur vocal configuré selon l’ordre de sélection automatique du registre. - L’ancien
provider: "edge"fonctionne toujours et est normalisé enmicrosoft. summaryModel: modèle économique facultatif pour le résumé automatique ; par défautagents.defaults.model.primary.- Accepte
provider/modelou un alias de modèle configuré.
- Accepte
modelOverrides: permet au modèle d’émettre des directives TTS (activé par défaut).allowProvidervautfalsepar défaut (le changement de fournisseur est opt-in).
providers.<id>: paramètres propres au fournisseur, indexés par identifiant de fournisseur vocal.- Les anciens blocs de fournisseur directs (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) sont migrés automatiquement versmessages.tts.providers.<id>au chargement. maxTextLength: limite stricte pour l’entrée TTS (caractères)./tts audioéchoue si elle est dépassée.timeoutMs: délai d’expiration de la requête (ms).prefsPath: remplace le chemin JSON local des préférences (fournisseur/limite/résumé).- Les valeurs
apiKeyse replient sur les variables d’environnement (ELEVENLABS_API_KEY/XI_API_KEY,GEMINI_API_KEY/GOOGLE_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: remplace l’URL de base de l’API ElevenLabs.providers.openai.baseUrl: remplace le point de terminaison TTS OpenAI.- Ordre de résolution :
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Les valeurs non par défaut sont traitées comme des points de terminaison TTS compatibles OpenAI, donc les noms de modèle et de voix personnalisés sont acceptés.
- Ordre de résolution :
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: ISO 639-1 à 2 lettres (par ex.en,de)providers.elevenlabs.seed: entier0..4294967295(déterminisme au mieux)providers.minimax.baseUrl: remplace l’URL de base de l’API MiniMax (par défauthttps://api.minimax.io, env :MINIMAX_API_HOST).providers.minimax.model: modèle TTS (par défautspeech-2.8-hd, env :MINIMAX_TTS_MODEL).providers.minimax.voiceId: identifiant de voix (par défautEnglish_expressive_narrator, env :MINIMAX_TTS_VOICE_ID).providers.minimax.speed: vitesse de lecture0.5..2.0(par défaut 1.0).providers.minimax.vol: volume(0, 10](par défaut 1.0 ; doit être supérieur à 0).providers.minimax.pitch: décalage de hauteur-12..12(par défaut 0).providers.google.model: modèle TTS Gemini (par défautgemini-3.1-flash-tts-preview).providers.google.voiceName: nom de voix préconstruit Gemini (par défautKore;voiceest également accepté).providers.google.baseUrl: remplace l’URL de base de l’API Gemini. Seulhttps://generativelanguage.googleapis.comest accepté.- Si
messages.tts.providers.google.apiKeyest omis, TTS peut réutilisermodels.providers.google.apiKeyavant le repli sur l’environnement.
- Si
providers.microsoft.enabled: autorise l’utilisation de la synthèse vocale Microsoft (par défauttrue; sans clé API).providers.microsoft.voice: nom de voix neurale Microsoft (par ex.en-US-MichelleNeural).providers.microsoft.lang: code langue (par ex.en-US).providers.microsoft.outputFormat: format de sortie Microsoft (par ex.audio-24khz-48kbitrate-mono-mp3).- Voir les formats de sortie Microsoft Speech pour les valeurs valides ; tous les formats ne sont pas pris en charge par le transport groupé basé sur Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: chaînes de pourcentage (par ex.+10%,-5%).providers.microsoft.saveSubtitles: écrit des sous-titres JSON à côté du fichier audio.providers.microsoft.proxy: URL de proxy pour les requêtes de synthèse vocale Microsoft.providers.microsoft.timeoutMs: remplace le délai d’expiration de la requête (ms).edge.*: alias hérité pour les mêmes paramètres Microsoft.
Remplacements pilotés par le modèle (activés par défaut)
Par défaut, le modèle peut émettre des directives TTS pour une seule réponse. Lorsquemessages.tts.auto est tagged, ces directives sont nécessaires pour déclencher l’audio.
Lorsqu’il est activé, le modèle peut émettre des directives [[tts:...]] pour remplacer la voix
pour une seule réponse, ainsi qu’un bloc facultatif [[tts:text]]...[[/tts:text]] pour
fournir des balises expressives (rire, indications de chant, etc.) qui ne doivent apparaître que dans
l’audio.
Les directives provider=... sont ignorées sauf si modelOverrides.allowProvider: true.
Exemple de charge utile de réponse :
provider(identifiant de fournisseur vocal enregistré, par exempleopenai,elevenlabs,google,minimaxoumicrosoft; nécessiteallowProvider: true)voice(voix OpenAI),voiceName/voice_name/google_voice(voix Google), ouvoiceId(ElevenLabs / MiniMax)model(modèle TTS OpenAI, identifiant de modèle ElevenLabs ou modèle MiniMax) ougoogle_model(modèle TTS Google)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume MiniMax, 0-10)pitch(hauteur MiniMax, -12 à 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Préférences par utilisateur
Les commandes slash écrivent des remplacements locaux dansprefsPath (par défaut :
~/.openclaw/settings/tts.json, remplaçable avec OPENCLAW_TTS_PREFS ou
messages.tts.prefsPath).
Champs stockés :
enabledprovidermaxLength(seuil de résumé ; 1500 caractères par défaut)summarize(truepar défaut)
messages.tts.* pour cet hôte.
Formats de sortie (fixes)
- Feishu / Matrix / Telegram / WhatsApp : message vocal Opus (
opus_48000_64depuis ElevenLabs,opusdepuis OpenAI).- 48 kHz / 64 kb/s offre un bon compromis pour les messages vocaux.
- Autres canaux : MP3 (
mp3_44100_128depuis ElevenLabs,mp3depuis OpenAI).- 44,1 kHz / 128 kb/s correspond à 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). Le format note vocale n’est pas pris en charge nativement ; utilisez OpenAI ou ElevenLabs pour des messages vocaux Opus garantis. - Google Gemini : la synthèse vocale TTS de l’API Gemini renvoie du PCM brut à 24 kHz. OpenClaw l’encapsule dans du WAV pour les pièces jointes audio et renvoie directement du PCM pour Talk/la téléphonie. Le format natif de note vocale Opus n’est pas pris en charge par cette voie.
- Microsoft : utilise
microsoft.outputFormat(par défautaudio-24khz-48kbitrate-mono-mp3).- Le transport groupé accepte un
outputFormat, mais tous les formats ne sont pas disponibles dans 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 groupé accepte un
Comportement de l’auto-TTS
Lorsqu’elle est activée, OpenClaw :- ignore la TTS si la réponse contient déjà un média ou une directive
MEDIA:. - ignore les réponses très courtes (< 10 caractères).
- résume les réponses longues lorsqu’elle est activée à l’aide de
agents.defaults.model.primary(ousummaryModel). - joint l’audio généré à la réponse.
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 texte normale est envoyée.
Diagramme du flux
Utilisation des commandes slash
Il existe une seule commande :/tts.
Voir Commandes slash pour les détails d’activation.
Remarque Discord : /tts est une commande Discord intégrée, donc OpenClaw enregistre
/voice comme commande native à cet endroit. Le texte /tts ... fonctionne toujours.
- Les commandes nécessitent un expéditeur autorisé (les règles de liste d’autorisation/propriétaire s’appliquent toujours).
commands.textou l’enregistrement de commandes natives doit être activé.- La configuration
messages.tts.autoaccepteoff|always|inbound|tagged. /tts onécrit la préférence TTS locale àalways;/tts offl’écrit àoff.- Utilisez la configuration si vous voulez des valeurs par défaut
inboundoutagged. limitetsummarysont stockés dans les préférences locales, pas dans la configuration principale./tts audiogénère une réponse audio ponctuelle (cela n’active pas la TTS)./tts statusinclut la visibilité du secours pour la dernière tentative :- secours réussi :
Fallback: <primary> -> <used>plusAttempts: ... - échec :
Error: ...plusAttempts: ... - diagnostics détaillés :
Attempt details: provider:outcome(reasonCode) latency
- secours réussi :
- Les échecs d’API OpenAI et ElevenLabs incluent désormais le détail de l’erreur fournisseur analysée et l’identifiant de requête (quand il est renvoyé par le fournisseur), ce qui est exposé dans les erreurs/journaux TTS.
Outil de l’agent
L’outiltts convertit du texte en parole et renvoie une pièce jointe audio pour
la livraison de la réponse. Lorsque le canal est Feishu, Matrix, Telegram ou WhatsApp,
l’audio est livré comme message vocal plutôt que comme pièce jointe de fichier.
RPC Gateway
Méthodes Gateway :tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers