Tools

Texto para fala

O OpenClaw converte respostas de saída em áudio por meio de 14 provedores de fala: mensagens de voz nativas no Feishu, Matrix, Telegram e WhatsApp; anexos de áudio em todos os outros lugares; e fluxos PCM/Ulaw para telefonia e Talk.

TTS é a metade de saída de fala do modo stt-tts do Talk (talk.speak chama esse mesmo caminho de síntese). Sessões do Talk realtime nativas do provedor sintetizam a fala dentro do provedor em tempo real; sessões transcription nunca sintetizam uma resposta de voz do assistente.

Início rápido

  • Escolha um provedor

    OpenAI e ElevenLabs são as opções hospedadas mais confiáveis. Microsoft e CLI local funcionam sem uma chave de API. Consulte a matriz de provedores para ver a lista completa.

  • Defina a chave de API

    Exporte a variável de ambiente do seu provedor (por exemplo, OPENAI_API_KEY, ELEVENLABS_API_KEY). Microsoft e CLI local não precisam de chave.

  • Ative na configuração

    Defina messages.tts.auto: "always" e messages.tts.provider:

    json5
    {  messages: {    tts: {      auto: "always",      provider: "elevenlabs",    },  },}
  • Experimente no chat

    /tts status mostra o estado atual. /tts audio Hello from OpenClaw envia uma resposta de áudio avulsa.

  • Provedores compatíveis

    Provedor Autenticação Observações
    Azure Speech AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (também AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) Saída nativa de mensagem de voz Ogg/Opus e telefonia.
    DeepInfra DEEPINFRA_API_KEY TTS compatível com OpenAI. O padrão é hexgrad/Kokoro-82M.
    ElevenLabs ELEVENLABS_API_KEY ou XI_API_KEY Clonagem de voz, multilíngue, determinístico via seed; transmitido para reprodução de voz no Discord.
    Google Gemini GEMINI_API_KEY ou GOOGLE_API_KEY TTS em lote da API Gemini; considera a persona via promptTemplate: "audio-profile-v1".
    Gradium GRADIUM_API_KEY Saída de mensagem de voz e telefonia.
    Inworld INWORLD_API_KEY API de TTS por streaming. Mensagem de voz Opus nativa e telefonia PCM.
    CLI local nenhuma Executa um comando TTS local configurado.
    Microsoft nenhuma TTS neural público do Edge via node-edge-tts. Fornecido na medida do possível, sem SLA.
    MiniMax MINIMAX_API_KEY (ou Plano de Tokens: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) API T2A v2. O padrão é speech-2.8-hd.
    OpenAI OPENAI_API_KEY Também usado para resumo automático; oferece suporte a instructions de persona.
    OpenRouter OPENROUTER_API_KEY (pode reutilizar models.providers.openrouter.apiKey) Modelo padrão hexgrad/kokoro-82m.
    Volcengine VOLCENGINE_TTS_API_KEY ou BYTEPLUS_SEED_SPEECH_API_KEY (AppID/token legado: VOLCENGINE_TTS_APPID/_TOKEN) API HTTP BytePlus Seed Speech.
    Vydra VYDRA_API_KEY Provedor compartilhado de imagem, vídeo e fala.
    xAI XAI_API_KEY TTS em lote da xAI. Mensagem de voz Opus nativa não é compatível.
    Xiaomi MiMo XIAOMI_API_KEY TTS MiMo por meio das conclusões de chat da Xiaomi.

    Se vários provedores estiverem configurados, o selecionado será usado primeiro, e os demais serão opções de fallback. O resumo automático usa summaryModel (ou agents.defaults.model.primary), portanto esse provedor também deve estar autenticado se você mantiver os resumos ativados.

    Configuração

    A configuração de TTS fica em messages.tts no arquivo ~/.openclaw/openclaw.json. Escolha uma predefinição e adapte o bloco do provedor. Os campos speakerVoice/speakerVoiceId mostrados abaixo são canônicos; os nomes de campo voice/voiceId/voiceName próprios de cada provedor ainda funcionam como aliases legados.

    Azure Speech

    json5
    {messages: {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

    json5
    {messages: {tts: {  auto: "always",  provider: "elevenlabs",  providers: {    elevenlabs: {      apiKey: "${ELEVENLABS_API_KEY}",      model: "eleven_multilingual_v2",      speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",    },  },},},}

    Google Gemini

    json5
    {messages: {tts: {  auto: "always",  provider: "google",  providers: {    google: {      apiKey: "${GEMINI_API_KEY}",      model: "gemini-3.1-flash-tts-preview",      speakerVoice: "Kore",      // Prompts opcionais de estilo em linguagem natural:      // audioProfile: "Fale em um tom calmo de apresentador de podcast.",      // speakerName: "Alex",    },  },},},}

    Gradium

    json5
    {messages: {tts: {  auto: "always",  provider: "gradium",  providers: {    gradium: {      apiKey: "${GRADIUM_API_KEY}",      speakerVoiceId: "YTpq7expH9539ERJ",    },  },},},}

    Inworld

    json5
    {messages: {tts: {  auto: "always",  provider: "inworld",  providers: {    inworld: {      apiKey: "${INWORLD_API_KEY}",      modelId: "inworld-tts-1.5-max",      speakerVoiceId: "Sarah",      temperature: 0.7,    },  },},},}

    CLI local

    json5
    {messages: {tts: {  auto: "always",  provider: "tts-local-cli",  providers: {    "tts-local-cli": {      command: "say",      args: ["-o", "{{OutputPath}}", "{{Text}}"],      outputFormat: "wav",      timeoutMs: 120000,    },  },},},}

    Microsoft (sem chave)

    json5
    {messages: {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

    json5
    {messages: {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

    json5
    {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",      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

    json5
    {messages: {tts: {  auto: "always",  provider: "openrouter",  providers: {    openrouter: {      apiKey: "${OPENROUTER_API_KEY}",      model: "hexgrad/kokoro-82m",      speakerVoice: "af_alloy",      responseFormat: "mp3",    },  },},},}

    Volcengine

    json5
    {messages: {tts: {  auto: "always",  provider: "volcengine",  providers: {    volcengine: {      apiKey: "${VOLCENGINE_TTS_API_KEY}",      resourceId: "seed-tts-1.0",      speakerVoice: "en_female_anna_mars_bigtts",    },  },},},}

    xAI

    json5
    {messages: {tts: {  auto: "always",  provider: "xai",  providers: {    xai: {      apiKey: "${XAI_API_KEY}",      speakerVoiceId: "eve",      language: "en",      responseFormat: "mp3",    },  },},},}

    Xiaomi MiMo

    json5
    {messages: {tts: {  auto: "always",  provider: "xiaomi",  providers: {    xiaomi: {      apiKey: "${XIAOMI_API_KEY}",      model: "mimo-v2.5-tts",      speakerVoice: "mimo_default",      format: "mp3",    },  },},},}

    Para o Xiaomi mimo-v2.5-tts-voicedesign, omita speakerVoice e defina style como o prompt de criação da voz. O OpenClaw envia esse prompt como a mensagem user do TTS e não envia audio.voice para o modelo voicedesign.

    Substituições de voz por agente

    Use agents.list[].tts quando um agente precisar falar com um provedor, voz, modelo, persona ou modo de TTS automático diferente. O bloco do agente é mesclado profundamente sobre messages.tts, portanto as credenciais do provedor podem permanecer na configuração global do provedor:

    json5
    {  messages: {    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 fixar uma persona por agente, defina agents.list[].tts.persona junto à configuração do provedor — isso substitui a messages.tts.persona global somente para esse agente.

    Ordem de precedência para respostas automáticas, /tts audio, /tts status e a ferramenta de agente tts:

    1. messages.tts
    2. agents.list[].tts ativo
    3. substituição do canal, quando o canal oferece suporte a channels.<channel>.tts
    4. substituição da conta, quando o canal transmite channels.<channel>.accounts.<id>.tts
    5. preferências locais de /tts para este host
    6. diretivas [[tts:...]] embutidas quando as substituições pelo modelo estão habilitadas

    As substituições de canal e conta usam o mesmo formato de messages.tts e são mescladas profundamente sobre as camadas anteriores, portanto as credenciais compartilhadas do provedor podem permanecer em messages.tts, enquanto um canal ou uma conta de bot altera somente a voz do locutor, o modelo, a persona ou o modo automático:

    json5
    {  messages: {    tts: {      provider: "openai",      providers: {        openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },      },    },  },  channels: {    feishu: {      accounts: {        english: {          tts: {            providers: {              openai: { speakerVoice: "shimmer" },            },          },        },      },    },  },}

    Personas

    Uma persona é uma identidade falada estável que pode ser aplicada de forma determinística entre provedores. Ela pode dar preferência a um provedor, definir a intenção do prompt independentemente do provedor e conter vinculações específicas de cada provedor para vozes, modelos, modelos de prompt, seeds e configurações de voz.

    Persona mínima

    json5
    {  messages: {    tts: {      auto: "always",      persona: "narrator",      personas: {        narrator: {          label: "Narrator",          provider: "elevenlabs",          providers: {            elevenlabs: {              speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",              modelId: "eleven_multilingual_v2",            },          },        },      },    },  },}

    Persona completa (prompt independente do provedor)

    json5
    {  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",              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,              },            },          },        },      },    },  },}

    Resolução da persona

    A persona ativa é selecionada de forma determinística:

    1. Preferência local de /tts persona <id>, se definida.
    2. messages.tts.persona, se definida.
    3. Nenhuma persona.

    A seleção do provedor prioriza configurações explícitas:

    1. Substituições diretas (CLI, Gateway, Talk e diretivas TTS permitidas).
    2. Preferência local de /tts provider <id>.
    3. provider da persona ativa.
    4. messages.tts.provider.
    5. Seleção automática pelo registro.

    Para cada tentativa de provedor, o OpenClaw mescla as configurações nesta ordem:

    1. messages.tts.providers.<id>
    2. messages.tts.personas.<persona>.providers.<id>
    3. Substituições confiáveis da solicitação
    4. Substituições permitidas por diretivas TTS emitidas pelo modelo

    Como os provedores usam prompts de persona

    Os campos do prompt da persona (profile, scene, sampleContext, style, accent, pacing, constraints) são independentes do provedor. Cada provedor decide como usá-los:

    Google Gemini

    Encapsula os campos do prompt da persona em uma estrutura de prompt TTS do Gemini somente quando a configuração efetiva do provedor Google define promptTemplate: "audio-profile-v1" ou personaPrompt. Os campos mais antigos audioProfile e speakerName ainda são adicionados no início como texto de prompt específico do Google. Tags de áudio embutidas, como [whispers] ou [laughs], dentro de um bloco [[tts:text]] são preservadas na transcrição do Gemini; o OpenClaw não gera essas tags.

    OpenAI

    Mapeia os campos do prompt da persona para o campo instructions da solicitação somente quando nenhuma instructions explícita do OpenAI está configurada. Uma instructions explícita sempre prevalece.

    Outros provedores

    Usam somente as vinculações de persona específicas do provedor em personas.<id>.providers.<provider>. Os campos do prompt da persona são ignorados, a menos que o provedor implemente seu próprio mapeamento de prompt de persona.

    Política de fallback

    fallbackPolicy controla o comportamento quando uma persona não tem vinculação para o provedor tentado:

    Política Comportamento
    preserve-persona Padrão. Os campos de prompt independentes do provedor permanecem disponíveis; o provedor pode usá-los ou ignorá-los.
    provider-defaults A persona é omitida da preparação do prompt para essa tentativa; o provedor usa seus padrões neutros enquanto o fallback para outros provedores continua.
    fail Ignora essa tentativa de provedor com reasonCode: "not_configured" e personaBinding: "missing". Os provedores de fallback ainda são testados.

    A solicitação TTS inteira só falha quando todos os provedores tentados são ignorados ou falham.

    A seleção do provedor da sessão do Talk é definida no escopo da sessão. Um cliente Talk deve escolher IDs de provedor, IDs de modelo, IDs de voz e localidades em talk.catalog e transmiti-los pela solicitação de sessão ou transferência do Talk. Abrir uma sessão de voz não deve alterar messages.tts nem os padrões globais de provedor do Talk.

    Diretivas controladas pelo modelo

    Por padrão, o assistente pode emitir diretivas [[tts:...]] para substituir a voz, o modelo ou a velocidade em uma única resposta, além de um bloco opcional [[tts:text]]...[[/tts:text]] para indicações expressivas que devem aparecer somente no áudio:

    text
    Aqui está. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](risos) Leia a música mais uma vez.[[/tts:text]]

    Quando messages.tts.auto é "tagged", as diretivas são obrigatórias para acionar o áudio. A entrega de blocos por streaming remove as diretivas do texto visível antes que o canal as receba, mesmo quando elas estão divididas entre blocos adjacentes.

    provider=... é ignorado, a menos que modelOverrides.allowProvider: true. Quando uma resposta declara provider=..., as outras chaves dessa diretiva são analisadas somente por esse provedor; chaves sem suporte são removidas e informadas como avisos de diretiva TTS.

    Chaves de diretiva disponíveis:

    • provider (ID de provedor registrado; requer allowProvider: true)
    • speakerVoice / speakerVoiceId (aliases legados: voice, voiceName, voice_name, google_voice, voiceId)
    • model / google_model
    • stability, similarityBoost, style, speed, useSpeakerBoost
    • vol / volume (volume do MiniMax, (0, 10])
    • pitch (altura inteira do MiniMax, de −12 a 12; valores fracionários são truncados)
    • emotion (tag de emoção do Volcengine)
    • applyTextNormalization (auto|on|off)
    • languageCode (ISO 639-1)
    • seed

    Desabilitar completamente as substituições pelo modelo:

    json5
    { messages: { tts: { modelOverrides: { enabled: false } } } }

    Permitir a troca de provedor mantendo os outros controles configuráveis:

    json5
    { messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }

    Comandos de barra

    Comando único /tts. No Discord, o OpenClaw também registra /voice porque /tts é um comando integrado do Discord — o texto /tts ... continua funcionando.

    text
    /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>

    Observações sobre o comportamento:

    • /tts on grava a preferência local de TTS como always; /tts off a grava como off.
    • /tts chat on|off|default grava uma substituição de TTS automático no escopo da sessão para o chat atual.
    • /tts persona <id> grava a preferência local de persona; /tts persona off a limpa.
    • /tts latest lê a resposta mais recente do assistente na transcrição da sessão atual e a envia uma vez como áudio. Ele armazena somente um hash dessa resposta na entrada da sessão para impedir envios de voz duplicados.
    • /tts audio gera uma resposta de áudio avulsa (não ativa o TTS).
    • /tts limit <chars> aceita 100–4096 (4096 é o máximo de legenda/mensagem do Telegram); valores fora desse intervalo são rejeitados.
    • limit e summary são armazenados nas preferências locais, não na configuração principal.
    • /tts status inclui diagnósticos de fallback para a tentativa mais recente — Fallback: <primary> -> <used>, Attempts: ... e detalhes por tentativa (provider:outcome(reasonCode) latency).
    • /status mostra o modo TTS ativo, além do provedor, modelo, voz e metadados sanitizados do endpoint personalizado configurados quando o TTS está habilitado.

    Preferências por usuário

    Os comandos de barra gravam substituições locais em prefsPath. O padrão é ~/.openclaw/settings/tts.json; substitua-o pela variável de ambiente OPENCLAW_TTS_PREFS ou por messages.tts.prefsPath.

    Campo armazenado Efeito
    auto Substituição local do TTS automático (always, off, …)
    provider Substituição local do provedor principal
    persona Substituição local da persona
    maxLength Limite de resumo/truncamento (padrão de 1500 caracteres, intervalo de /tts limit 100–4096)
    summarize Alternância de resumo (padrão true)

    Esses valores substituem a configuração efetiva de messages.tts junto ao bloco agents.list[].tts ativo para esse host.

    Formatos de saída

    A entrega de voz TTS é orientada pelos recursos do canal. Os plugins de canal informam se o TTS em estilo de voz deve solicitar aos provedores um destino nativo voice-note ou manter a síntese normal audio-file, e se o canal transcodifica a saída não nativa antes do envio.

    Destino Formato
    Feishu / Matrix / Telegram / WhatsApp Respostas de nota de voz priorizam Opus (opus_48000_64 da ElevenLabs, opus da OpenAI). 48 kHz / 64 kbps equilibra clareza e tamanho.
    Outros canais MP3 (mp3_44100_128 da ElevenLabs, mp3 da OpenAI). 44.1 kHz / 128 kbps é o equilíbrio padrão para fala.
    Talk / telefonia PCM nativo do provedor (Inworld 22050 Hz, Google 24 kHz) ou ulaw_8000 da Gradium para telefonia.

    Observações por provedor:

    • Transcodificação do Feishu / WhatsApp: quando uma resposta de nota de voz chega como MP3/WebM/WAV/M4A ou outro provável arquivo de áudio, o plugin do canal a transcodifica para Ogg/Opus de 48 kHz com ffmpeg (libopus, 64 kbps) antes de enviar a mensagem de voz nativa. O WhatsApp envia o resultado por meio do payload audio do Baileys com ptt: true e audio/ogg; codecs=opus. Em caso de falha na transcodificação: o Feishu captura o erro e recorre ao envio do arquivo original como um anexo comum; o WhatsApp não tem fallback, portanto o próprio envio falha em vez de publicar um payload PTT incompatível.
    • MiniMax: MP3 (modelo speech-2.8-hd, taxa de amostragem de 32 kHz) para anexos de áudio normais; transcodificado para Opus de 48 kHz com ffmpeg para destinos de nota de voz anunciados pelo canal.
    • Xiaomi MiMo: MP3 por padrão ou WAV quando configurado; transcodificado para Opus de 48 kHz com ffmpeg para destinos de nota de voz anunciados pelo canal.
    • CLI local: usa o outputFormat configurado. Destinos de nota de voz são convertidos para Ogg/Opus, e a saída de telefonia é convertida para PCM mono bruto de 16 kHz com ffmpeg.
    • Google Gemini: retorna PCM bruto de 24 kHz. O OpenClaw o encapsula como WAV para anexos de áudio, transcodifica-o para Opus de 48 kHz para destinos de nota de voz e retorna PCM diretamente para Talk/telefonia.
    • Gradium: WAV para anexos de áudio, Opus para destinos de nota de voz e ulaw_8000 a 8 kHz para telefonia.
    • Inworld: MP3 para anexos de áudio normais, OGG_OPUS nativo para destinos de nota de voz e PCM bruto a 22050 Hz para Talk/telefonia.
    • xAI: MP3 por padrão; responseFormat pode ser mp3, wav, pcm, mulaw ou alaw. Usa o endpoint REST de TTS em lote da xAI e retorna um anexo de áudio completo; o WebSocket de TTS por streaming da xAI não é usado por este caminho do provedor. O formato nativo de nota de voz Opus não é compatível.
    • Microsoft: usa microsoft.outputFormat (padrão audio-24khz-48kbitrate-mono-mp3).
      • O transporte incluído aceita um outputFormat, mas nem todos os formatos estão disponíveis no serviço.
      • Os valores do formato de saída seguem os formatos de saída do Microsoft Speech (incluindo Ogg/WebM Opus).
      • O sendVoice do Telegram aceita OGG/MP3/M4A; use OpenAI/ElevenLabs se precisar de mensagens de voz Opus garantidas.
      • Se o formato de saída configurado da Microsoft falhar, o OpenClaw tenta novamente com MP3.
      • Quando nenhuma substituição explícita de voz está definida e a voz padrão em inglês é usada, o OpenClaw muda automaticamente para uma voz neural chinesa (zh-CN-XiaoxiaoNeural, localidade zh-CN) se o texto da resposta tiver predominância de CJK.

    Os formatos de saída da OpenAI e da ElevenLabs são fixos por canal, conforme listado acima.

    Comportamento do TTS automático

    Quando messages.tts.auto está habilitado, o OpenClaw:

    • Ignora o TTS se a resposta já contiver mídia estruturada.
    • Ignora respostas muito curtas (menos de 10 caracteres).
    • Resume respostas longas quando os resumos estão habilitados, usando summaryModel (ou agents.defaults.model.primary).
    • Anexa o áudio gerado à resposta.
    • Em mode: "final", ainda envia TTS somente de áudio para respostas finais transmitidas por streaming depois que o fluxo de texto é concluído; a mídia gerada passa pela mesma normalização de mídia do canal usada pelos anexos de resposta normais.

    Se a resposta exceder maxLength, o OpenClaw nunca ignora o áudio por completo:

    • Resumo ativado (padrão) e um modelo de resumo está disponível: resume o texto para aproximadamente maxLength caracteres e, em seguida, sintetiza o resumo.
    • Resumo desativado, a geração do resumo falha ou nenhuma chave de API está disponível para o modelo de resumo: trunca o texto para maxLength caracteres e sintetiza o texto truncado.
    text
    Resposta -> TTS habilitado?  não -> enviar texto  sim -> contém mídia / é curta?          sim -> enviar texto          não -> tamanho > limite?                   não -> TTS -> anexar áudio                   sim -> resumo habilitado e disponível?                            não -> truncar -> TTS -> anexar áudio                            sim -> resumir -> TTS -> anexar áudio

    Referência de campos

    messages.tts.* de nível superior
    auto"off" | "always" | "inbound" | "tagged"

    Modo de TTS automático. inbound envia áudio somente após uma mensagem de voz recebida; tagged envia áudio somente quando a resposta inclui diretivas [[tts:...]] ou um bloco [[tts:text]].

    enabledboolean

    Alternância legada. openclaw doctor --fix migra isso para auto.

    mode"final" | "all"default: final

    "all" inclui respostas de ferramentas/blocos além das respostas finais.

    providerstring

    ID do provedor de fala. Quando não definido, o OpenClaw usa o primeiro provedor configurado na ordem de seleção automática do registro. O provider: "edge" legado é reescrito como "microsoft" por openclaw doctor --fix.

    personastring

    ID da persona ativa de personas. Normalizado para letras minúsculas.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA " type="object"> Identidade falada estável. Campos: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Consulte Personas.

    summaryModelstring

    Modelo econômico para resumo automático; o padrão é agents.defaults.model.primary. Aceita provider/model ou um alias de modelo configurado.

    modelOverridesobject

    Permite que o modelo emita diretivas de TTS. enabled usa true por padrão; allowProvider usa false por padrão.

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ " type="object"> Configurações controladas pelo provedor e identificadas pelo ID do provedor de fala. Blocos diretos legados (messages.tts.openai, .elevenlabs, .microsoft, .edge) são reescritos por openclaw doctor --fix; confirme somente messages.tts.providers.<id>.

    maxTextLengthnumberdefault: 4096

    Limite rígido de caracteres de entrada para TTS. /tts audio, tts.convert e tts.speak falham se ele for excedido.

    timeoutMsnumberdefault: 30000

    Tempo limite da solicitação em milissegundos. Um timeoutMs por chamada (ferramenta do agente, Gateway) prevalece quando definido; caso contrário, um messages.tts.timeoutMs configurado explicitamente prevalece sobre qualquer padrão do provedor definido pelo plugin.

    prefsPathstring

    Substitui o caminho JSON local das preferências (provedor/limite/resumo). Padrão: ~/.openclaw/settings/tts.json.

    Azure Speech

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Ambiente: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY ou SPEECH_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg Região do Azure Speech (por exemplo, eastus). Ambiente: AZURE_SPEECH_REGION ou SPEECH_REGION. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci Substituição opcional do endpoint do Azure Speech (alias baseUrl). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg ShortName da voz do Azure. Padrão: en-US-JennyNeural. Alias legado: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI Código de idioma SSML. Padrão: en-US. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg X-Microsoft-OutputFormat do Azure para áudio padrão. Padrão: audio-24khz-48kbitrate-mono-mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg X-Microsoft-OutputFormat do Azure para saída de nota de voz. Padrão: ogg-24khz-16bit-mono-opus. OPENCLAW_DOCS_MARKER:paramClose:

    ElevenLabs

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Usa ELEVENLABS_API_KEY ou XI_API_KEY como fallback. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci ID do modelo. Padrão: eleven_multilingual_v2. Os IDs legados eleven_turbo_v2_5/eleven_turbo_v2 são normalizados para o modelo flash correspondente. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci ID da voz da ElevenLabs. Padrão: pMsXgVXv3BLzUgSXRplE. Alias legado: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    voiceSettingsobject

    stability, similarityBoost, style (cada um 0..1, padrões 0.5/0.75/0), useSpeakerBoost (true|false, padrão true), speed (0.5..2.0, padrão 1.0).

    applyTextNormalization"auto" | "on" | "off"

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg ISO 639-1 de 2 letras (por exemplo, en, de). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI Inteiro 0..4294967295 para determinismo de melhor esforço. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring
    Google Gemini

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Usa GEMINI_API_KEY / GOOGLE_API_KEY como fallback. Se omitida, o TTS pode reutilizar models.providers.google.apiKey antes do fallback para o ambiente. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Modelo de TTS do Gemini. Padrão: gemini-3.1-flash-tts-preview. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nome da voz predefinida do Gemini. Padrão: Kore. Aliases legados: voiceName, voice. OPENCLAW_DOCS_MARKER:paramClose:

    audioProfilestring
    speakerNamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn Defina como audio-profile-v1 para encapsular os campos de prompt da persona ativa em uma estrutura determinística de prompt de TTS do Gemini. OPENCLAW_DOCS_MARKER:paramClose:

    personaPromptstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Somente https://generativelanguage.googleapis.com é aceita. OPENCLAW_DOCS_MARKER:paramClose:

    Gradium

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Ambiente: GRADIUM_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI URL HTTPS da API da Gradium em api.gradium.ai. Padrão: https://api.gradium.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Padrão Emma (YTpq7expH9539ERJ). Alias legado: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    Inworld

    Provedor principal do Inworld

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Var. de ambiente: INWORLD_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Padrão: https://api.inworld.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI Padrão: inworld-tts-1.5-max. Também: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Padrão: Sarah. Alias legado: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi Temperatura de amostragem 0..2 (0 não incluso). OPENCLAW_DOCS_MARKER:paramClose:

    CLI local (tts-local-cli)
    commandstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg Argumentos do comando. Compatível com os espaços reservados {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic Formato de saída esperado da CLI. O padrão é mp3 para anexos de áudio. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg Tempo limite do comando em milissegundos. Padrão: 120000. OPENCLAW_DOCS_MARKER:paramClose:

    cwdstring
    env"Record<string,

    A saída padrão do comando e o áudio gerado ou convertido são limitados a 50 MiB. A saída de erro de diagnóstico é limitada a 1 MiB. O OpenClaw encerra o comando e interrompe a síntese com falha quando qualquer um dos limites é excedido.

    Microsoft (sem chave de API)
    enabledbooleandefault: true

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nome da voz neural da Microsoft (por exemplo, en-US-MichelleNeural). Alias legado: voice. Se a voz padrão em inglês estiver em uso e o texto da resposta for predominantemente CJK, o OpenClaw alternará automaticamente para zh-CN-XiaoxiaoNeural. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI Código do idioma (por exemplo, en-US). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg Formato de saída da Microsoft. Padrão: audio-24khz-48kbitrate-mono-mp3. Nem todos os formatos são compatíveis com o transporte integrado baseado no Edge. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg Strings de porcentagem (por exemplo, +10%, -5%). OPENCLAW_DOCS_MARKER:paramClose:

    saveSubtitlesboolean
    proxystring
    timeoutMsnumber

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk Alias legado. Execute openclaw doctor --fix para regravar a configuração persistida como providers.microsoft. OPENCLAW_DOCS_MARKER:paramClose:

    MiniMax

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Como alternativa, usa MINIMAX_API_KEY. Autenticação do Token Plan por meio de MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY ou MINIMAX_CODING_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Padrão: https://api.minimax.io. Var. de ambiente: MINIMAX_API_HOST. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Padrão: speech-2.8-hd. Var. de ambiente: MINIMAX_TTS_MODEL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Padrão: English_expressive_narrator. Var. de ambiente: MINIMAX_TTS_VOICE_ID. Alias legado: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi 0.5..2.0. Padrão: 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg (0, 10]. Padrão: 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi Inteiro -12..12. Padrão: 0. Valores fracionários são truncados antes da solicitação. OPENCLAW_DOCS_MARKER:paramClose:

    OpenAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Como alternativa, usa OPENAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci ID do modelo TTS da OpenAI. Padrão: gpt-4o-mini-tts. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Nome da voz (por exemplo, alloy, cedar). Padrão: coral. Alias legado: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg Campo instructions explícito da OpenAI. Quando definido, os campos de prompt da persona não são mapeados automaticamente. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24 ">Campos JSON adicionais mesclados aos corpos das solicitações de /audio/speech após os campos TTS gerados da OpenAI. Use isto para endpoints compatíveis com a OpenAI, como o Kokoro, que exigem chaves específicas do provedor, como lang; chaves de protótipo inseguras são ignoradas. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring

    Substitui o endpoint TTS da OpenAI. Ordem de resolução: configuração → OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. Valores diferentes do padrão são tratados como endpoints TTS compatíveis com a OpenAI; portanto, nomes personalizados de modelo e voz são aceitos, e speed deixa de ter a validação do intervalo 0.25..4.0.

    OpenRouter

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Var. de ambiente: OPENROUTER_API_KEY. Pode reutilizar models.providers.openrouter.apiKey. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Padrão: https://openrouter.ai/api/v1. O valor legado https://openrouter.ai/v1 é normalizado. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Padrão: hexgrad/kokoro-82m. Alias: modelId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Padrão: af_alloy. Aliases legados: voice, voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw Padrão: mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Volcengine (BytePlus Seed Speech)

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Var. de ambiente: VOLCENGINE_TTS_API_KEY ou BYTEPLUS_SEED_SPEECH_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI Padrão: seed-tts-1.0. Var. de ambiente: VOLCENGINE_TTS_RESOURCE_ID. Use seed-tts-2.0 quando seu projeto tiver direito de acesso ao TTS 2.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg Cabeçalho da chave do aplicativo. Padrão: aGjiRDfUWi. Var. de ambiente: VOLCENGINE_TTS_APP_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Substitui o endpoint HTTP do TTS Seed Speech. Var. de ambiente: VOLCENGINE_TTS_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Tipo de voz. Padrão: en_female_anna_mars_bigtts. Var. de ambiente: VOLCENGINE_TTS_VOICE. Alias legado: voice. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI Proporção de velocidade nativa do provedor, 0.2..3. OPENCLAW_DOCS_MARKER:paramClose:

    emotionstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ Campos legados do Volcengine Speech Console. Var. de ambiente: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (padrão: volcano_tts). OPENCLAW_DOCS_MARKER:paramClose:

    xAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Var. de ambiente: XAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Padrão: https://api.x.ai/v1. Var. de ambiente: XAI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci Padrão: eve. Com autenticação, openclaw infer tts voices --provider xai obtém o catálogo integrado atual; sem autenticação, lista as opções alternativas offline ara, eve, leo, rex e sal. IDs de voz personalizados da conta são encaminhados mesmo quando não estão presentes na lista integrada. Alias legado: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci Código de idioma BCP-47 ou auto. Padrão: en. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw Padrão: mp3. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi Substituição da velocidade nativa do provedor, 0.7..1.5. OPENCLAW_DOCS_MARKER:paramClose:

    Xiaomi MiMo

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg Var. de ambiente: XIAOMI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI Padrão: https://api.xiaomimimo.com/v1. Var. de ambiente: XIAOMI_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci Padrão: mimo-v2.5-tts. Var. de ambiente: XIAOMI_TTS_MODEL. Também é compatível com mimo-v2-tts e mimo-v2.5-tts-voicedesign. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg Padrão: mimo_default para modelos com voz predefinida. Var. de ambiente: XIAOMI_TTS_VOICE. Alias legado: voice. Não é enviado para mimo-v2.5-tts-voicedesign. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic Padrão: mp3. Var. de ambiente: XIAOMI_TTS_FORMAT. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci Instrução opcional de estilo em linguagem natural enviada como mensagem do usuário; não é falada. Para mimo-v2.5-tts-voicedesign, este é o prompt de criação da voz; o OpenClaw fornece um valor padrão quando omitido. OPENCLAW_DOCS_MARKER:paramClose:

    Ferramenta do agente

    A ferramenta tts converte texto em fala e retorna um anexo de áudio para entrega da resposta. No Feishu, Matrix, Telegram e WhatsApp, o áudio é entregue como mensagem de voz em vez de anexo de arquivo. O Feishu e o WhatsApp podem transcodificar saídas TTS que não sejam Opus nesse fluxo quando ffmpeg estiver disponível.

    O WhatsApp envia áudio por meio do Baileys como uma mensagem de voz PTT (audio com ptt: true) e envia o texto visível separadamente do áudio PTT porque os clientes não renderizam legendas de forma consistente em mensagens de voz.

    A ferramenta aceita os campos opcionais channel e timeoutMs; timeoutMs é um tempo limite por chamada para a solicitação ao provedor, em milissegundos. Os valores por chamada substituem messages.tts.timeoutMs; os tempos limites configurados para TTS substituem qualquer valor padrão do provedor definido por um plugin.

    RPC do Gateway

    Método Finalidade
    tts.status Lê o estado atual do TTS e a última tentativa.
    tts.enable Define a preferência automática local como always.
    tts.disable Define a preferência automática local como off.
    tts.convert Conversão avulsa de texto → áudio.
    tts.setProvider Define a preferência local de provedor.
    tts.personas Lista as personas configuradas e a persona ativa.
    tts.setPersona Define a preferência local de persona.
    tts.providers Lista os provedores configurados e seus estados.

    Relacionados

    Was this useful?
    On this page

    On this page