Text-to-speech (TTS)
O OpenClaw pode converter respostas de saída em áudio usando ElevenLabs, Microsoft, MiniMax ou OpenAI. Funciona em qualquer lugar onde o OpenClaw possa enviar áudio.Serviços compatíveis
- ElevenLabs (provedor principal ou de fallback)
- Microsoft (provedor principal ou de fallback; a implementação incluída atual usa
node-edge-tts) - MiniMax (provedor principal ou de fallback; usa a API T2A v2)
- OpenAI (provedor principal ou de fallback; também usado para resumos)
Observações sobre o Microsoft speech
O provedor de fala da Microsoft incluído atualmente usa o serviço online de TTS neural do Microsoft Edge por meio da bibliotecanode-edge-tts. É um
serviço hospedado (não local), usa endpoints da Microsoft e não exige chave de API.
O node-edge-tts expõe opções de configuração de fala e formatos de saída, mas
nem todas as opções são compatíveis com o serviço. Configuração legada e entrada de diretiva
usando edge ainda funcionam e são normalizadas para microsoft.
Como esse caminho usa um serviço web público sem SLA ou cota publicados,
trate-o como melhor esforço. Se você precisar de limites garantidos e suporte, use OpenAI
ou ElevenLabs.
Chaves opcionais
Se você quiser OpenAI, ElevenLabs ou MiniMax:ELEVENLABS_API_KEY(ouXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel configurado (ou agents.defaults.model.primary),
portanto esse provedor também deve estar autenticado se você habilitar resumos.
Links dos serviços
- Guia de Text-to-Speech da OpenAI
- Referência da API de áudio da OpenAI
- Text to Speech da ElevenLabs
- Autenticação da ElevenLabs
- API MiniMax T2A v2
- node-edge-tts
- Formatos de saída do Microsoft Speech
Isso está habilitado por padrão?
Não. O auto‑TTS vem desativado por padrão. Habilite-o na configuração commessages.tts.auto ou por sessão com /tts always (alias: /tts on).
Quando messages.tts.provider não está definido, o OpenClaw escolhe o primeiro
provedor de fala configurado na ordem de seleção automática do registro.
Configuração
A configuração de TTS fica emmessages.tts no openclaw.json.
O esquema completo está em Configuração do Gateway.
Configuração mínima (habilitar + provedor)
OpenAI principal com fallback para ElevenLabs
Microsoft principal (sem chave de API)
MiniMax principal
Desabilitar o Microsoft speech
Limites personalizados + caminho de preferências
Responder com áudio apenas após uma mensagem de voz recebida
Desabilitar resumo automático para respostas longas
Observações sobre os campos
auto: modo de auto‑TTS (off,always,inbound,tagged).inboundenvia áudio apenas após uma mensagem de voz recebida.taggedenvia áudio apenas quando a resposta inclui tags[[tts]].
enabled: alternância legada (o doctor migra isso paraauto).mode:"final"(padrão) ou"all"(inclui respostas de ferramenta/bloco).provider: id do provedor de fala, como"elevenlabs","microsoft","minimax"ou"openai"(o fallback é automático).- Se
providernão estiver definido, o OpenClaw usa o primeiro provedor de fala configurado na ordem de seleção automática do registro. - O
provider: "edge"legado ainda funciona e é normalizado paramicrosoft. summaryModel: modelo barato opcional para resumo automático; o padrão éagents.defaults.model.primary.- Aceita
provider/modelou um alias de modelo configurado.
- Aceita
modelOverrides: permite que o modelo emita diretivas de TTS (ativado por padrão).allowProvidertem padrãofalse(troca de provedor é opt-in).
providers.<id>: configurações do provedor, indexadas pelo id do provedor de fala.- Blocos diretos de provedor legados (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) são migrados automaticamente paramessages.tts.providers.<id>no carregamento. maxTextLength: limite rígido para entrada de TTS (caracteres)./tts audiofalha se excedido.timeoutMs: tempo limite da solicitação (ms).prefsPath: substitui o caminho local do JSON de preferências (provedor/limite/resumo).- Os valores de
apiKeyusam como fallback variáveis de ambiente (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: substitui a URL base da API da ElevenLabs.providers.openai.baseUrl: substitui o endpoint de TTS da OpenAI.- Ordem de resolução:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Valores diferentes do padrão são tratados como endpoints de TTS compatíveis com OpenAI, então nomes personalizados de modelo e voz são aceitos.
- Ordem de resolução:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: ISO 639-1 de 2 letras (ex.:en,de)providers.elevenlabs.seed: inteiro0..4294967295(determinismo de melhor esforço)providers.minimax.baseUrl: substitui a URL base da API MiniMax (padrãohttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: modelo de TTS (padrãospeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: identificador de voz (padrãoEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: velocidade de reprodução0.5..2.0(padrão 1.0).providers.minimax.vol: volume(0, 10](padrão 1.0; deve ser maior que 0).providers.minimax.pitch: deslocamento de tom-12..12(padrão 0).providers.microsoft.enabled: permite o uso do Microsoft speech (padrãotrue; sem chave de API).providers.microsoft.voice: nome da voz neural da Microsoft (ex.:en-US-MichelleNeural).providers.microsoft.lang: código do idioma (ex.:en-US).providers.microsoft.outputFormat: formato de saída da Microsoft (ex.:audio-24khz-48kbitrate-mono-mp3).- Consulte os formatos de saída do Microsoft Speech para valores válidos; nem todos os formatos são compatíveis com o transporte incluído baseado em Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: strings de porcentagem (ex.:+10%,-5%).providers.microsoft.saveSubtitles: grava legendas em JSON ao lado do arquivo de áudio.providers.microsoft.proxy: URL de proxy para solicitações do Microsoft speech.providers.microsoft.timeoutMs: substituição do tempo limite da solicitação (ms).edge.*: alias legado para as mesmas configurações da Microsoft.
Substituições guiadas pelo modelo (ativado por padrão)
Por padrão, o modelo pode emitir diretivas de TTS para uma única resposta. Quandomessages.tts.auto é tagged, essas diretivas são necessárias para acionar o áudio.
Quando ativado, o modelo pode emitir diretivas [[tts:...]] para substituir a voz
de uma única resposta, além de um bloco opcional [[tts:text]]...[[/tts:text]] para
fornecer tags expressivas (risadas, indicações de canto etc.) que devem aparecer
apenas no áudio.
As diretivas provider=... são ignoradas a menos que modelOverrides.allowProvider: true.
Exemplo de payload de resposta:
provider(id do provedor de fala registrado, por exemploopenai,elevenlabs,minimaxoumicrosoft; requerallowProvider: true)voice(voz da OpenAI) ouvoiceId(ElevenLabs / MiniMax)model(modelo de TTS da OpenAI, id do modelo da ElevenLabs ou modelo do MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume do MiniMax, 0-10)pitch(tom do MiniMax, -12 a 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Preferências por usuário
Os comandos de barra gravam substituições locais emprefsPath (padrão:
~/.openclaw/settings/tts.json, substituível com OPENCLAW_TTS_PREFS ou
messages.tts.prefsPath).
Campos armazenados:
enabledprovidermaxLength(limite para resumo; padrão 1500 caracteres)summarize(padrãotrue)
messages.tts.* para esse host.
Formatos de saída (fixos)
- Feishu / Matrix / Telegram / WhatsApp: mensagem de voz Opus (
opus_48000_64da ElevenLabs,opusda OpenAI).- 48kHz / 64kbps é um bom equilíbrio para mensagem de voz.
- Outros canais: MP3 (
mp3_44100_128da ElevenLabs,mp3da OpenAI).- 44.1kHz / 128kbps é o equilíbrio padrão para clareza de fala.
- MiniMax: MP3 (modelo
speech-2.8-hd, taxa de amostragem de 32kHz). O formato de nota de voz não é compatível nativamente; use OpenAI ou ElevenLabs para mensagens de voz Opus garantidas. - Microsoft: usa
microsoft.outputFormat(padrãoaudio-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 de 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 você precisar de mensagens de voz Opus garantidas. - Se o formato de saída configurado da Microsoft falhar, o OpenClaw tenta novamente com MP3.
- O transporte incluído aceita um
Comportamento do auto-TTS
Quando habilitado, o OpenClaw:- ignora TTS se a resposta já contiver mídia ou uma diretiva
MEDIA:. - ignora respostas muito curtas (< 10 caracteres).
- resume respostas longas quando habilitado usando
agents.defaults.model.primary(ousummaryModel). - anexa o áudio gerado à resposta.
maxLength e o resumo estiver desativado (ou não houver chave de API para o
modelo de resumo), o áudio
será ignorado e a resposta de texto normal será enviada.
Diagrama de fluxo
Uso do comando de barra
Há um único comando:/tts.
Consulte Comandos de barra para detalhes de habilitação.
Observação sobre o Discord: /tts é um comando nativo do Discord, então o OpenClaw registra
/voice como comando nativo lá. O texto /tts ... ainda funciona.
- Os comandos exigem um remetente autorizado (as regras de allowlist/proprietário continuam valendo).
commands.textou o registro de comandos nativos devem estar habilitados.off|always|inbound|taggedsão alternâncias por sessão (/tts oné um alias para/tts always).limitesummarysão armazenados em preferências locais, não na configuração principal./tts audiogera uma resposta de áudio única (não ativa o TTS)./tts statusinclui visibilidade de fallback para a tentativa mais recente:- fallback com sucesso:
Fallback: <primary> -> <used>maisAttempts: ... - falha:
Error: ...maisAttempts: ... - diagnósticos detalhados:
Attempt details: provider:outcome(reasonCode) latency
- fallback com sucesso:
- Falhas de API da OpenAI e da ElevenLabs agora incluem detalhes de erro do provedor já analisados e o id da solicitação (quando retornado pelo provedor), e isso aparece em erros/logs de TTS.
Ferramenta do agente
A ferramentatts converte texto em fala e retorna um anexo de áudio para
entrega na resposta. Quando o canal é Feishu, Matrix, Telegram ou WhatsApp,
o áudio é entregue como mensagem de voz em vez de anexo de arquivo.
RPC do Gateway
Métodos do Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers