Tools
Texto a voz
OpenClaw puede convertir respuestas salientes en audio con 14 proveedores de voz y entregar mensajes de voz nativos en Feishu, Matrix, Telegram y WhatsApp, archivos adjuntos de audio en todos los demás lugares, y transmisiones PCM/Ulaw para telefonía y Talk.
TTS es la mitad de salida de voz del modo stt-tts de Talk. Las sesiones de Talk
realtime nativas del proveedor sintetizan voz dentro del proveedor en tiempo real
en lugar de llamar a esta ruta de TTS, mientras que las sesiones de transcription
no sintetizan una respuesta de voz del asistente.
Inicio rápido
Elige un proveedor
OpenAI y ElevenLabs son las opciones alojadas más fiables. Microsoft y Local CLI funcionan sin clave de API. Consulta la matriz de proveedores para ver la lista completa.
Configura la clave de API
Exporta la variable de entorno de tu proveedor (por ejemplo OPENAI_API_KEY,
ELEVENLABS_API_KEY). Microsoft y Local CLI no necesitan clave.
Actívalo en la configuración
Define messages.tts.auto: "always" y messages.tts.provider:
{
messages: {
tts: {
auto: "always",
provider: "elevenlabs",
},
},
}
Pruébalo en el chat
/tts status muestra el estado actual. /tts audio Hello from OpenClaw
envía una respuesta de audio puntual.
Proveedores compatibles
| Proveedor | Autenticación | Notas |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (también AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
Salida nativa de nota de voz Ogg/Opus y telefonía. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS compatible con OpenAI. Usa hexgrad/Kokoro-82M de forma predeterminada. |
| ElevenLabs | ELEVENLABS_API_KEY o XI_API_KEY |
Clonación de voz, multilingüe, determinista mediante seed. |
| Google Gemini | GEMINI_API_KEY o GOOGLE_API_KEY |
TTS de la API de Gemini; sensible a la personalidad mediante promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Salida de nota de voz y telefonía. |
| Inworld | INWORLD_API_KEY |
API de TTS en streaming. Nota de voz Opus nativa y telefonía PCM. |
| Local CLI | ninguna | Ejecuta un comando local de TTS configurado. |
| Microsoft | ninguna | TTS neural público de Edge mediante node-edge-tts. De mejor esfuerzo, sin SLA. |
| MiniMax | MINIMAX_API_KEY (o plan Token: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. Usa speech-2.8-hd de forma predeterminada. |
| OpenAI | OPENAI_API_KEY |
También se usa para resumen automático; admite instructions de personalidad. |
| OpenRouter | OPENROUTER_API_KEY (puede reutilizar models.providers.openrouter.apiKey) |
Modelo predeterminado hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY o BYTEPLUS_SEED_SPEECH_API_KEY (AppID/token heredados: VOLCENGINE_TTS_APPID/_TOKEN) |
API HTTP BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Proveedor compartido de imagen, video y voz. |
| xAI | XAI_API_KEY |
TTS por lotes de xAI. La nota de voz Opus nativa no es compatible. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS de MiMo mediante completados de chat de Xiaomi. |
Si se configuran varios proveedores, se usa primero el seleccionado y los
demás quedan como opciones de respaldo. El resumen automático usa summaryModel
(o agents.defaults.model.primary), por lo que ese proveedor también debe estar
autenticado si mantienes los resúmenes activados.
Configuración
La configuración de TTS vive en messages.tts dentro de
~/.openclaw/openclaw.json. Elige un preset y adapta el bloque del proveedor:
Azure Speech
{
messages: {
tts: {
auto: "always",
provider: "azure-speech",
providers: {
"azure-speech": {
apiKey: "${AZURE_SPEECH_KEY}",
region: "eastus",
voice: "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",
voiceId: "EXAVITQu4vr4xnSDxMaL",
},
},
},
},
}
Google Gemini
{
messages: {
tts: {
auto: "always",
provider: "google",
providers: {
google: {
apiKey: "${GEMINI_API_KEY}",
model: "gemini-3.1-flash-tts-preview",
voiceName: "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}",
voiceId: "YTpq7expH9539ERJ",
},
},
},
},
}
Inworld
{
messages: {
tts: {
auto: "always",
provider: "inworld",
providers: {
inworld: {
apiKey: "${INWORLD_API_KEY}",
modelId: "inworld-tts-1.5-max",
voiceId: "Sarah",
temperature: 0.7,
},
},
},
},
}
Local CLI
{
messages: {
tts: {
auto: "always",
provider: "tts-local-cli",
providers: {
"tts-local-cli": {
command: "say",
args: ["-o", "{{OutputPath}}", "{{Text}}"],
outputFormat: "wav",
timeoutMs: 120000,
},
},
},
},
}
Microsoft (sin clave)
{
messages: {
tts: {
auto: "always",
provider: "microsoft",
providers: {
microsoft: {
enabled: true,
voice: "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",
voiceId: "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",
voice: "alloy",
},
elevenlabs: {
apiKey: "${ELEVENLABS_API_KEY}",
model: "eleven_multilingual_v2",
voiceId: "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",
voice: "af_alloy",
responseFormat: "mp3",
},
},
},
},
}
Volcengine
{
messages: {
tts: {
auto: "always",
provider: "volcengine",
providers: {
volcengine: {
apiKey: "${VOLCENGINE_TTS_API_KEY}",
resourceId: "seed-tts-1.0",
voice: "en_female_anna_mars_bigtts",
},
},
},
},
}
xAI
{
messages: {
tts: {
auto: "always",
provider: "xai",
providers: {
xai: {
apiKey: "${XAI_API_KEY}",
voiceId: "eve",
language: "en",
responseFormat: "mp3",
},
},
},
},
}
Xiaomi MiMo
{
messages: {
tts: {
auto: "always",
provider: "xiaomi",
providers: {
xiaomi: {
apiKey: "${XIAOMI_API_KEY}",
model: "mimo-v2.5-tts",
voice: "mimo_default",
format: "mp3",
},
},
},
},
}
Sobrescrituras de voz por agente
Usa agents.list[].tts cuando un agente deba hablar con un proveedor, voz,
modelo, personalidad o modo Auto-TTS diferente. El bloque del agente se combina
en profundidad sobre messages.tts, de modo que las credenciales del proveedor
pueden permanecer en la configuración global del proveedor:
{
messages: {
tts: {
auto: "always",
provider: "elevenlabs",
providers: {
elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" },
},
},
},
agents: {
list: [
{
id: "reader",
tts: {
providers: {
elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" },
},
},
},
],
},
}
Para fijar una personalidad por agente, define agents.list[].tts.persona
junto con la configuración del proveedor; sobrescribe la messages.tts.persona
global solo para ese agente.
Orden de precedencia para respuestas automáticas, /tts audio, /tts status y la herramienta de agente
tts:
messages.ttsagents.list[].ttsactivo- sobrescritura de canal, cuando el canal admite
channels.<channel>.tts - sobrescritura de cuenta, cuando el canal pasa
channels.<channel>.accounts.<id>.tts - preferencias locales de
/ttspara este host - directivas en línea
[[tts:...]]cuando las sobrescrituras del modelo están habilitadas
Las sobrescrituras de canal y cuenta usan la misma forma que messages.tts y se
fusionan en profundidad sobre las capas anteriores, de modo que las credenciales
compartidas del proveedor pueden permanecer en messages.tts mientras un canal
o una cuenta de bot cambia solo la voz, el modelo, la persona o el modo automático:
{
messages: {
tts: {
provider: "openai",
providers: {
openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },
},
},
},
channels: {
feishu: {
accounts: {
english: {
tts: {
providers: {
openai: { voice: "shimmer" },
},
},
},
},
},
},
}
Personas
Una persona es una identidad hablada estable que puede aplicarse de forma determinista entre proveedores. Puede preferir un proveedor, definir una intención de prompt neutral respecto al proveedor y llevar vinculaciones específicas de proveedor para voces, modelos, plantillas de prompt, semillas y ajustes de voz.
Persona mínima
{
messages: {
tts: {
auto: "always",
persona: "narrator",
personas: {
narrator: {
label: "Narrator",
provider: "elevenlabs",
providers: {
elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2" },
},
},
},
},
},
}
Persona completa (prompt neutral respecto al proveedor)
{
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",
voiceName: "Algieba",
promptTemplate: "audio-profile-v1",
},
openai: { model: "gpt-4o-mini-tts", voice: "cedar" },
elevenlabs: {
voiceId: "voice_id",
modelId: "eleven_multilingual_v2",
seed: 42,
voiceSettings: {
stability: 0.65,
similarityBoost: 0.8,
style: 0.25,
useSpeakerBoost: true,
speed: 0.95,
},
},
},
},
},
},
},
}
Resolución de personas
La persona activa se selecciona de forma determinista:
- Preferencia local
/tts persona <id>, si está establecida. messages.tts.persona, si está establecida.- Ninguna persona.
La selección del proveedor se ejecuta con prioridad explícita:
- Sobrescrituras directas (CLI, Gateway, Talk, directivas TTS permitidas).
- Preferencia local
/tts provider <id>. providerde la persona activa.messages.tts.provider.- Selección automática del registro.
Para cada intento de proveedor, OpenClaw fusiona configuraciones en este orden:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Sobrescrituras de solicitud de confianza
- Sobrescrituras permitidas de directivas TTS emitidas por el modelo
Cómo usan los proveedores los prompts de persona
Los campos de prompt de persona (profile, scene, sampleContext, style, accent,
pacing, constraints) son neutrales respecto al proveedor. Cada proveedor decide cómo
usarlos:
Google Gemini
Envuelve los campos de prompt de persona en una estructura de prompt TTS de Gemini solo cuando
la configuración efectiva del proveedor Google establece promptTemplate: "audio-profile-v1"
o personaPrompt. Los campos antiguos audioProfile y speakerName
se siguen anteponiendo como texto de prompt específico de Google. Las etiquetas de audio en línea como
[whispers] o [laughs] dentro de un bloque [[tts:text]] se conservan
dentro de la transcripción de Gemini; OpenClaw no genera estas etiquetas.
OpenAI
Asigna los campos de prompt de persona al campo instructions de la solicitud solo cuando
no hay instructions explícitas de OpenAI configuradas. Las instructions
explícitas siempre tienen prioridad.
Other providers
Usan solo las vinculaciones de persona específicas del proveedor bajo
personas.<id>.providers.<provider>. Los campos de prompt de persona se ignoran
salvo que el proveedor implemente su propia asignación de prompt de persona.
Política de reserva
fallbackPolicy controla el comportamiento cuando una persona no tiene vinculación para el
proveedor intentado:
| Política | Comportamiento |
|---|---|
preserve-persona |
Predeterminado. Los campos de prompt neutrales respecto al proveedor siguen disponibles; el proveedor puede usarlos o ignorarlos. |
provider-defaults |
La persona se omite de la preparación del prompt para ese intento; el proveedor usa sus valores predeterminados neutrales mientras continúa la reserva a otros proveedores. |
fail |
Omite ese intento de proveedor con reasonCode: "not_configured" y personaBinding: "missing". Los proveedores de reserva se siguen intentando. |
La solicitud TTS completa solo falla cuando todos los proveedores intentados se omiten o fallan.
La selección del proveedor de sesión de Talk tiene alcance de sesión. Un cliente de Talk debe elegir
ids de proveedor, ids de modelo, ids de voz y locales desde talk.catalog y pasarlos
a través de la sesión de Talk o la solicitud de traspaso. Abrir una sesión de voz no debería
mutar messages.tts ni los valores predeterminados globales del proveedor de Talk.
Directivas impulsadas por el modelo
De forma predeterminada, el asistente puede emitir directivas [[tts:...]] para sobrescribir
voz, modelo o velocidad para una sola respuesta, además de un bloque opcional
[[tts:text]]...[[/tts:text]] para indicaciones expresivas que deberían aparecer solo en
audio:
Here you go.
[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
[[tts:text]](laughs) Read the song once more.[[/tts:text]]
Cuando messages.tts.auto es "tagged", las directivas son obligatorias para activar
audio. La entrega de bloques en streaming elimina las directivas del texto visible antes de que el
canal las vea, incluso cuando están divididas entre bloques adyacentes.
provider=... se ignora salvo que modelOverrides.allowProvider: true. Cuando una
respuesta declara provider=..., las demás claves de esa directiva son analizadas
solo por ese proveedor; las claves no admitidas se eliminan y se notifican como advertencias
de directivas TTS.
Claves de directiva disponibles:
provider(id de proveedor registrado; requiereallowProvider: true)voice/voiceName/voice_name/google_voice/voiceIdmodel/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volumen de MiniMax, 0–10)pitch(tono entero de MiniMax, −12 a 12; los valores fraccionarios se truncan)emotion(etiqueta de emoción de Volcengine)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Deshabilitar por completo las sobrescrituras del modelo:
{ messages: { tts: { modelOverrides: { enabled: false } } } }
Permitir el cambio de proveedor mientras se mantienen configurables otros controles:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }
Comandos slash
Comando único /tts. En Discord, OpenClaw también registra /voice porque
/tts es un comando integrado de Discord; el texto /tts ... sigue funcionando.
/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>
Notas de comportamiento:
/tts onescribe la preferencia local de TTS enalways;/tts offla escribe enoff./tts chat on|off|defaultescribe una sobrescritura de auto-TTS con alcance de sesión para el chat actual./tts persona <id>escribe la preferencia local de persona;/tts persona offla borra./tts latestlee la respuesta más reciente del asistente desde la transcripción de la sesión actual y la envía como audio una vez. Almacena solo un hash de esa respuesta en la entrada de sesión para suprimir envíos de voz duplicados./tts audiogenera una respuesta de audio puntual (no activa TTS).limitysummaryse almacenan en preferencias locales, no en la configuración principal./tts statusincluye diagnósticos de reserva para el último intento:Fallback: <primary> -> <used>,Attempts: ...y detalle por intento (provider:outcome(reasonCode) latency)./statusmuestra el modo TTS activo además del proveedor, modelo, voz y metadatos sanitizados de endpoint personalizado configurados cuando TTS está habilitado.
Preferencias por usuario
Los comandos slash escriben sobrescrituras locales en prefsPath. El valor predeterminado es
~/.openclaw/settings/tts.json; sobrescríbelo con la variable de entorno OPENCLAW_TTS_PREFS
o messages.tts.prefsPath.
| Campo almacenado | Efecto |
|---|---|
auto |
Sobrescritura local de auto-TTS (always, off, …) |
provider |
Sobrescritura local del proveedor principal |
persona |
Sobrescritura local de persona |
maxLength |
Umbral de resumen (predeterminado 1500 caracteres) |
summarize |
Alternancia de resumen (predeterminado true) |
Estos sobrescriben la configuración efectiva de messages.tts más el bloque
agents.list[].tts activo para ese host.
Formatos de salida (fijos)
La entrega de voz TTS está impulsada por las capacidades del canal. Los plugins de canal anuncian
si TTS de estilo voz debe pedir a los proveedores un destino nativo voice-note o
mantener la síntesis normal audio-file y solo marcar la salida compatible para la entrega
de voz.
- Canales compatibles con notas de voz: las respuestas de nota de voz prefieren Opus (
opus_48000_64de ElevenLabs,opusde OpenAI).- 48 kHz / 64 kbps es una buena compensación para mensajes de voz.
- Feishu / WhatsApp: cuando una respuesta de nota de voz se produce como MP3/WebM/WAV/M4A
u otro archivo que probablemente sea de audio, el plugin del canal la transcodifica a Ogg/Opus
de 48 kHz con
ffmpegantes de enviar el mensaje de voz nativo. WhatsApp envía el resultado mediante la carga útilaudiode Baileys conptt: trueyaudio/ogg; codecs=opus. Si la conversión falla, Feishu recibe el archivo original como adjunto; el envío de WhatsApp falla en lugar de publicar una carga útil PTT incompatible. - BlueBubbles: mantiene la síntesis del proveedor en la ruta normal de archivos de audio; las salidas MP3 y CAF se marcan para la entrega de notas de voz de iMessage.
- Otros canales: MP3 (
mp3_44100_128de ElevenLabs,mp3de OpenAI).- 44,1 kHz / 128 kbps es el equilibrio predeterminado para la claridad de voz.
- MiniMax: MP3 (modelo
speech-2.8-hd, frecuencia de muestreo de 32 kHz) para adjuntos de audio normales. Para destinos de notas de voz anunciados por el canal, OpenClaw transcodifica el MP3 de MiniMax a Opus de 48 kHz conffmpegantes de la entrega cuando el canal anuncia transcodificación. - Xiaomi MiMo: MP3 de forma predeterminada, o WAV cuando se configura. Para destinos de notas de voz anunciados por el canal, OpenClaw transcodifica la salida de Xiaomi a Opus de 48 kHz con
ffmpegantes de la entrega cuando el canal anuncia transcodificación. - CLI local: usa el
outputFormatconfigurado. Los destinos de notas de voz se convierten a Ogg/Opus y la salida telefónica se convierte a PCM mono sin procesar de 16 kHz conffmpeg. - Google Gemini: la TTS de la API de Gemini devuelve PCM sin procesar a 24 kHz. OpenClaw lo envuelve como WAV para adjuntos de audio, lo transcodifica a Opus de 48 kHz para destinos de notas de voz y devuelve PCM directamente para Talk/telefonía.
- Gradium: WAV para adjuntos de audio, Opus para destinos de notas de voz y
ulaw_8000a 8 kHz para telefonía. - Inworld: MP3 para adjuntos de audio normales,
OGG_OPUSnativo para destinos de notas de voz yPCMsin procesar a 22050 Hz para Talk/telefonía. - xAI: MP3 de forma predeterminada;
responseFormatpuede sermp3,wav,pcm,mulawoalaw. OpenClaw usa el endpoint TTS REST por lotes de xAI y devuelve un adjunto de audio completo; el WebSocket de TTS en streaming de xAI no se usa en esta ruta de proveedor. Esta ruta no admite el formato nativo Opus para notas de voz. - Microsoft: usa
microsoft.outputFormat(valor predeterminadoaudio-24khz-48kbitrate-mono-mp3).- El transporte incluido acepta un
outputFormat, pero no todos los formatos están disponibles en el servicio. - Los valores de formato de salida siguen los formatos de salida de Microsoft Speech (incluidos Ogg/WebM Opus).
- Telegram
sendVoiceacepta OGG/MP3/M4A; usa OpenAI/ElevenLabs si necesitas mensajes de voz Opus garantizados. - Si el formato de salida de Microsoft configurado falla, OpenClaw reintenta con MP3.
- El transporte incluido acepta un
Los formatos de salida de OpenAI/ElevenLabs son fijos por canal (consulta lo anterior).
Comportamiento de TTS automático
Cuando messages.tts.auto está habilitado, OpenClaw:
- Omite TTS si la respuesta ya contiene medios o una directiva
MEDIA:. - Omite respuestas muy cortas (menos de 10 caracteres).
- Resume respuestas largas cuando los resúmenes están habilitados, usando
summaryModel(oagents.defaults.model.primary). - Adjunta el audio generado a la respuesta.
- En
mode: "final", sigue enviando TTS de solo audio para respuestas finales transmitidas en streaming después de que se complete el flujo de texto; los medios generados pasan por la misma normalización de medios del canal que los adjuntos de respuesta normales.
Si la respuesta supera maxLength y el resumen está desactivado (o no hay clave de API para el
modelo de resumen), el audio se omite y se envía la respuesta de texto normal.
Respuesta -> TTS habilitado?
no -> enviar texto
sí -> tiene medios / MEDIA: / corta?
sí -> enviar texto
no -> longitud > límite?
no -> TTS -> adjuntar audio
sí -> resumen habilitado?
no -> enviar texto
sí -> resumir -> TTS -> adjuntar audio
Formatos de salida por canal
| Destino | Formato |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Las respuestas de notas de voz prefieren Opus (opus_48000_64 de ElevenLabs, opus de OpenAI). 48 kHz / 64 kbps equilibra claridad y tamaño. |
| Otros canales | MP3 (mp3_44100_128 de ElevenLabs, mp3 de OpenAI). 44.1 kHz / 128 kbps predeterminado para voz. |
| Talk / telefonía | PCM nativo del proveedor (Inworld 22050 Hz, Google 24 kHz), o ulaw_8000 de Gradium para telefonía. |
Notas por proveedor:
- Transcodificación de Feishu / WhatsApp: Cuando una respuesta de nota de voz llega como MP3/WebM/WAV/M4A, el Plugin del canal transcodifica a Ogg/Opus de 48 kHz con
ffmpeg. WhatsApp envía mediante Baileys conptt: trueyaudio/ogg; codecs=opus. Si la conversión falla: Feishu vuelve a adjuntar el archivo original; el envío de WhatsApp falla en lugar de publicar una carga PTT incompatible. - MiniMax / Xiaomi MiMo: MP3 predeterminado (32 kHz para MiniMax
speech-2.8-hd); transcodificado a Opus de 48 kHz para destinos de nota de voz medianteffmpeg. - CLI local: Usa el
outputFormatconfigurado. Los destinos de nota de voz se convierten a Ogg/Opus y la salida de telefonía a PCM mono sin procesar de 16 kHz. - Google Gemini: Devuelve PCM sin procesar de 24 kHz. OpenClaw lo envuelve como WAV para adjuntos, lo transcodifica a Opus de 48 kHz para destinos de nota de voz y devuelve PCM directamente para Talk/telefonía.
- Inworld: Adjuntos MP3, nota de voz nativa
OGG_OPUS,PCMsin procesar de 22050 Hz para Talk/telefonía. - xAI: MP3 de forma predeterminada;
responseFormatpuede sermp3|wav|pcm|mulaw|alaw. Usa el endpoint REST por lotes de xAI; TTS por WebSocket en streaming no se usa. El formato nativo Opus para nota de voz no es compatible. - Microsoft: Usa
microsoft.outputFormat(predeterminadoaudio-24khz-48kbitrate-mono-mp3).sendVoicede Telegram acepta OGG/MP3/M4A; usa OpenAI/ElevenLabs si necesitas mensajes de voz Opus garantizados. Si el formato configurado de Microsoft falla, OpenClaw reintenta con MP3.
Los formatos de salida de OpenAI y ElevenLabs son fijos por canal como se indicó arriba.
Referencia de campos
Top-level messages.tts.*
auto"off" | "always" | "inbound" | "tagged"Modo Auto-TTS. inbound solo envía audio después de un mensaje de voz entrante; tagged solo envía audio cuando la respuesta incluye directivas [[tts:...]] o un bloque [[tts:text]].
enabledbooleanInterruptor heredado. openclaw doctor --fix migra esto a auto.
mode"final" | "all""all" incluye respuestas de herramientas/bloques además de las respuestas finales.
providerstringId. del proveedor de voz. Cuando no está definido, OpenClaw usa el primer proveedor configurado en el orden de selección automática del registro. El provider: "edge" heredado se reescribe a "microsoft" mediante openclaw doctor --fix.
personastringId. de persona activa de personas. Se normaliza a minúsculas.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
Identidad hablada estable. Campos: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Consulta Personas.
summaryModelstringModelo económico para resumen automático; el predeterminado es agents.defaults.model.primary. Acepta provider/model o un alias de modelo configurado.
modelOverridesobjectPermite que el modelo emita directivas TTS. enabled tiene el valor predeterminado true; allowProvider tiene el valor predeterminado false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Configuración propiedad del proveedor indexada por id. de proveedor de voz. Los bloques directos heredados (messages.tts.openai, .elevenlabs, .microsoft, .edge) se reescriben mediante openclaw doctor --fix; confirma solo messages.tts.providers.<id>.
maxTextLengthnumberLímite estricto para caracteres de entrada TTS. /tts audio falla si se supera.
timeoutMsnumberTiempo de espera de la solicitud en milisegundos.
prefsPathstringSobrescribe la ruta JSON de preferencias locales (proveedor/límite/resumen). Predeterminado ~/.openclaw/settings/tts.json.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, o SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Región de Azure Speech (p. ej. eastus). Env: AZURE_SPEECH_REGION o SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Sobrescritura opcional del endpoint de Azure Speech (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
ShortName de voz de Azure. Predeterminado en-US-JennyNeural.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Código de idioma SSML. Predeterminado en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat de Azure para audio estándar. Predeterminado audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat de Azure para salida de nota de voz. Predeterminado ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Recurre a ELEVENLABS_API_KEY o XI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Id. de modelo (p. ej. eleven_multilingual_v2, eleven_v3).
OPENCLAW_DOCS_MARKER:paramClose:
voiceIdstringvoiceSettingsobjectstability, similarityBoost, style (cada uno 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 de 2 letras (p. ej. en, de).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
Entero 0..4294967295 para determinismo de mejor esfuerzo.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Recurre a GEMINI_API_KEY / GOOGLE_API_KEY. Si se omite, TTS puede reutilizar models.providers.google.apiKey antes de recurrir al entorno.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Modelo TTS de Gemini. Predeterminado gemini-3.1-flash-tts-preview.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTmFtZSIgdHlwZT0ic3RyaW5nIg
Nombre de voz preconstruida de Gemini. Predeterminado Kore. Alias: voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Establécelo en audio-profile-v1 para envolver los campos del prompt de la persona activa en una estructura de prompt TTS determinista de Gemini.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Solo se acepta https://generativelanguage.googleapis.com.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Predeterminado https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Predeterminado Emma (YTpq7expH9539ERJ).
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Principal de Inworld
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Predeterminado https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
Predeterminado inworld-tts-1.5-max. También: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Predeterminado Sarah.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Temperatura de muestreo 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
CLI local (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
Argumentos del comando. Admite marcadores de posición {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
Formato de salida de CLI esperado. Predeterminado mp3 para adjuntos de audio.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
Tiempo de espera del comando en milisegundos. Predeterminado 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,Microsoft (sin clave de API)
enabledbooleanOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Nombre de voz neuronal de Microsoft (p. ej. en-US-MichelleNeural).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Código de idioma (p. ej. en-US).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Formato de salida de Microsoft. Predeterminado audio-24khz-48kbitrate-mono-mp3. No todos los formatos son compatibles con el transporte incluido respaldado por Edge.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
Cadenas de porcentaje (p. ej. +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
Alias heredado. Ejecuta openclaw doctor --fix para reescribir la configuración persistida en providers.microsoft.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Recurre a MINIMAX_API_KEY. Autenticación de Token Plan mediante MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY o MINIMAX_CODING_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Predeterminado https://api.minimax.io. Env: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Predeterminado speech-2.8-hd. Env: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Predeterminado English_expressive_narrator. Env: MINIMAX_TTS_VOICE_ID.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. Predeterminado 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. Predeterminado 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Entero -12..12. Predeterminado 0. Los valores fraccionarios se truncan antes de la solicitud.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Recurre a OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
ID del modelo TTS de OpenAI (p. ej. gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Nombre de voz (p. ej. alloy, cedar).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Campo instructions explícito de OpenAI. Cuando se establece, los campos de prompt de persona no se asignan automáticamente.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Campos JSON adicionales fusionados en los cuerpos de solicitud de /audio/speech después de los campos TTS generados de OpenAI. Usa esto para endpoints compatibles con OpenAI, como Kokoro, que requieren claves específicas del proveedor como lang; las claves de prototipo no seguras se ignoran.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringSobrescribe el endpoint TTS de OpenAI. Orden de resolución: configuración → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Los valores no predeterminados se tratan como endpoints TTS compatibles con OpenAI, por lo que se aceptan nombres personalizados de modelo y voz.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: OPENROUTER_API_KEY. Puede reutilizar models.providers.openrouter.apiKey.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Predeterminado https://openrouter.ai/api/v1. El heredado https://openrouter.ai/v1 se normaliza.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Predeterminado hexgrad/kokoro-82m. Alias: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Predeterminado af_alloy. Alias: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
Predeterminado mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: VOLCENGINE_TTS_API_KEY o BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
Predeterminado seed-tts-1.0. Env: VOLCENGINE_TTS_RESOURCE_ID. Usa seed-tts-2.0 cuando tu proyecto tenga derecho a TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Encabezado de clave de app. Predeterminado aGjiRDfUWi. Env: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Sobrescribe el endpoint HTTP de TTS de Seed Speech. Env: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Tipo de voz. Predeterminado en_female_anna_mars_bigtts. Env: VOLCENGINE_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Campos heredados de Volcengine Speech Console. Env: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (predeterminado 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
Predeterminado https://api.x.ai/v1. Env: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
Predeterminado eve. Voces en vivo: ara, eve, leo, rex, sal, una.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
Código de idioma BCP-47 o auto. Predeterminado en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
Predeterminado 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
Predeterminado https://api.xiaomimimo.com/v1. Env: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Predeterminado mimo-v2.5-tts. Env: XIAOMI_TTS_MODEL. También admite mimo-v2-tts.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
Predeterminado mimo_default. Env: XIAOMI_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Predeterminado mp3. Env: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
stylestringHerramienta del agente
La herramienta tts convierte texto a voz y devuelve un adjunto de audio para
la entrega de respuestas. En Feishu, Matrix, Telegram y WhatsApp, el audio se
entrega como mensaje de voz en lugar de como adjunto de archivo. Feishu y
WhatsApp pueden transcodificar la salida TTS no Opus en esta ruta cuando ffmpeg está
disponible.
WhatsApp envía audio mediante Baileys como una nota de voz PTT (audio con
ptt: true) y envía el texto visible por separado del audio PTT porque
los clientes no muestran de forma consistente los subtítulos en las notas de voz.
La herramienta acepta los campos opcionales channel y timeoutMs; timeoutMs es un
tiempo de espera de solicitud del proveedor por llamada en milisegundos.
RPC de Gateway
| Método | Propósito |
|---|---|
tts.status |
Leer el estado TTS actual y el último intento. |
tts.enable |
Establecer la preferencia automática local en always. |
tts.disable |
Establecer la preferencia automática local en off. |
tts.convert |
Texto a audio puntual. |
tts.setProvider |
Establecer la preferencia local de proveedor. |
tts.setPersona |
Establecer la preferencia local de persona. |
tts.providers |
Listar proveedores configurados y estado. |
Enlaces de servicio
- Guía de texto a voz de OpenAI
- Referencia de la API de audio de OpenAI
- Texto a voz REST de Azure Speech
- Proveedor de Azure Speech
- Texto a voz de ElevenLabs
- Autenticación de ElevenLabs
- Gradium
- API TTS de Inworld
- API MiniMax T2A v2
- API HTTP TTS de Volcengine
- Síntesis de voz de Xiaomi MiMo
- node-edge-tts
- Formatos de salida de Microsoft Speech
- Texto a voz de xAI