Nodes and media
Áudio e notas de voz
O que funciona
- Compreensão de mídia (áudio): Se a compreensão de áudio estiver habilitada (ou for detectada automaticamente), o OpenClaw:
- Localiza o primeiro anexo de áudio (caminho local ou URL) e o baixa, se necessário.
- Impõe
maxBytesantes de enviar para cada entrada de modelo. - Executa a primeira entrada de modelo elegível em ordem (provedor ou CLI).
- Se ela falhar ou for ignorada (tamanho/tempo limite), tenta a próxima entrada.
- Em caso de sucesso, substitui
Bodypor um bloco[Audio]e define{{Transcript}}.
- Análise de comandos: Quando a transcrição é bem-sucedida,
CommandBody/RawBodysão definidos como a transcrição, então comandos com barra continuam funcionando. - Registro 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 e tools.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 seu provedor 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 incluído)whisper(CLI Python; baixa modelos automaticamente)
- Autenticação de provedor
- Entradas
models.providers.*configuradas que oferecem suporte a áudio são tentadas primeiro - Ordem de fallback de provedores: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Entradas
Desde 2026-05-22, a detecção automática da Gemini CLI não é mais compatível com compreensão de mídia. O Google está migrando usuários da Gemini CLI para a Antigravity CLI; áudio deve usar transcrição local ou por provedor, enquanto o fallback de CLI para imagem/vídeo deve migrar para a Antigravity CLI (agy).
Para desabilitar a detecção automática, defina tools.media.audio.enabled: false.
Para personalizar, defina tools.media.audio.models.
Observação: a detecção de binários é de melhor esforço no macOS/Linux/Windows; garanta que a CLI esteja no PATH (expandimos ~) ou defina um modelo de CLI explícito com um caminho de comando completo.
Exemplos de configuração
Provedor + fallback de CLI (OpenAI + Whisper CLI)
{ tools: { media: { audio: { enabled: true, maxBytes: 20971520, models: [ { provider: "openai", model: "gpt-4o-mini-transcribe" }, { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"], timeoutSeconds: 45, }, ], }, }, },}Somente provedor com controle por escopo
{ tools: { media: { audio: { enabled: true, scope: { default: "allow", rules: [{ action: "deny", match: { chatType: "group" } }], }, models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Somente provedor (Deepgram)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "deepgram", model: "nova-3" }], }, }, },}Somente provedor (Mistral Voxtral)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "mistral", model: "voxtral-mini-latest" }], }, }, },}Somente provedor (SenseAudio)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319" }], }, }, },}Ecoar transcrição no chat (opcional)
{ tools: { media: { audio: { enabled: true, echoTranscript: true, // default is false echoFormat: '📝 "{transcript}"', // optional, supports {transcript} models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Observações e limites
- A autenticação de provedor segue a ordem padrão de autenticação de modelo (perfis de autenticação, variáveis de ambiente,
models.providers.*.apiKey). - Detalhes de configuração do Groq: Groq.
- 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.
- SenseAudio usa
SENSEAUDIO_API_KEYquandoprovider: "senseaudio"é usado. - Detalhes de configuração do SenseAudio: SenseAudio.
- Provedores de áudio podem substituir
baseUrl,headerseproviderOptionspor meio detools.media.audio. - O limite de tamanho padrão é 20 MB (
tools.media.audio.maxBytes). Áudio acima do tamanho limite é ignorado para esse modelo e a próxima entrada é tentada. - Arquivos de áudio tiny/vazios abaixo de 1024 bytes são ignorados antes da transcrição por provedor/CLI.
- O
maxCharspadrão para áudio não é definido (transcrição completa). Definatools.media.audio.maxCharsoumaxCharspor entrada para limitar a saída. - O padrão automático da 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 fica disponível para templates como
{{Transcript}}. tools.media.audio.echoTranscriptfica desativado por padrão; habilite-o para enviar uma confirmação de transcrição de volta ao chat de origem antes do processamento pelo agente.tools.media.audio.echoFormatpersonaliza o texto de eco (placeholder:{transcript}).- O stdout da CLI é limitado (5 MB); mantenha a saída da CLI concisa.
argsda CLI deve usar{{MediaPath}}para o caminho do arquivo de áudio local. Executeopenclaw doctor --fixpara migrar placeholders{input}obsoletos de configuraçõesaudio.transcription.commandantigas.
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_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Se nenhuma variável de ambiente de proxy estiver definida, a saída direta é usada. Se a configuração de proxy estiver malformada, o OpenClaw registra um aviso e faz fallback para busca direta.
Detecção de menções em grupos
Quando requireMention: true é 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 realiza 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ções, para que notas de voz possam passar pelo gate de menção.
Comportamento de fallback:
- Se a transcrição falhar durante o preflight (tempo limite, erro de API etc.), a mensagem será processada com base na detecção de menções apenas por texto.
- Isso garante que mensagens mistas (texto + áudio) nunca sejam descartadas incorretamente.
Opt-out por grupo/tópico do Telegram:
- Defina
channels.telegram.groups.<chatId>.disableAudioPreflight: truepara ignorar verificações de menção por transcrição de preflight nesse grupo. - Defina
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightpara substituir por tópico (truepara ignorar,falsepara forçar a habilitação). - O padrão é
false(preflight habilitado quando as condições com gate de menção correspondem).
Exemplo: Um usuário envia uma nota de voz dizendo "Hey @Claude, what's the weather?" em um grupo do Telegram com requireMention: true. A nota de voz é transcrita, a menção é detectada e o agente responde.
Pegadinhas
- Regras de escopo usam a primeira correspondência.
chatTypeé normalizado paradirect,groupouroom. - Garanta que sua CLI saia com 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 que não sejamtxtfazem fallback para análise de stdout. - Mantenha tempos limite razoáveis (
timeoutSeconds, padrão de 60 s) para evitar bloquear a fila de respostas. - A transcrição de preflight processa apenas o primeiro anexo de áudio para detecção de menção. Áudio adicional é processado durante a fase principal de compreensão de mídia.