Tools
Texto a voz
OpenClaw convierte las respuestas salientes en audio mediante 14 proveedores de voz: mensajes de voz nativos en Feishu, Matrix, Telegram y WhatsApp; archivos adjuntos de audio en los demás casos; y transmisiones PCM/Ulaw para telefonía y Talk.
TTS es la mitad de salida de voz del modo stt-tts de Talk (talk.speak utiliza esta
misma ruta de síntesis). Las sesiones de Talk realtime nativas del proveedor sintetizan
la voz dentro del proveedor en tiempo real; las sesiones transcription nunca
sintetizan una respuesta de voz del asistente.
Inicio rápido
Elegir un proveedor
OpenAI y ElevenLabs son las opciones alojadas más fiables. Microsoft y la CLI local funcionan sin una clave de API. Consulte la matriz de proveedores para ver la lista completa.
Establecer la clave de API
Exporte la variable de entorno del proveedor (por ejemplo, OPENAI_API_KEY,
ELEVENLABS_API_KEY). Microsoft y la CLI local no necesitan ninguna clave.
Activar en la configuración
Establezca tts.auto: "always" y tts.provider:
{ tts: { auto: "always", provider: "elevenlabs", },}Probarlo 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 notas de voz Ogg/Opus y telefonía. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS compatible con OpenAI. El valor predeterminado es hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY o XI_API_KEY |
Clonación de voz, multilingüe y determinista mediante seed; transmisión para la reproducción de voz en Discord. |
| Google Gemini | GEMINI_API_KEY o GOOGLE_API_KEY |
TTS por lotes de la API de Gemini; adaptable a la personalidad mediante promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Salida de notas de voz y telefonía. |
| Inworld | INWORLD_API_KEY |
API de TTS por transmisión. Notas de voz Opus nativas y telefonía PCM. |
| CLI local | ninguna | Ejecuta un comando TTS local configurado. |
| Microsoft | ninguna | TTS neuronal público de Edge mediante node-edge-tts. Sin garantías y sin SLA. |
| MiniMax | MINIMAX_API_KEY (o plan de tokens: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. El valor predeterminado es speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
También se utiliza para el resumen automático; admite la personalidad instructions. |
| 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 de BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Proveedor compartido de imágenes, vídeo y voz. |
| xAI | XAI_API_KEY |
TTS por lotes de xAI. Las notas de voz Opus nativas no son compatibles. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS de MiMo mediante finalizaciones de chat de Xiaomi. |
Si hay varios proveedores configurados, se utiliza primero el seleccionado y los
demás quedan como opciones de reserva. El resumen automático utiliza summaryModel (o
agents.defaults.model.primary), por lo que ese proveedor también debe estar autenticado
si se mantienen activados los resúmenes.
Configuración
La configuración de TTS se encuentra en tts dentro de ~/.openclaw/openclaw.json. Elija un
preajuste y adapte el bloque del proveedor. Los campos speakerVoice/speakerVoiceId
que se muestran a continuación son los canónicos; los nombres de campo voice/voiceId/
voiceName propios de cada proveedor siguen funcionando como alias heredados.
Azure Speech
{tts: {auto: "always",provider: "azure-speech",providers: { "azure-speech": { apiKey: "${AZURE_SPEECH_KEY}", region: "eastus", speakerVoice: "en-US-JennyNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus", },},},}ElevenLabs
{tts: {auto: "always",provider: "elevenlabs",providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", },},},}Google Gemini
{tts: {auto: "always",provider: "google",providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", speakerVoice: "Kore", // Indicaciones opcionales de estilo en lenguaje natural: // audioProfile: "Habla con un tono tranquilo, como quien presenta un pódcast.", // speakerName: "Alex", },},},}Gradium
{tts: {auto: "always",provider: "gradium",providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", },},},}Inworld
{tts: {auto: "always",provider: "inworld",providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", speakerVoiceId: "Sarah", temperature: 0.7, },},},}CLI local
{tts: {auto: "always",provider: "tts-local-cli",providers: { "tts-local-cli": { command: "say", args: ["-o", "{{OutputPath}}", "{{Text}}"], outputFormat: "wav", timeoutMs: 120000, },},},}Microsoft (sin clave)
{tts: {auto: "always",provider: "microsoft",providers: { microsoft: { enabled: true, speakerVoice: "en-US-MichelleNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", rate: "+0%", pitch: "+0%", },},},}MiniMax
{tts: {auto: "always",provider: "minimax",providers: { minimax: { apiKey: "${MINIMAX_API_KEY}", model: "speech-2.8-hd", speakerVoiceId: "English_expressive_narrator", speed: 1.0, vol: 1.0, pitch: 0, },},},}OpenAI + ElevenLabs
{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", speakerVoice: "alloy", }, elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 }, applyTextNormalization: "auto", languageCode: "en", },},},}OpenRouter
{tts: {auto: "always",provider: "openrouter",providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", },},},}Volcengine
{tts: {auto: "always",provider: "volcengine",providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", speakerVoice: "en_female_anna_mars_bigtts", },},},}xAI
{tts: {auto: "always",provider: "xai",providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", },},},}Xiaomi MiMo
{tts: {auto: "always",provider: "xiaomi",providers: { xiaomi: { apiKey: "${XIAOMI_API_KEY}", model: "mimo-v2.5-tts", speakerVoice: "mimo_default", format: "mp3", },},},}Para mimo-v2.5-tts-voicedesign de Xiaomi, omita speakerVoice y establezca style con
la indicación de diseño de voz. OpenClaw envía esa indicación como mensaje user de TTS
y no envía audio.voice para el modelo voicedesign.
Reemplazos de voz por agente
Utilice agents.entries.*.tts cuando un agente deba hablar con un proveedor,
una voz, un modelo, una personalidad o un modo de TTS automático distintos. El bloque del agente se combina de forma profunda sobre
tts, por lo que las credenciales del proveedor pueden permanecer en la configuración global del proveedor:
{ tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" }, }, }, agents: { list: [ { id: "reader", tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, }, ], },}Para fijar una persona por agente, configure agents.entries.*.tts.persona junto con la
configuración del proveedor; esto anula el valor global de tts.persona solo para ese agente.
Orden de precedencia para las respuestas automáticas, /tts audio, /tts status y la
herramienta de agente tts:
ttsagents.entries.*.ttsactivo- anulación del canal, cuando el canal admite
channels.<channel>.tts - anulación de la cuenta, cuando el canal pasa
channels.<channel>.accounts.<id>.tts - preferencias locales de
/ttspara este host - directivas
[[tts:...]]en línea cuando están habilitadas las anulaciones controladas por el modelo
Las anulaciones de canal y cuenta usan la misma estructura que tts y
se combinan en profundidad sobre las capas anteriores, por lo que las credenciales compartidas
del proveedor pueden permanecer en tts mientras un canal o una cuenta de bot
cambia únicamente la voz del hablante, el modelo, la persona o el modo automático:
{ tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { speakerVoice: "shimmer" }, }, }, }, }, }, },}Personas
Una persona es una identidad oral estable que puede aplicarse de forma determinista entre proveedores. Puede dar preferencia a un proveedor, definir la intención del prompt independientemente del proveedor y contener vinculaciones específicas del proveedor para voces, modelos, plantillas de prompt, semillas y ajustes de voz.
Persona mínima
{ tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrator", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, },}Persona completa (configuración específica del proveedor)
{ tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "Alfred", description: "Dry, warm British butler narrator.", provider: "google", fallbackPolicy: "preserve-persona", providers: { google: { model: "gemini-3.1-flash-tts-preview", speakerVoice: "Algieba", promptTemplate: "audio-profile-v1", }, openai: { model: "gpt-4o-mini-tts", speakerVoice: "cedar" }, elevenlabs: { speakerVoiceId: "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 la persona
La persona activa se selecciona de forma determinista:
- Preferencia local de
/tts persona <id>, si está configurada. tts.persona, si está configurada.- Ninguna persona.
La selección del proveedor evalúa primero las opciones explícitas:
- Anulaciones directas (CLI, Gateway, Talk y directivas TTS permitidas).
- Preferencia local de
/tts provider <id>. providerde la persona activa.tts.provider.- Selección automática del registro.
Para cada intento de proveedor, OpenClaw combina las configuraciones en este orden:
tts.providers.<id>tts.personas.<persona>.providers.<id>- Anulaciones de solicitudes de confianza
- Anulaciones permitidas de directivas TTS emitidas por el modelo
Configuración personalizada de personas
La configuración personas.<id>.prompt.* independiente del proveedor está retirada. Doctor elimina
esos campos y remite al punto de extensión del proveedor de voz. Coloque los ajustes integrados
del proveedor en personas.<id>.providers.<provider> (por ejemplo, personaPrompt de Google
o instructions de OpenAI). Para una configuración personalizada, implemente un
plugin de proveedor de voz con prepareSynthesis(ctx) y devuelva texto ajustado,
configuración del proveedor o anulaciones antes de que se ejecute synthesize().
Esto mantiene la construcción expresiva de prompts en el código del proveedor, donde se
conoce la semántica de las solicitudes.
Política de respaldo
fallbackPolicy controla el comportamiento cuando una persona no tiene vinculación
para el proveedor que se intenta usar:
| Política | Comportamiento |
|---|---|
preserve-persona |
Predeterminada. Los campos de prompt independientes del 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 neutros mientras continúa el respaldo a otros proveedores. |
fail |
Omite ese intento de proveedor con reasonCode: "not_configured" y personaBinding: "missing". Se siguen intentando los proveedores de respaldo. |
La solicitud TTS completa solo falla cuando todos los proveedores intentados se omiten o fallan.
La selección del proveedor de una sesión de Talk se limita a la sesión. Un cliente de Talk
debe elegir los identificadores de proveedor, modelo y voz, así como las configuraciones
regionales, desde talk.catalog y pasarlos mediante la sesión de Talk o la solicitud
de transferencia. Abrir una sesión de voz no debe modificar tts ni los
valores predeterminados globales del proveedor de Talk.
Directivas controladas por el modelo
De forma predeterminada, el asistente puede emitir directivas [[tts:...]] para
anular la voz, el modelo o la velocidad en una sola respuesta, además de un bloque opcional
[[tts:text]]...[[/tts:text]] para indicaciones expresivas que solo deben aparecer en el audio:
Aquí tiene. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](ríe) Lee la canción una vez más.[[/tts:text]]Cuando tts.auto es "tagged", se requieren directivas para activar
el audio. La entrega de bloques en streaming elimina las directivas del texto visible antes
de que el canal las reciba, 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 solo las analiza
ese proveedor; las claves no compatibles se eliminan y se notifican como advertencias
de directivas TTS.
Claves de directiva disponibles:
provider(identificador de proveedor registrado; requiereallowProvider: true)speakerVoice/speakerVoiceId(alias heredados:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volumen de MiniMax,(0, 10])pitch(tono entero de MiniMax, de −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 anulaciones del modelo:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Permitir el cambio de proveedor y mantener configurables los demás ajustes:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Comandos de barra diagonal
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 TTS local enalways;/tts offla escribe enoff./tts chat on|off|defaultescribe una anulación de TTS automático limitada a la sesión para el chat actual./tts persona <id>escribe la preferencia de persona local;/tts persona offla borra./tts latestlee la respuesta más reciente del asistente en la transcripción de la sesión actual y la envía una vez como audio. Solo almacena un hash de esa respuesta en la entrada de la sesión para evitar envíos de voz duplicados./tts audiogenera una respuesta de audio puntual (no activa TTS)./tts limit <chars>acepta 100–4096 (4096 es el máximo de mensajes o pies de foto de Telegram); se rechazan los valores fuera de ese intervalo.limitysummaryse almacenan en las preferencias locales, no en la configuración principal./tts statusincluye diagnósticos de respaldo para el intento más reciente:Fallback: <primary> -> <used>,Attempts: ...y detalles de cada intento (provider:outcome(reasonCode) latency)./statusmuestra el modo TTS activo, además del proveedor, modelo y voz configurados, y los metadatos saneados del endpoint personalizado cuando TTS está habilitado.
Preferencias por usuario
Los comandos de barra diagonal escriben anulaciones locales en la ruta de preferencias TTS.
El valor predeterminado es ~/.openclaw/settings/tts.json; anúlelo con OPENCLAW_TTS_PREFS. Doctor
traslada el valor global retirado tts.prefsPath al estado compartido de la máquina.
Las configuraciones multiagente avanzadas aún pueden establecer agents.entries.<id>.tts.prefsPath
cuando los agentes usan intencionadamente almacenes de preferencias separados.
| Campo almacenado | Efecto |
|---|---|
auto |
Anulación local del TTS automático (always, off, …) |
provider |
Anulación local del proveedor principal |
persona |
Anulación local de la persona |
maxLength |
Umbral de resumen o truncamiento (1500 caracteres de forma predeterminada, intervalo de /tts limit entre 100 y 4096) |
summarize |
Alternancia del resumen (valor predeterminado: true) |
Estas opciones anulan la configuración efectiva de tts junto con el bloque
agents.entries.*.tts activo para ese host.
Formatos de salida
La entrega de voz TTS depende de las capacidades del canal. Los plugins de canal anuncian
si el TTS de tipo voz debe solicitar a los proveedores un destino voice-note nativo
o mantener la síntesis audio-file normal, y si el canal transcodifica
la salida no nativa antes de enviarla.
| Destino | Formato |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Las respuestas con notas de voz prefieren Opus (opus_48000_64 de ElevenLabs, opus de OpenAI). 48 kHz / 64 kbps ofrece un equilibrio entre claridad y tamaño. |
| Otros canales | MP3 (mp3_44100_128 de ElevenLabs, mp3 de OpenAI). 44.1 kHz / 128 kbps es el equilibrio 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 con nota de voz llega como MP3/WebM/WAV/M4A u otro archivo probablemente de audio, el plugin del canal la transcodifica a Ogg/Opus de 48 kHz con
ffmpeg(libopus, 64 kbps) antes de enviar el mensaje de voz nativo. WhatsApp envía el resultado mediante la carga útilaudiode Baileys conptt: trueyaudio/ogg; codecs=opus. Si falla la transcodificación: Feishu captura el error y recurre al envío del archivo original como un archivo adjunto normal; WhatsApp no tiene alternativa, por lo que el propio envío falla en lugar de publicar una carga útil PTT incompatible. - MiniMax: MP3 (modelo
speech-2.8-hd, frecuencia de muestreo de 32 kHz) para archivos adjuntos de audio normales; se transcodifica a Opus de 48 kHz conffmpegpara destinos de notas de voz anunciados por el canal. - Xiaomi MiMo: MP3 de forma predeterminada, o WAV cuando está configurado; se transcodifica a Opus de 48 kHz con
ffmpegpara destinos de notas de voz anunciados por el canal. - CLI local: utiliza el
outputFormatconfigurado. Los destinos de notas de voz se convierten a Ogg/Opus y la salida de telefonía se convierte a PCM mono sin procesar de 16 kHz conffmpeg. - Google Gemini: devuelve PCM sin procesar de 24 kHz. OpenClaw lo encapsula como WAV para archivos 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 archivos adjuntos de audio, Opus para destinos de notas de voz y
ulaw_8000a 8 kHz para telefonía. - Inworld: MP3 para archivos 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; la síntesis de archivos de audio puede utilizar
mp3,wav,pcm,mulawoalawtanto para la salida almacenada en búfer como para la salida en streaming. Los destinos de notas de voz utilizan MP3 para el streaming y como alternativa con búfer porque las salidaspcm,mulawyalawde xAI son audio sin procesar y sin cabecera. La síntesis con búfer utiliza el endpoint REST por lotes/v1/ttsde xAI;textToSpeechStreamutilizawss://api.x.ai/v1/ttsnativo. Este no es el contrato de voz en tiempo real. No se admite el formato de notas de voz Opus nativo. - Microsoft: utiliza
microsoft.outputFormat(valor predeterminado:audio-24khz-48kbitrate-mono-mp3).- El transporte incluido acepta un
outputFormat, pero no todos los formatos están disponibles en el servicio. - Los valores del formato de salida siguen los formatos de salida de Microsoft Speech (incluido Opus Ogg/WebM).
- El
sendVoicede Telegram acepta OGG/MP3/M4A; utilice OpenAI/ElevenLabs si necesita garantizar mensajes de voz Opus. - Si falla el formato de salida configurado de Microsoft, OpenClaw vuelve a intentarlo con MP3.
- Cuando no se establece una sustitución explícita de voz y se utiliza la voz inglesa predeterminada, OpenClaw cambia automáticamente a una voz neuronal china (
zh-CN-XiaoxiaoNeural, configuración regionalzh-CN) si el texto de la respuesta está dominado por caracteres CJK.
- El transporte incluido acepta un
Los formatos de salida de OpenAI y ElevenLabs son fijos para cada canal, como se indica anteriormente.
Comportamiento de TTS automático
Cuando tts.auto está habilitado, OpenClaw:
- Omite TTS si la respuesta ya contiene contenido multimedia estructurado.
- Omite las respuestas muy cortas (menos de 10 caracteres).
- Resume las respuestas largas cuando los resúmenes están habilitados, mediante
summaryModel(oagents.defaults.model.primary). - Adjunta el audio generado a la respuesta.
- En
mode: "final", sigue enviando TTS solo de audio para las respuestas finales transmitidas después de que se complete el flujo de texto; el contenido multimedia generado pasa por la misma normalización de contenido multimedia del canal que los archivos adjuntos de respuesta normales.
Si la respuesta supera maxLength, OpenClaw nunca omite el audio por completo:
- Resumen activado (valor predeterminado) y hay disponible un modelo de resumen: resume el
texto a aproximadamente
maxLengthcaracteres y, a continuación, sintetiza el resumen. - Resumen desactivado, la generación del resumen falla o no hay ninguna clave de API disponible para el
modelo de resumen: trunca el texto a
maxLengthcaracteres y sintetiza el texto truncado.
Respuesta -> ¿TTS habilitado? no -> enviar texto sí -> ¿contiene contenido multimedia / es corta? sí -> enviar texto no -> ¿longitud > límite? no -> TTS -> adjuntar audio sí -> ¿resumen habilitado y disponible? no -> truncar -> TTS -> adjuntar audio sí -> resumir -> TTS -> adjuntar audioReferencia de campos
tts.* de nivel superior
auto"off" | "always" | "inbound" | "tagged"Modo de TTS automático. 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]].
enabledbooleanOpción heredada. openclaw doctor --fix la migra a auto.
mode"final" | "all"default: final"all" incluye las respuestas de herramientas/bloques además de las respuestas finales.
providerstringId. del proveedor de voz. Cuando no se establece, OpenClaw utiliza el primer proveedor configurado según el orden de selección automática del registro. openclaw doctor --fix reescribe el valor heredado provider: "edge" como "microsoft".
personastringId. de la identidad 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>. Consulte Identidades.
summaryModelstringModelo económico para el resumen automático; el valor predeterminado es agents.defaults.model.primary. Acepta provider/model o un alias de modelo configurado.
modelOverridesobjectPermite que el modelo emita directivas TTS. El valor predeterminado de enabled es true; el de allowProvider es false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Configuración propiedad del proveedor indexada por el id. del proveedor de voz. openclaw doctor --fix reescribe los bloques directos heredados (tts.openai, .elevenlabs, .microsoft, .edge); confirme únicamente tts.providers.<id>.
maxTextLengthnumberdefault: 4096Límite estricto de caracteres de entrada para TTS. /tts audio, tts.convert y tts.speak fallan si se supera.
timeoutMsnumberdefault: 30000Tiempo de espera de la solicitud en milisegundos. Un valor timeoutMs por llamada (herramienta del agente, gateway) tiene prioridad cuando se establece; de lo contrario, un valor tts.timeoutMs configurado explícitamente tiene prioridad sobre cualquier valor predeterminado del proveedor definido por un plugin.
Los campos apiKey del proveedor pueden ser cadenas sin procesar o SecretRefs. Durante el inicio en frío del Gateway,
una SecretRef de TTS no disponible marca la capacidad TTS integrada como
configurada pero no disponible en lugar de detener el Gateway. A continuación, tts.speak devuelve
UNAVAILABLE con el motivo SECRET_SURFACE_UNAVAILABLE, y no se envía ninguna solicitud
al proveedor. El estado y el diagnóstico enumeran el propietario de TTS degradado y sus rutas de configuración. Las
referencias explícitas permanecen en la instantánea del entorno de ejecución, por lo que las credenciales
del entorno o del perfil no pueden seleccionar silenciosamente una cuenta distinta. Las recargas y la comprobación previa
de escritura de configuración aplican la política de degradación que tiene en cuenta al propietario: un propietario de TTS apto
y sin cambios puede conservar como obsoletas sus últimas credenciales válidas conocidas, mientras que un fallo nuevo o modificado
pasa a estar en frío sin bloquear a los propietarios en buen estado. Las referencias estructuralmente no válidas
y los valores resueltos siguen provocando un fallo de inicio o el rechazo de la actualización.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: 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). Entorno: AZURE_SPEECH_REGION o SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Sustitución opcional del endpoint de Azure Speech (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
ShortName de la voz de Azure. Valor predeterminado: en-US-JennyNeural. Alias heredado: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Código de idioma SSML. Valor predeterminado: en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat de Azure para audio estándar. Valor predeterminado: audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat de Azure para la salida de notas de voz. Valor predeterminado: ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Utiliza ELEVENLABS_API_KEY o XI_API_KEY como alternativa.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Id. del modelo. Valor predeterminado: eleven_multilingual_v2. Los id. heredados eleven_turbo_v2_5/eleven_turbo_v2 se normalizan al modelo flash correspondiente.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Id. de voz de ElevenLabs. Valor predeterminado: pMsXgVXv3BLzUgSXRplE. Alias heredado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, similarityBoost, style (cada uno 0..1, valores predeterminados 0.5/0.75/0), useSpeakerBoost (true|false, valor predeterminado true), speed (0.5..2.0, valor predeterminado 1.0).
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 obtener determinismo en la medida de lo posible.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Utiliza como alternativa GEMINI_API_KEY / GOOGLE_API_KEY. Si se omite, TTS puede reutilizar models.providers.google.apiKey antes de recurrir a las variables de entorno.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Modelo TTS de Gemini. Valor predeterminado: gemini-3.1-flash-tts-preview.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nombre de voz predefinida de Gemini. Valor predeterminado: Kore. Alias heredados: voiceName, voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Establézcalo en audio-profile-v1 para envolver los campos activos de indicación de persona en una estructura determinista de indicación TTS 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
Entorno: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
URL HTTPS de la API de Gradium en api.gradium.ai. Valor predeterminado: https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Valor predeterminado: Emma (YTpq7expH9539ERJ). Alias heredado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Inworld principal
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Valor predeterminado: https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
Valor 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:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Valor predeterminado: Sarah. Alias heredado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Temperatura de muestreo 0..2 (0 excluido).
OPENCLAW_DOCS_MARKER:paramClose:
CLI local (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
Argumentos del comando. Admite los marcadores de posición {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
Formato de salida esperado de la CLI. Valor predeterminado: mp3 para archivos de audio adjuntos.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
Tiempo de espera del comando en milisegundos. Valor predeterminado: 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,La salida estándar del comando y el audio generado o convertido están limitados a 50 MiB. La salida estándar de error de diagnóstico está limitada a 1 MiB. OpenClaw finaliza el comando y la síntesis falla cuando se supera cualquiera de los límites.
Microsoft (sin clave de API)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nombre de voz neuronal de Microsoft (p. ej., en-US-MichelleNeural). Alias heredado: voice. Si está activa la voz inglesa predeterminada y el texto de respuesta contiene predominantemente caracteres CJK, OpenClaw cambia automáticamente a zh-CN-XiaoxiaoNeural.
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. Valor predeterminado: audio-24khz-48kbitrate-mono-mp3. El transporte incluido basado en Edge no admite todos los formatos.
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. Ejecute openclaw doctor --fix para reescribir la configuración persistente como providers.microsoft.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Utiliza como alternativa 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
Valor predeterminado: https://api.minimax.io. Entorno: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Valor predeterminado: speech-2.8-hd. Entorno: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Valor predeterminado: English_expressive_narrator. Entorno: MINIMAX_TTS_VOICE_ID. Alias heredado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. Valor predeterminado: 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. Valor predeterminado: 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Entero -12..12. Valor predeterminado: 0. Los valores fraccionarios se truncan antes de la solicitud.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Utiliza como alternativa OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Id. del modelo TTS de OpenAI. Valor predeterminado: gpt-4o-mini-tts.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nombre de la voz (p. ej., alloy, cedar). Valor predeterminado: coral. Alias heredado: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Campo explícito instructions de OpenAI. Cuando se establece, los campos de indicación de persona no se asignan automáticamente.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Campos JSON adicionales que se combinan en los cuerpos de solicitud /audio/speech después de los campos TTS de OpenAI generados. Se utiliza para endpoints compatibles con OpenAI, como Kokoro, que requieren claves específicas del proveedor, como lang; se ignoran las claves de prototipo no seguras.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringSustituye 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 modelos y voces, y speed deja de tener la comprobación de intervalo 0.25..4.0.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: OPENROUTER_API_KEY. Puede reutilizar models.providers.openrouter.apiKey.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Valor predeterminado: https://openrouter.ai/api/v1. El valor heredado https://openrouter.ai/v1 se normaliza.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Valor predeterminado: hexgrad/kokoro-82m. Alias: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Valor predeterminado: af_alloy. Alias heredados: voice, voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
Valor predeterminado: mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: VOLCENGINE_TTS_API_KEY o BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
Valor predeterminado: seed-tts-1.0. Entorno: VOLCENGINE_TTS_RESOURCE_ID. Utilice seed-tts-2.0 cuando el proyecto tenga acceso a TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Cabecera de clave de aplicación. Valor predeterminado: aGjiRDfUWi. Entorno: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Sustituye el endpoint HTTP de TTS de Seed Speech. Entorno: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Tipo de voz. Valor predeterminado: en_female_anna_mars_bigtts. Entorno: VOLCENGINE_TTS_VOICE. Alias heredado: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI
Proporción de velocidad nativa del proveedor, 0.2..3.
OPENCLAW_DOCS_MARKER:paramClose:
emotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Campos heredados de Volcengine Speech Console. Entorno: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (valor predeterminado: volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Valor predeterminado: https://api.x.ai/v1. Entorno: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Valor predeterminado: eve. Con autenticación, openclaw infer tts voices --provider xai obtiene el catálogo integrado actual; sin autenticación, enumera las alternativas sin conexión ara, eve, leo, rex y sal. Los id. de voces personalizadas de la cuenta se reenvían aunque no aparezcan en la lista integrada. Alias heredado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
Código de idioma BCP-47 o auto. Valor predeterminado: en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
Valor predeterminado: mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
Sustitución de velocidad nativa del proveedor, 0.7..1.5.
OPENCLAW_DOCS_MARKER:paramClose:
Xiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Entorno: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Valor predeterminado: https://api.xiaomimimo.com/v1. Entorno: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Valor predeterminado: mimo-v2.5-tts. Entorno: XIAOMI_TTS_MODEL. También admite mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Valor predeterminado: mimo_default para modelos con voces preestablecidas. Entorno: XIAOMI_TTS_VOICE. Alias heredado: voice. No se envía para mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Valor predeterminado: mp3. Entorno: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci
Instrucción de estilo opcional en lenguaje natural que se envía como mensaje del usuario; no se pronuncia. Para mimo-v2.5-tts-voicedesign, esta es la indicación de diseño de voz; OpenClaw proporciona un valor predeterminado cuando se omite.
OPENCLAW_DOCS_MARKER:paramClose:
Herramienta del agente
La herramienta tts convierte texto en voz y devuelve un archivo de audio adjunto para
entregar la respuesta. En Feishu, Matrix, Telegram y WhatsApp, el audio se
entrega como mensaje de voz en lugar de como archivo adjunto. Feishu y
WhatsApp pueden transcodificar en esta ruta la salida TTS que no sea Opus cuando
ffmpeg está disponible.
WhatsApp envía el audio mediante Baileys como 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 coherente los subtítulos en las notas de voz.
La herramienta acepta los campos opcionales channel y timeoutMs; timeoutMs es un
tiempo de espera por llamada para solicitudes al proveedor, en milisegundos. Los valores por llamada sustituyen
tts.timeoutMs; los tiempos de espera de TTS configurados sustituyen cualquier valor predeterminado
del proveedor definido por el plugin.
RPC del Gateway
| Método | Propósito |
|---|---|
tts.status |
Leer el estado actual de TTS 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 |
Conversión puntual de texto → audio. |
tts.setProvider |
Establecer la preferencia de proveedor local. |
tts.personas |
Enumerar las personas configuradas y la activa. |
tts.setPersona |
Establecer la preferencia de persona local. |
tts.providers |
Enumerar los proveedores configurados y su estado. |
Enlaces de servicios
- Guía de conversión de texto a voz de OpenAI
- Referencia de la API de audio de OpenAI
- Conversión de texto a voz mediante REST de Azure Speech
- Proveedor de Azure Speech
- Conversión de texto a voz de ElevenLabs
- Autenticación de ElevenLabs
- Gradium
- API de TTS de Inworld
- API MiniMax T2A v2
- API HTTP de TTS de Volcengine
- Síntesis de voz de Xiaomi MiMo
- node-edge-tts
- Formatos de salida de voz de Microsoft
- Conversión de texto a voz de xAI