Áudio / Notas de Voz — 2026-01-17¶
O que funciona¶
- Compreensão de mídia (áudio): Se a compreensão de áudio estiver habilitada (ou detectada automaticamente), o OpenClaw:
1. Localiza o primeiro anexo de áudio (caminho local ou URL) e faz o download se necessário.
2. Aplica
maxBytesantes de enviar para cada entrada de modelo. 3. Executa a primeira entrada de modelo elegível em ordem (provedor ou CLI). 4. Se falhar ou pular (tamanho/timeout), tenta a próxima entrada. 5. Em caso de sucesso, substituiBodypor um bloco[Audio]e define{{Transcript}}. - Análise de comandos: Quando a transcrição é bem-sucedida,
CommandBody/RawBodysão definidos como a transcrição para que os comandos de barra continuem funcionando. - Logs detalhados: 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 faz a detecção automática nesta ordem e para na primeira opção que funcionar:
- 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 em Python; baixa os modelos automaticamente) - Gemini CLI (
gemini) usandoread_many_files - Chaves de provedor (OpenAI → Groq → Deepgram → Google)
Para desativar a detecção automática, defina tools.media.audio.enabled: false.
Para personalizar, defina tools.media.audio.models.
Nota: A detecção de binários é best-effort em macOS/Linux/Windows; garanta que a CLI esteja em PATH (expandimos ~), ou defina um modelo de CLI explícito com o caminho completo do comando.
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" }],
},
},
},
}
Notas 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). - O Deepgram usa
DEEPGRAM_API_KEYquandoprovider: "deepgram"é utilizado. - Detalhes de configuração do Deepgram: Deepgram (transcrição de áudio).
- Provedores de áudio podem sobrescrever
baseUrl,headerseproviderOptionsviatools.media.audio. - O limite de tamanho padrão é 20MB (
tools.media.audio.maxBytes). Áudio acima do tamanho é ignorado para aquele modelo e a próxima entrada é tentada. - O
maxCharspadrão para áudio é não definido (transcrição completa). Definatools.media.audio.maxCharsoumaxCharspor entrada para reduzir 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}}. - A saída stdout da CLI é limitada (5MB); mantenha a saída da CLI concisa.
Pegadas¶
- As regras de escopo usam “primeira correspondência vence”.
chatTypeé normalizado paradirect,groupouroom. - Garanta que sua CLI finalize com código 0 e imprima texto simples; JSON precisa ser ajustado via
jq -r .text. - Mantenha timeouts razoáveis (
timeoutSeconds, padrão 60s) para evitar bloquear a fila de respostas.