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 incluida 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 la voz de Microsoft
El proveedor de voz de Microsoft incluido actualmente usa el servicio TTS neural 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.
Debido a que esta ruta es un servicio web público sin un SLA ni una cuota publicados,
trátalo como de mejor esfuerzo. Si necesitas límites garantizados y soporte, usa OpenAI
o ElevenLabs.
Claves opcionales
Si quieres usar 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 voz de Microsoft
¿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 localmente con /tts on.
Cuando messages.tts.provider no está definido, OpenClaw elige el primer
proveedor de voz configurado según el orden de selección automática del registro.
Configuración
La configuración de TTS se encuentra enmessages.tts dentro de openclaw.json.
El esquema completo está en Configuración del Gateway.
Configuración mínima (habilitar + proveedor)
OpenAI como principal con ElevenLabs como respaldo
Microsoft como principal (sin clave de API)
MiniMax como principal
Desactivar la voz de Microsoft
Límites personalizados + ruta de preferencias
Responder solo con audio después de un mensaje de voz entrante
Desactivar 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á definido, OpenClaw usa el primer proveedor de voz configurado según el orden de selección automática del registro. - El valor heredado
provider: "edge"sigue funcionando y se normaliza amicrosoft. summaryModel: modelo económico opcional para resumen automático; usa de forma predeterminadaagents.defaults.model.primary.- Acepta
provider/modelo un alias de modelo configurado.
- Acepta
modelOverrides: permite que el modelo emita directivas TTS (activado de forma predeterminada).allowProviderusafalsede forma predeterminada (el cambio de proveedor es opcional).
providers.<id>: configuración propiedad del proveedor, indexada por el id del proveedor de voz.- Los bloques heredados de proveedor directo (
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: reemplaza la ruta del JSON local de preferencias (proveedor/límite/resumen).- Los valores de
apiKeyusan como respaldo variables de entorno (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: reemplaza la URL base de la API de ElevenLabs.providers.openai.baseUrl: reemplaza el endpoint 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 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 ejemplo,en,de)providers.elevenlabs.seed: entero0..4294967295(determinismo de mejor esfuerzo)providers.minimax.baseUrl: reemplaza la URL base de la API de MiniMax (predeterminadohttps://api.minimax.io, entorno:MINIMAX_API_HOST).providers.minimax.model: modelo TTS (predeterminadospeech-2.8-hd, entorno:MINIMAX_TTS_MODEL).providers.minimax.voiceId: identificador de voz (predeterminadoEnglish_expressive_narrator, entorno:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: velocidad de reproducción0.5..2.0(predeterminado 1.0).providers.minimax.vol: volumen(0, 10](predeterminado 1.0; debe ser mayor que 0).providers.minimax.pitch: cambio de tono-12..12(predeterminado 0).providers.microsoft.enabled: permite el uso de la voz de Microsoft (predeterminadotrue; sin clave de API).providers.microsoft.voice: nombre de voz neural de Microsoft (por ejemplo,en-US-MichelleNeural).providers.microsoft.lang: código de idioma (por ejemplo,en-US).providers.microsoft.outputFormat: formato de salida de Microsoft (por ejemplo,audio-24khz-48kbitrate-mono-mp3).- Consulta los formatos de salida de voz de Microsoft para ver valores válidos; no todos los formatos son compatibles con el transporte incluido basado en 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 voz de Microsoft.providers.microsoft.timeoutMs: reemplazo del tiempo de espera de la solicitud (ms).edge.*: alias heredado para la misma configuración de Microsoft.
Reemplazos controlados por el modelo (activados de forma predeterminada)
De forma predeterminada, el modelo puede emitir directivas TTS para una sola respuesta. Cuandomessages.tts.auto es tagged, estas directivas son necesarias para activar el audio.
Cuando está habilitado, el modelo puede emitir directivas [[tts:...]] para reemplazar la voz
en 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 de barra escriben reemplazos locales enprefsPath (predeterminado:
~/.openclaw/settings/tts.json, reemplazable con OPENCLAW_TTS_PREFS o
messages.tts.prefsPath).
Campos almacenados:
enabledprovidermaxLength(umbral del resumen; 1500 caracteres de forma predeterminada)summarize(truede forma predeterminada)
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 la claridad del habla.
- 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 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 voz de Microsoft (incluidos Ogg/WebM Opus).
sendVoicede Telegram acepta 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
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 una 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 del comando de barra
Hay un solo comando:/tts.
Consulta Comandos de barra para conocer los 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 (las reglas de allowlist/owner siguen aplicándose).
commands.texto el registro de comandos nativos debe estar habilitado.- La configuración
messages.tts.autoaceptaoff|always|inbound|tagged. /tts onescribe la preferencia local de TTS comoalways;/tts offla escribe comooff.- Usa la configuración cuando quieras valores predeterminados
inboundotagged. limitysummaryse almacenan en preferencias locales, no en la configuración principal./tts audiogenera una respuesta de audio puntual (no activa TTS)./tts statusincluye visibilidad del respaldo para el intento más reciente:- respaldo exitoso:
Fallback: <primary> -> <used>másAttempts: ... - error:
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 la solicitud (cuando el proveedor lo devuelve), que aparece en los errores/registros de TTS.
Herramienta del agente
La herramientatts convierte texto a voz y devuelve un adjunto de audio para
la entrega de la respuesta. Cuando el canal es Feishu, Matrix, Telegram o WhatsApp,
el audio se entrega como mensaje de voz en lugar de un archivo adjunto.
RPC de Gateway
Métodos de Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers