Audio / Note vocali (2026-01-17)
Cosa funziona
- Comprensione dei media (audio): se la comprensione audio è abilitata (o rilevata automaticamente), OpenClaw:
- Individua il primo allegato audio (percorso locale o URL) e lo scarica se necessario.
- Applica
maxBytesprima di inviarlo a ciascuna voce di modello. - Esegue la prima voce di modello idonea in ordine (provider o CLI).
- Se fallisce o viene saltata (dimensione/timeout), prova la voce successiva.
- In caso di successo, sostituisce
Bodycon un blocco[Audio]e imposta{{Transcript}}.
- Parsing dei comandi: quando la trascrizione riesce,
CommandBody/RawBodyvengono impostati sul transcript così i comandi slash continuano a funzionare. - Logging dettagliato: in
--verbose, registriamo quando la trascrizione viene eseguita e quando sostituisce il body.
Rilevamento automatico (predefinito)
Se non configuri modelli etools.media.audio.enabled non è impostato su false,
OpenClaw esegue il rilevamento automatico in questo ordine e si ferma alla prima opzione funzionante:
- Modello di risposta attivo quando il suo provider supporta la comprensione audio.
- CLI locali (se installate)
sherpa-onnx-offline(richiedeSHERPA_ONNX_MODEL_DIRcon encoder/decoder/joiner/tokens)whisper-cli(dawhisper-cpp; usaWHISPER_CPP_MODELo il modello tiny incluso)whisper(CLI Python; scarica automaticamente i modelli)
- Gemini CLI (
gemini) tramiteread_many_files - Autenticazione provider
- Le voci configurate in
models.providers.*che supportano l’audio vengono provate per prime - Ordine di fallback incluso: OpenAI → Groq → Deepgram → Google → Mistral
- Le voci configurate in
tools.media.audio.enabled: false.
Per personalizzarlo, imposta tools.media.audio.models.
Nota: il rilevamento dei binari è best-effort su macOS/Linux/Windows; assicurati che la CLI sia nel PATH (espandiamo ~), oppure imposta un modello CLI esplicito con un percorso completo del comando.
Esempi di configurazione
Provider + fallback CLI (OpenAI + Whisper CLI)
Solo provider con gating degli scope
Solo provider (Deepgram)
Solo provider (Mistral Voxtral)
Ripeti il transcript nella chat (opt-in)
Note e limiti
- L’autenticazione del provider segue l’ordine standard di autenticazione del modello (profili auth, variabili d’ambiente,
models.providers.*.apiKey). - Dettagli di configurazione di Groq: Groq.
- Deepgram usa
DEEPGRAM_API_KEYquando viene usatoprovider: "deepgram". - Dettagli di configurazione di Deepgram: Deepgram (trascrizione audio).
- Dettagli di configurazione di Mistral: Mistral.
- I provider audio possono sovrascrivere
baseUrl,headerseproviderOptionstramitetools.media.audio. - Il limite dimensionale predefinito è 20MB (
tools.media.audio.maxBytes). L’audio sovradimensionato viene saltato per quel modello e viene provata la voce successiva. - I file audio minuscoli/vuoti sotto 1024 byte vengono saltati prima della trascrizione provider/CLI.
- Il valore predefinito di
maxCharsper l’audio è non impostato (transcript completo). Impostatools.media.audio.maxCharsomaxCharsper voce per tagliare l’output. - Il valore predefinito automatico di OpenAI è
gpt-4o-mini-transcribe; impostamodel: "gpt-4o-transcribe"per una precisione maggiore. - Usa
tools.media.audio.attachmentsper elaborare più note vocali (mode: "all"+maxAttachments). - Il transcript è disponibile per i template come
{{Transcript}}. tools.media.audio.echoTranscriptè disattivato per impostazione predefinita; abilitalo per inviare la conferma della trascrizione alla chat di origine prima dell’elaborazione dell’agente.tools.media.audio.echoFormatpersonalizza il testo ripetuto (segnaposto:{transcript}).- Lo stdout della CLI è limitato (5MB); mantieni conciso l’output della CLI.
Supporto per l’ambiente proxy
La trascrizione audio basata su provider rispetta le variabili d’ambiente standard per il proxy in uscita:HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Rilevamento delle mention nei gruppi
QuandorequireMention: true è impostato per una chat di gruppo, OpenClaw ora trascrive l’audio prima di controllare le mention. Questo consente di elaborare le note vocali anche quando contengono mention.
Come funziona:
- Se un messaggio vocale non ha corpo testuale e il gruppo richiede mention, OpenClaw esegue una trascrizione “preflight”.
- Il transcript viene controllato per i pattern di mention (ad esempio
@BotName, trigger emoji). - Se viene trovata una mention, il messaggio prosegue attraverso l’intera pipeline di risposta.
- Il transcript viene usato per il rilevamento delle mention così le note vocali possono superare il gate delle mention.
- Se la trascrizione fallisce durante il preflight (timeout, errore API, ecc.), il messaggio viene elaborato in base al rilevamento delle mention solo testuale.
- Questo assicura che i messaggi misti (testo + audio) non vengano mai scartati erroneamente.
- Imposta
channels.telegram.groups.<chatId>.disableAudioPreflight: trueper saltare i controlli delle mention sul transcript preflight per quel gruppo. - Imposta
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightper sovrascrivere per topic (trueper saltare,falseper forzare l’abilitazione). - Il valore predefinito è
false(preflight abilitato quando corrispondono le condizioni con gating delle mention).
requireMention: true. La nota vocale viene trascritta, la mention viene rilevata e l’agente risponde.
Insidie
- Le regole di scope usano first-match wins.
chatTypeviene normalizzato indirect,grouporoom. - Assicurati che la tua CLI termini con codice 0 e stampi testo semplice; il JSON deve essere adattato tramite
jq -r .text. - Per
parakeet-mlx, se passi--output-dir, OpenClaw legge<output-dir>/<media-basename>.txtquando--output-formatètxt(o omesso); i formati di output diversi datxttornano al parsing dello stdout. - Mantieni ragionevoli i timeout (
timeoutSeconds, predefinito 60s) per evitare di bloccare la coda di risposta. - La trascrizione preflight elabora solo il primo allegato audio per il rilevamento delle mention. L’audio aggiuntivo viene elaborato durante la fase principale di comprensione dei media.