Áudio / Notas de voz (2026-01-17)
O que funciona
- Compreensão de mídia (áudio): se a compreensão de áudio estiver ativada (ou detectada automaticamente), o OpenClaw:
- Localiza o primeiro anexo de áudio (caminho local ou URL) e o baixa, se necessário.
- Aplica
maxBytesantes de enviar para cada entrada de modelo. - Executa a primeira entrada de modelo elegível em ordem (provedor ou CLI).
- Se falhar ou for ignorada (tamanho/timeout), tenta a próxima entrada.
- Em caso de sucesso, substitui
Bodypor um bloco[Audio]e define{{Transcript}}.
- Parsing de comandos: quando a transcrição tem sucesso,
CommandBody/RawBodysão definidos como a transcrição para que comandos de barra continuem funcionando. - Logging detalhado: em
--verbose, registramos quando a transcrição é executada e quando ela substitui o corpo.
Detecção automática (padrão)
Se você não configurar modelos etools.media.audio.enabled não estiver definido como false,
o OpenClaw detecta automaticamente nesta ordem e para na primeira opção funcional:
- Modelo de resposta ativo quando o provedor dele oferece suporte à compreensão de áudio.
- CLIs locais (se instaladas)
sherpa-onnx-offline(requerSHERPA_ONNX_MODEL_DIRcom encoder/decoder/joiner/tokens)whisper-cli(dewhisper-cpp; usaWHISPER_CPP_MODELou o modelo tiny empacotado)whisper(CLI Python; baixa modelos automaticamente)
- Gemini CLI (
gemini) usandoread_many_files - Autenticação do provedor
- Entradas configuradas em
models.providers.*com suporte a áudio são tentadas primeiro - Ordem de fallback empacotada: OpenAI → Groq → Deepgram → Google → Mistral
- Entradas configuradas em
tools.media.audio.enabled: false.
Para personalizar, defina tools.media.audio.models.
Observação: a detecção de binário é best-effort em macOS/Linux/Windows; garanta que a CLI esteja no PATH (expandimos ~) ou defina um modelo de CLI explícito com um caminho completo para o comando.
Exemplos de configuração
Provedor + fallback de CLI (OpenAI + Whisper CLI)
Somente provedor com bloqueio por escopo
Somente provedor (Deepgram)
Somente provedor (Mistral Voxtral)
Ecoar transcrição no chat (opt-in)
Observações e limites
- A autenticação do provedor segue a ordem padrão de autenticação do modelo (perfis de autenticação, variáveis de ambiente,
models.providers.*.apiKey). - Detalhes de configuração do Groq: Groq.
- O Deepgram usa
DEEPGRAM_API_KEYquandoprovider: "deepgram"é usado. - Detalhes de configuração do Deepgram: Deepgram (transcrição de áudio).
- Detalhes de configuração do Mistral: Mistral.
- Provedores de áudio podem substituir
baseUrl,headerseproviderOptionsviatools.media.audio. - O limite de tamanho padrão é 20MB (
tools.media.audio.maxBytes). Áudios grandes demais são ignorados para aquele modelo e a próxima entrada é tentada. - Arquivos de áudio minúsculos/vazios abaixo de 1024 bytes são ignorados antes da transcrição por provedor/CLI.
- O padrão de
maxCharspara áudio é não definido (transcrição completa). Definatools.media.audio.maxCharsoumaxCharspor entrada para truncar a saída. - O padrão automático do OpenAI é
gpt-4o-mini-transcribe; definamodel: "gpt-4o-transcribe"para maior precisão. - Use
tools.media.audio.attachmentspara processar várias notas de voz (mode: "all"+maxAttachments). - A transcrição está disponível para templates como
{{Transcript}}. tools.media.audio.echoTranscriptfica desativado por padrão; ative-o para enviar a confirmação da transcrição de volta ao chat de origem antes do processamento pelo agente.tools.media.audio.echoFormatpersonaliza o texto ecoado (placeholder:{transcript}).- A saída stdout da CLI é limitada (5MB); mantenha a saída da CLI concisa.
Suporte a ambiente de proxy
A transcrição de áudio baseada em provedor respeita variáveis de ambiente padrão de proxy de saída:HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Detecção de menção em grupos
QuandorequireMention: true está definido para um chat em grupo, o OpenClaw agora transcreve áudio antes de verificar menções. Isso permite que notas de voz sejam processadas mesmo quando contêm menções.
Como funciona:
- Se uma mensagem de voz não tiver corpo de texto e o grupo exigir menções, o OpenClaw faz uma transcrição de “preflight”.
- A transcrição é verificada em busca de padrões de menção (por exemplo,
@BotName, gatilhos por emoji). - Se uma menção for encontrada, a mensagem segue pelo pipeline completo de resposta.
- A transcrição é usada para detecção de menção, para que notas de voz possam passar pelo bloqueio por menção.
- Se a transcrição falhar durante o preflight (timeout, erro de API etc.), a mensagem será processada com base apenas na detecção de menção por texto.
- Isso garante que mensagens mistas (texto + áudio) nunca sejam descartadas incorretamente.
- Defina
channels.telegram.groups.<chatId>.disableAudioPreflight: truepara ignorar verificações de menção na transcrição de preflight para esse grupo. - Defina
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightpara substituir por tópico (truepara ignorar,falsepara forçar ativação). - O padrão é
false(preflight ativado quando as condições com bloqueio por menção correspondem).
requireMention: true. A nota de voz é transcrita, a menção é detectada e o agente responde.
Pegadinhas
- Regras de escopo usam first-match wins.
chatTypeé normalizado paradirect,groupouroom. - Garanta que sua CLI saia com código 0 e imprima texto simples; JSON precisa ser ajustado via
jq -r .text. - Para
parakeet-mlx, se você passar--output-dir, o OpenClaw lê<output-dir>/<media-basename>.txtquando--output-formatétxt(ou omitido); formatos de saída diferentes detxtrecorrem ao parsing de stdout. - Mantenha timeouts razoáveis (
timeoutSeconds, padrão 60s) para evitar bloquear a fila de resposta. - A transcrição de preflight processa apenas o primeiro anexo de áudio para detecção de menção. Áudios adicionais são processados durante a fase principal de compreensão de mídia.