Texto a voz (TTS)
OpenClaw puede convertir respuestas salientes en audio usando ElevenLabs, Microsoft, MiniMax u OpenAI. Funciona en cualquier lugar donde OpenClaw pueda enviar audio.Servicios compatibles
- ElevenLabs (proveedor principal o de respaldo)
- Microsoft (proveedor principal o de respaldo; la implementación empaquetada actual usa
node-edge-tts) - MiniMax (proveedor principal o de respaldo; usa la API T2A v2)
- OpenAI (proveedor principal o de respaldo; también se usa para resúmenes)
Notas sobre Microsoft speech
El proveedor de voz de Microsoft empaquetado actualmente usa el servicio neural de TTS en línea de Microsoft Edge mediante la bibliotecanode-edge-tts. Es un servicio alojado (no
local), usa endpoints de Microsoft y no requiere una clave de API.
node-edge-tts expone opciones de configuración de voz y formatos de salida, pero
no todas las opciones son compatibles con el servicio. La configuración heredada y la entrada de directivas
que usan edge siguen funcionando y se normalizan a microsoft.
Dado que esta ruta es un servicio web público sin un SLA ni cuota publicados,
considérala como de mejor esfuerzo. Si necesitas límites garantizados y soporte, usa OpenAI
o ElevenLabs.
Claves opcionales
Si quieres OpenAI, ElevenLabs o MiniMax:ELEVENLABS_API_KEY(oXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel configurado (o agents.defaults.model.primary),
por lo que ese proveedor también debe estar autenticado si habilitas los resúmenes.
Enlaces de servicios
- Guía de texto a voz de OpenAI
- Referencia de la API de Audio de OpenAI
- Texto a voz de ElevenLabs
- Autenticación de ElevenLabs
- API T2A v2 de MiniMax
- node-edge-tts
- Formatos de salida de Microsoft Speech
¿Está habilitado de forma predeterminada?
No. El TTS automático está desactivado de forma predeterminada. Habilítalo en la configuración conmessages.tts.auto o por sesión con /tts always (alias: /tts on).
Cuando messages.tts.provider no está configurado, OpenClaw elige el primer
proveedor de voz configurado en el orden de selección automática del registro.
Configuración
La configuración de TTS vive enmessages.tts en openclaw.json.
El esquema completo está en Configuración del Gateway.
Configuración mínima (habilitar + proveedor)
OpenAI principal con ElevenLabs como respaldo
Microsoft principal (sin clave de API)
MiniMax principal
Deshabilitar Microsoft speech
Límites personalizados + ruta de preferencias
Responder con audio solo después de un mensaje de voz entrante
Deshabilitar el resumen automático para respuestas largas
Notas sobre los campos
auto: modo de TTS automático (off,always,inbound,tagged).inboundsolo envía audio después de un mensaje de voz entrante.taggedsolo envía audio cuando la respuesta incluye etiquetas[[tts]].
enabled: interruptor heredado (doctor migra esto aauto).mode:"final"(predeterminado) o"all"(incluye respuestas de herramientas/bloques).provider: id del proveedor de voz, como"elevenlabs","microsoft","minimax"u"openai"(el respaldo es automático).- Si
providerno está configurado, OpenClaw usa el primer proveedor de voz configurado en el orden de selección automática del registro. - El heredado
provider: "edge"sigue funcionando y se normaliza amicrosoft. summaryModel: modelo económico opcional para resumen automático; usa por defectoagents.defaults.model.primary.- Acepta
provider/modelo un alias de modelo configurado.
- Acepta
modelOverrides: permite que el modelo emita directivas de TTS (activado de forma predeterminada).allowProviderusafalsede forma predeterminada (el cambio de proveedor es opcional).
providers.<id>: configuración propiedad del proveedor, indexada por id del proveedor de voz.- Los bloques heredados directos de proveedor (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) se migran automáticamente amessages.tts.providers.<id>al cargar. maxTextLength: límite estricto para la entrada de TTS (caracteres)./tts audiofalla si se supera.timeoutMs: tiempo de espera de la solicitud (ms).prefsPath: anula la ruta local del JSON de preferencias (proveedor/límite/resumen).- Los valores
apiKeyrecurren a variables de entorno (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: anula la URL base de la API de ElevenLabs.providers.openai.baseUrl: anula el endpoint de TTS de OpenAI.- Orden de resolución:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Los valores no predeterminados se tratan como endpoints de TTS compatibles con OpenAI, por lo que se aceptan nombres personalizados de modelo y voz.
- Orden de resolución:
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 de 2 letras (por ejemploen,de)providers.elevenlabs.seed: entero0..4294967295(determinismo de mejor esfuerzo)providers.minimax.baseUrl: anula la URL base de la API de MiniMax (predeterminadahttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: modelo de TTS (predeterminadospeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: identificador de voz (predeterminadoEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: velocidad de reproducción0.5..2.0(predeterminada 1.0).providers.minimax.vol: volumen(0, 10](predeterminado 1.0; debe ser mayor que 0).providers.minimax.pitch: desplazamiento de tono-12..12(predeterminado 0).providers.microsoft.enabled: permite el uso de Microsoft speech (predeterminadotrue; sin clave de API).providers.microsoft.voice: nombre de voz neural de Microsoft (por ejemploen-US-MichelleNeural).providers.microsoft.lang: código de idioma (por ejemploen-US).providers.microsoft.outputFormat: formato de salida de Microsoft (por ejemploaudio-24khz-48kbitrate-mono-mp3).- Consulta los formatos de salida de Microsoft Speech para ver valores válidos; no todos los formatos son compatibles con el transporte empaquetado respaldado por Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: cadenas de porcentaje (por ejemplo+10%,-5%).providers.microsoft.saveSubtitles: escribe subtítulos JSON junto al archivo de audio.providers.microsoft.proxy: URL de proxy para solicitudes de Microsoft speech.providers.microsoft.timeoutMs: anulación del tiempo de espera de la solicitud (ms).edge.*: alias heredado para la misma configuración de Microsoft.
Anulaciones controladas por el modelo (activadas de forma predeterminada)
De forma predeterminada, el modelo puede emitir directivas de TTS para una sola respuesta. Cuandomessages.tts.auto es tagged, estas directivas son obligatorias para activar el audio.
Cuando está habilitado, el modelo puede emitir directivas [[tts:...]] para anular la voz
de una sola respuesta, además de un bloque opcional [[tts:text]]...[[/tts:text]] para
proporcionar etiquetas expresivas (risa, indicaciones de canto, etc.) que solo deben aparecer en
el audio.
Las directivas provider=... se ignoran a menos que modelOverrides.allowProvider: true.
Ejemplo de carga útil de respuesta:
provider(id del proveedor de voz registrado, por ejemploopenai,elevenlabs,minimaxomicrosoft; requiereallowProvider: true)voice(voz de OpenAI) ovoiceId(ElevenLabs / MiniMax)model(modelo TTS de OpenAI, id de modelo de ElevenLabs o modelo de MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volumen de MiniMax, 0-10)pitch(tono de MiniMax, -12 a 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Preferencias por usuario
Los comandos slash escriben anulaciones locales enprefsPath (predeterminado:
~/.openclaw/settings/tts.json, anulable con OPENCLAW_TTS_PREFS o
messages.tts.prefsPath).
Campos almacenados:
enabledprovidermaxLength(umbral de resumen; predeterminado 1500 caracteres)summarize(predeterminadotrue)
messages.tts.* para ese host.
Formatos de salida (fijos)
- Feishu / Matrix / Telegram / WhatsApp: mensaje de voz Opus (
opus_48000_64de ElevenLabs,opusde OpenAI).- 48 kHz / 64 kbps es un buen equilibrio para mensajes de voz.
- Otros canales: MP3 (
mp3_44100_128de ElevenLabs,mp3de OpenAI).- 44.1 kHz / 128 kbps es el equilibrio predeterminado para claridad de voz.
- MiniMax: MP3 (modelo
speech-2.8-hd, frecuencia de muestreo de 32 kHz). El formato de nota de voz no es compatible de forma nativa; usa OpenAI o ElevenLabs para mensajes de voz Opus garantizados. - Microsoft: usa
microsoft.outputFormat(predeterminadoaudio-24khz-48kbitrate-mono-mp3).- El transporte empaquetado 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 (incluido Ogg/WebM Opus).
- Telegram
sendVoiceacepta OGG/MP3/M4A; usa OpenAI/ElevenLabs si necesitas mensajes de voz Opus garantizados. - Si falla el formato de salida configurado de Microsoft, OpenClaw reintenta con MP3.
- El transporte empaquetado acepta un
Comportamiento del TTS automático
Cuando está habilitado, OpenClaw:- omite TTS si la respuesta ya contiene medios o una directiva
MEDIA:. - omite respuestas muy cortas (< 10 caracteres).
- resume respuestas largas cuando está habilitado usando
agents.defaults.model.primary(osummaryModel). - adjunta el audio generado a la respuesta.
maxLength y el resumen está desactivado (o no hay clave de API para el
modelo de resumen), se omite el audio y se envía la respuesta de texto normal.
Diagrama de flujo
Uso de comandos slash
Hay un único comando:/tts.
Consulta Comandos slash para ver detalles de habilitación.
Nota sobre Discord: /tts es un comando integrado de Discord, por lo que OpenClaw registra
/voice como comando nativo allí. El texto /tts ... sigue funcionando.
- Los comandos requieren un remitente autorizado (siguen aplicándose las reglas de allowlist/propietario).
commands.texto el registro de comandos nativos deben estar habilitados.off|always|inbound|taggedson interruptores por sesión (/tts ones un alias de/tts always).limitysummaryse almacenan en preferencias locales, no en la configuración principal./tts audiogenera una respuesta de audio única (no activa TTS)./tts statusincluye visibilidad del respaldo para el intento más reciente:- respaldo exitoso:
Fallback: <primary> -> <used>másAttempts: ... - fallo:
Error: ...másAttempts: ... - diagnósticos detallados:
Attempt details: provider:outcome(reasonCode) latency
- respaldo exitoso:
- Los fallos de API de OpenAI y ElevenLabs ahora incluyen el detalle del error del proveedor analizado y el id de solicitud (cuando el proveedor lo devuelve), lo cual aparece en errores/registros de TTS.
Herramienta del agente
La herramientatts convierte texto a voz y devuelve un adjunto de audio para
la entrega de respuestas. Cuando el canal es Feishu, Matrix, Telegram o WhatsApp,
el audio se entrega como mensaje de voz en lugar de como archivo adjunto.
RPC del Gateway
Métodos del Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers