Synthèse vocale (TTS)
OpenClaw peut convertir les réponses sortantes en audio à l’aide de ElevenLabs, Microsoft, MiniMax ou OpenAI. Cela fonctionne partout où OpenClaw peut envoyer de l’audio.Services pris en charge
- ElevenLabs (fournisseur principal ou de secours)
- 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)
Notes 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é (non
local), qui utilise des endpoints 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. La configuration héritée et les entrées de directive
utilisant edge continuent de fonctionner et sont normalisées vers microsoft.
Comme ce chemin repose sur un service web public sans SLA ni quota publiés,
considérez-le comme un effort au mieux. Si vous avez besoin de limites garanties et d’assistance, utilisez OpenAI
ou ElevenLabs.
Clés facultatives
Si vous voulez utiliser OpenAI, ElevenLabs ou MiniMax :ELEVENLABS_API_KEY(ouXI_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 de service
- 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 par session avec /tts always (alias : /tts on).
Lorsque messages.tts.provider n’est pas défini, OpenClaw choisit le premier
fournisseur vocal 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 se trouve dans Configuration de la gateway.
Configuration minimale (activation + fournisseur)
OpenAI principal avec ElevenLabs en secours
Microsoft principal (sans clé API)
MiniMax principal
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
Notes sur les champs
auto: mode auto‑TTS (off,always,inbound,tagged).inboundn’envoie de l’audio qu’après un message vocal entrant.taggedn’envoie de l’audio que lorsque la réponse inclut des balises[[tts]].
enabled: bascule héritée (doctor la migre versauto).mode:"final"(par défaut) ou"all"(inclut les réponses d’outils/blocs).provider: id du fournisseur vocal tel que"elevenlabs","microsoft","minimax"ou"openai"(la solution de 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é versmicrosoft. summaryModel: modèle économique facultatif pour le résumé automatique ; la valeur par défaut estagents.defaults.model.primary.- Accepte
provider/modelou un alias de modèle configuré.
- Accepte
modelOverrides: autoriser le modèle à émettre des directives TTS (activé par défaut).allowProvidervaut par défautfalse(le changement de fournisseur se fait par adhésion explicite).
providers.<id>: paramètres détenus par le fournisseur, indexés par id de fournisseur vocal.- Les anciens blocs de fournisseur directs (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) sont automatiquement migrés 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
apiKeyreviennent aux variables d’environnement (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: remplace l’URL de base de l’API ElevenLabs.providers.openai.baseUrl: remplace l’endpoint 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 endpoints TTS compatibles OpenAI, donc les noms personnalisés de modèle et de voix 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 exempleen,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.microsoft.enabled: autoriser l’utilisation de la synthèse vocale Microsoft (par défauttrue; pas de clé API).providers.microsoft.voice: nom de voix neurale Microsoft (par exempleen-US-MichelleNeural).providers.microsoft.lang: code langue (par exempleen-US).providers.microsoft.outputFormat: format de sortie Microsoft (par exempleaudio-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é adossé à Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: chaînes de pourcentage (par exemple+10%,-5%).providers.microsoft.saveSubtitles: écrire 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: remplacement du 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 vaut tagged, ces directives sont nécessaires pour déclencher l’audio.
Lorsqu’elle est activée, 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 payload de réponse :
provider(id de fournisseur vocal enregistré, par exempleopenai,elevenlabs,minimaxoumicrosoft; nécessiteallowProvider: true)voice(voix OpenAI) ouvoiceId(ElevenLabs / MiniMax)model(modèle TTS OpenAI, id de modèle ElevenLabs ou modèle MiniMax)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_64provenant de ElevenLabs,opusprovenant de OpenAI).- 48 kHz / 64 kb/s constitue un bon compromis pour les messages vocaux.
- Autres canaux : MP3 (
mp3_44100_128provenant de ElevenLabs,mp3provenant de OpenAI).- 44,1 kHz / 128 kb/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 32 kHz). Le format note vocale n’est pas pris en charge nativement ; utilisez OpenAI ou ElevenLabs pour des messages vocaux Opus garantis. - 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 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 groupé accepte un
Comportement de l’auto-TTS
Lorsqu’il est activé, OpenClaw :- ignore 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 lorsque cette option 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 de flux
Utilisation des commandes slash
Il existe une seule commande :/tts.
Voir Commandes slash pour les détails d’activation.
Note 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é.off|always|inbound|taggedsont des bascules par session (/tts onest un alias pour/tts always).limitetsummarysont stockés dans les préférences locales, pas dans la configuration principale./tts audiogénère une réponse audio ponctuelle (n’active pas TTS)./tts statusinclut la visibilité de 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 d’erreur analysé du fournisseur et l’id de requête (lorsqu’il est renvoyé par le fournisseur), qui apparaissent dans les erreurs/journaux TTS.
Outil d’agent
L’outiltts convertit du texte en parole et renvoie une pièce jointe audio pour
la distribution de la réponse. Lorsque le canal est Feishu, Matrix, Telegram ou WhatsApp,
l’audio est distribué sous forme de message vocal plutôt que de pièce jointe de fichier.
RPC gateway
Méthodes de gateway :tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers