Tools
Conversão de texto em fala
O OpenClaw converte respostas enviadas 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.
O TTS é a parte de saída de fala do modo stt-tts do Talk (talk.speak usa esse
mesmo caminho de síntese). As sessões do Talk realtime nativas do provedor sintetizam
a fala dentro do provedor em tempo real; as 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:
{ 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ística por meio de seed; transmitida por streaming para reprodução de voz no Discord. |
| Google Gemini | GEMINI_API_KEY ou GOOGLE_API_KEY |
TTS em lote da API Gemini; compatível com persona por meio de 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 de TTS local configurado. |
| Microsoft | nenhuma | TTS neural público do Edge por meio de node-edge-tts. Fornecido em caráter de melhor esforço, 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 à persona instructions. |
| 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. Mensagens de voz Opus nativas não são compatíveis. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS do MiMo por meio de 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 contingência. O resumo automático usa summaryModel (ou
agents.defaults.model.primary), portanto esse provedor também deve estar autenticado
se os resumos permanecerem ativados.
Configuração
A configuração de TTS fica em messages.tts no ~/.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
{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
{messages: {tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{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, como apresentador de podcast.", // speakerName: "Alex", }, },},},}Gradium
{messages: {tts: { auto: "always", provider: "gradium", providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{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
{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)
{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
{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
{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
{messages: {tts: { auto: "always", provider: "openrouter", providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{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
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{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 outro provedor,
outra voz, outro modelo, outra persona ou outro modo de TTS automático. O bloco do agente é mesclado profundamente sobre
messages.tts, portanto as credenciais do provedor podem permanecer na configuração global do provedor:
{ 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 — ela 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:
messages.ttsagents.list[].ttsativo- substituição do canal, quando o canal oferece suporte a
channels.<channel>.tts - substituição da conta, quando o canal transmite
channels.<channel>.accounts.<id>.tts - preferências locais de
/ttspara este host - diretivas
[[tts:...]]embutidas quando as substituições orientadas pelo modelo estão habilitadas
As substituições de canal e conta usam o mesmo formato que 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:
{ 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 preferir um provedor, definir a intenção do prompt de modo independente do provedor e conter associações específicas de cada provedor para vozes, modelos, modelos de prompt, sementes e configurações de voz.
Persona mínima
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrador", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, }, },}Persona completa (prompt independente do provedor)
{ messages: { tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "Alfred", description: "Narrador mordomo britânico, espirituoso e acolhedor.", provider: "google", fallbackPolicy: "preserve-persona", prompt: { profile: "Um mordomo britânico brilhante. Espirituoso, sagaz, acolhedor, encantador, emocionalmente expressivo, nunca genérico.", scene: "Um escritório silencioso tarde da noite. Narração com microfone próximo para um operador de confiança.", sampleContext: "O locutor está respondendo a uma solicitação técnica privada com confiança concisa e cordialidade espirituosa.", style: "Refinado, discreto, levemente divertido.", accent: "Inglês britânico.", pacing: "Cadenciado, com breves pausas dramáticas.", constraints: ["Não leia valores de configuração em voz alta.", "Não explique a 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:
- Preferência local de
/tts persona <id>, se definida. messages.tts.persona, se definida.- Nenhuma persona.
A seleção do provedor prioriza as opções explícitas:
- Substituições diretas (CLI, Gateway, Talk, diretivas TTS permitidas).
- Preferência local de
/tts provider <id>. providerda persona ativa.messages.tts.provider.- Seleção automática do registro.
Para cada tentativa de provedor, o OpenClaw mescla as configurações nesta ordem:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Substituições de solicitações confiáveis
- Substituições de diretivas TTS permitidas emitidas pelo modelo
Como os provedores usam prompts de persona
Os campos de 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 de 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 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 de prompt da persona para o campo instructions da solicitação somente quando
nenhum instructions explícito do OpenAI está configurado. O instructions explícito
sempre prevalece.
Outros provedores
Usam somente as associações de persona específicas do provedor em
personas.<id>.providers.<provider>. Os campos de 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 associaçã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 nessa 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 tentados. |
A solicitação TTS inteira só falha quando todos os provedores tentados são ignorados ou falham.
A seleção de provedor da sessão do Talk é restrita à sessão. Um cliente Talk deve escolher
IDs de provedores, IDs de modelos, IDs de vozes e localidades em talk.catalog e transmiti-los
pela solicitação de sessão ou transferência do Talk. A abertura de uma sessão de voz não deve
alterar messages.tts nem os padrões globais de provedor do Talk.
Diretivas orientadas pelo modelo
Por padrão, o assistente pode emitir diretivas [[tts:...]] para substituir
voz, modelo ou velocidade em uma única resposta, além de um bloco
[[tts:text]]...[[/tts:text]] opcional para indicações expressivas que devem aparecer
somente no áudio:
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 divididas entre blocos adjacentes.
provider=... é ignorado, a menos que modelOverrides.allowProvider: true. Quando uma
resposta declara provider=..., as outras chaves nessa diretiva são analisadas
somente por esse provedor; chaves sem suporte são removidas e relatadas como avisos de
diretiva TTS.
Chaves de diretiva disponíveis:
provider(ID de provedor registrado; requerallowProvider: true)speakerVoice/speakerVoiceId(aliases legados:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume do MiniMax,(0, 10])pitch(tom inteiro do MiniMax, −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 do modelo:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Permitir a troca de provedor enquanto os outros ajustes permanecem configuráveis:
{ 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 ... ainda funciona.
/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 ongrava a preferência local de TTS emalways;/tts offa grava emoff./tts chat on|off|defaultgrava uma substituição de TTS automático restrita à sessão para o chat atual./tts persona <id>grava a preferência local de persona;/tts persona offa limpa./tts latestlê 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 audiogera 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.limitesummarysão armazenados nas preferências locais, não na configuração principal./tts statusinclui diagnósticos de fallback da tentativa mais recente —Fallback: <primary> -> <used>,Attempts: ...e detalhes por tentativa (provider:outcome(reasonCode) latency)./statusmostra 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: 1500 caracteres, intervalo de /tts limit: 100–4096) |
summarize |
Alternância do resumo (padrão: true) |
Esses valores substituem a configuração efetiva de messages.tts mais o bloco
agents.list[].tts ativo desse host.
Formatos de saída
A entrega de voz por TTS é determinada pelos recursos do canal. Os plugins de canal informam
se o TTS no estilo de voz deve solicitar aos provedores um destino voice-note nativo ou
manter a síntese audio-file normal, e se o canal transcodifica
a saída não nativa antes do envio.
| Destino | Formato |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | As respostas em mensagem de voz priorizam Opus (opus_48000_64 do ElevenLabs, opus da OpenAI). 48 kHz / 64 kbps equilibra clareza e tamanho. |
| Outros canais | MP3 (mp3_44100_128 do 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 do Gradium para telefonia. |
Observações por provedor:
- Transcodificação do Feishu / WhatsApp: quando uma resposta em mensagem de voz chega como MP3/WebM/WAV/M4A ou outro arquivo que provavelmente seja 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 pelo payloadaudiodo Baileys comptt: trueeaudio/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 comffmpegpara destinos de mensagem de voz anunciados pelo canal. - Xiaomi MiMo: MP3 por padrão ou WAV quando configurado; transcodificado para Opus de 48 kHz com
ffmpegpara destinos de mensagem de voz anunciados pelo canal. - CLI local: usa o
outputFormatconfigurado. Destinos de mensagem de voz são convertidos para Ogg/Opus, e a saída de telefonia é convertida para PCM mono bruto de 16 kHz comffmpeg. - 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 mensagem de voz e retorna PCM diretamente para Talk/telefonia.
- Gradium: WAV para anexos de áudio, Opus para destinos de mensagem de voz e
ulaw_8000a 8 kHz para telefonia. - Inworld: MP3 para anexos de áudio normais,
OGG_OPUSnativo para destinos de mensagem de voz ePCMbruto a 22050 Hz para Talk/telefonia. - xAI: MP3 por padrão; a síntese de arquivos de áudio pode usar
mp3,wav,pcm,mulawoualawtanto para saída armazenada em buffer quanto para saída por streaming. Os destinos de mensagem de voz usam MP3 para streaming e fallback com buffer porque as saídaspcm,mulawealawda xAI são áudio bruto sem cabeçalho. A síntese com buffer usa o endpoint REST em lote/v1/ttsda xAI;textToSpeechStreamusawss://api.x.ai/v1/ttsnativo. Esse não é o contrato de voz em tempo real. O formato Opus nativo para mensagens de voz 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
sendVoicedo 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, localidadezh-CN) se o texto da resposta tiver predominância de CJK.
- O transporte incluído aceita um
Os formatos de saída da OpenAI e do 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 (com menos de 10 caracteres).
- Resume respostas longas quando os resumos estão habilitados, usando
summaryModel(ouagents.defaults.model.primary). - Anexa o áudio gerado à resposta.
- Em
mode: "final", ainda envia TTS somente em áudio para respostas finais transmitidas por streaming após a conclusão do fluxo de texto; a mídia gerada passa pela mesma normalização de mídia do canal que os anexos normais de resposta.
Se a resposta exceder maxLength, o OpenClaw nunca ignora completamente o áudio:
- Resumo ativado (padrão) e há um modelo de resumo disponível: resume o
texto para aproximadamente
maxLengthcaracteres 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
maxLengthcaracteres e sintetiza o texto truncado.
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 áudioReferência dos campos
messages.tts.* de nível superior
auto"off" | "always" | "inbound" | "tagged"Modo de TTS automático. inbound só envia áudio após uma mensagem de voz recebida; tagged só envia áudio quando a resposta inclui diretivas [[tts:...]] ou um bloco [[tts:text]].
enabledbooleanAlternâ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.
providerstringID 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 valor legado provider: "edge" é reescrito como "microsoft" por openclaw doctor --fix.
personastringID da persona ativa de personas. Normalizado para letras minúsculas.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
Identidade de fala estável. Campos: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Consulte Personas.
summaryModelstringModelo de baixo custo para resumo automático; o padrão é agents.defaults.model.primary. Aceita provider/model ou um alias de modelo configurado.
modelOverridesobjectPermite que o modelo emita diretivas de TTS. enabled tem como padrão true; allowProvider tem como padrão false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Configurações pertencentes ao provedor, indexadas pelo ID do provedor de fala. Os blocos diretos legados (messages.tts.openai, .elevenlabs, .microsoft, .edge) são reescritos por openclaw doctor --fix; confirme somente messages.tts.providers.<id>.
maxTextLengthnumberdefault: 4096Limite rígido de caracteres da entrada de TTS. /tts audio, tts.convert e tts.speak falham se ele for excedido.
timeoutMsnumberdefault: 30000Tempo 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.
prefsPathstringSubstitui o caminho JSON das preferências locais (provedor/limite/resumo). Padrão: ~/.openclaw/settings/tts.json.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável de 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). Variável de 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 mensagem 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 alternativa.
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 do ElevenLabs. Padrão: pMsXgVXv3BLzUgSXRplE. Alias legado: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, 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:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Recorre a GEMINI_API_KEY / GOOGLE_API_KEY. Se omitida, a TTS pode reutilizar models.providers.google.apiKey antes de recorrer à variável de 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:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Defina como audio-profile-v1 para envolver os campos de prompt da persona ativa em uma estrutura determinística de prompt de TTS do Gemini.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Somente https://generativelanguage.googleapis.com é aceito.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável de ambiente: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
URL HTTPS da API do 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
Inworld principal
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável 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 (excluindo 0).
OPENCLAW_DOCS_MARKER:paramClose:
CLI local (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
Argumentos do comando. Compatível com os placeholders {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
Formato de saída esperado da CLI. 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:
cwdstringenv"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: trueOPENCLAW_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 tiver predominância de 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 incluído, baseado no Edge.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
Strings de porcentagem (por exemplo, +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_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
Recorre a 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. Variável de ambiente: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Padrão: speech-2.8-hd. Variável de ambiente: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Padrão: English_expressive_narrator. Variável 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
Recorre a OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
ID do modelo de 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 do 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 /audio/speech após os campos de TTS da OpenAI gerados. Use isso 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:
baseUrlstringSubstitui o endpoint de TTS da OpenAI. Ordem de resolução: configuração → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Valores diferentes do padrão são tratados como endpoints de TTS compatíveis com a OpenAI, portanto nomes personalizados de modelos e vozes são aceitos, e speed deixa de ter sua verificação de intervalo 0.25..4.0.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável 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:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável 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. Variável de ambiente: VOLCENGINE_TTS_RESOURCE_ID. Use seed-tts-2.0 quando o projeto tiver direito de uso da TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Cabeçalho da chave do aplicativo. Padrão: aGjiRDfUWi. Variável de ambiente: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Substitui o endpoint HTTP de TTS do Seed Speech. Variável 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. Variável 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:
emotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Campos legados do Volcengine Speech Console. Variáveis 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
Variável de ambiente: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Padrão: https://api.x.ai/v1. Variável 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 busca o catálogo integrado atual; sem autenticação, lista as alternativas offline ara, eve, leo, rex e sal. IDs de vozes personalizadas da conta são encaminhados mesmo quando ausentes da 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 de velocidade nativa do provedor, 0.7..1.5.
OPENCLAW_DOCS_MARKER:paramClose:
Xiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variável de ambiente: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Padrão: https://api.xiaomimimo.com/v1. Variável de ambiente: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Padrão: mimo-v2.5-tts. Variável de ambiente: XIAOMI_TTS_MODEL. Também oferece suporte a 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. Variável 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. Variável 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
a 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 uma saída de TTS que não seja Opus nesse caminho quando ffmpeg
estiver disponível.
O WhatsApp envia o áudio pelo 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 exibem legendas em mensagens de voz de forma consistente.
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 limite de TTS configurados substituem qualquer valor padrão
do provedor definido pelo plugin.
RPC do Gateway
| Método | Finalidade |
|---|---|
tts.status |
Ler o estado atual do TTS e a última tentativa. |
tts.enable |
Definir a preferência automática local como always. |
tts.disable |
Definir a preferência automática local como off. |
tts.convert |
Converter texto em áudio uma única vez. |
tts.setProvider |
Definir a preferência local de provedor. |
tts.personas |
Listar as personas configuradas e a persona ativa. |
tts.setPersona |
Definir a preferência local de persona. |
tts.providers |
Listar os provedores configurados e seus status. |
Links de serviços
- Guia de conversão de texto em fala da OpenAI
- Referência da API de áudio da OpenAI
- Conversão de texto em fala pela API REST do Azure Speech
- Provedor Azure Speech
- Conversão de texto em fala da ElevenLabs
- Autenticação da ElevenLabs
- Gradium
- API de TTS da Inworld
- API MiniMax T2A v2
- API HTTP de TTS da Volcengine
- Síntese de fala do Xiaomi MiMo
- node-edge-tts
- Formatos de saída de fala da Microsoft
- Conversão de texto em fala da xAI