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 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 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
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)
Somente provedor com controle por escopo
Somente provedor (Deepgram)
Somente provedor (Mistral Voxtral)
Somente provedor (SenseAudio)
Ecoar transcrição no chat (opcional)
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
Detecção de menções em grupos
QuandorequireMention: 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.
- 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.
- 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).
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.