Audio / Messages vocaux (2026-01-17)
Ce qui fonctionne
- Compréhension des médias (audio) : si la compréhension audio est activée (ou auto-détectée), OpenClaw :
- Localise la première pièce jointe audio (chemin local ou URL) et la télécharge si nécessaire.
- Applique
maxBytesavant de l’envoyer à chaque entrée de modèle. - Exécute la première entrée de modèle admissible dans l’ordre (provider ou CLI).
- En cas d’échec ou d’omission (taille/délai d’attente), il essaie l’entrée suivante.
- En cas de réussite, il remplace
Bodypar un bloc[Audio]et définit{{Transcript}}.
- Analyse des commandes : lorsque la transcription réussit,
CommandBody/RawBodysont définis sur la transcription afin que les commandes slash continuent de fonctionner. - Journalisation verbeuse : avec
--verbose, nous journalisons le moment où la transcription s’exécute et celui où elle remplace le corps.
Auto-détection (par défaut)
Si vous ne configurez pas de modèles et quetools.media.audio.enabled n’est pas défini sur false,
OpenClaw effectue une auto-détection dans cet ordre et s’arrête à la première option fonctionnelle :
- Modèle de réponse actif lorsque son provider prend en charge la compréhension audio.
- CLI locales (si installées)
sherpa-onnx-offline(nécessiteSHERPA_ONNX_MODEL_DIRavec encoder/decoder/joiner/tokens)whisper-cli(depuiswhisper-cpp; utiliseWHISPER_CPP_MODELou le petit modèle intégré)whisper(CLI Python ; télécharge automatiquement les modèles)
- Gemini CLI (
gemini) à l’aide deread_many_files - Authentification provider
- Les entrées configurées
models.providers.*qui prennent en charge l’audio sont essayées en premier - Ordre de repli intégré : OpenAI → Groq → Deepgram → Google → Mistral
- Les entrées configurées
tools.media.audio.enabled: false.
Pour personnaliser, définissez tools.media.audio.models.
Remarque : la détection des binaires est effectuée au mieux sur macOS/Linux/Windows ; assurez-vous que la CLI est dans PATH (nous développons ~), ou définissez un modèle CLI explicite avec un chemin de commande complet.
Exemples de configuration
Repli provider + CLI (OpenAI + Whisper CLI)
Provider uniquement avec limitation par étendue
Provider uniquement (Deepgram)
Provider uniquement (Mistral Voxtral)
Renvoyer la transcription dans le chat (activation explicite)
Remarques et limites
- L’authentification provider suit l’ordre standard d’authentification des modèles (profils auth, variables d’environnement,
models.providers.*.apiKey). - Détails de configuration Groq : Groq.
- Deepgram récupère
DEEPGRAM_API_KEYlorsqueprovider: "deepgram"est utilisé. - Détails de configuration Deepgram : Deepgram (transcription audio).
- Détails de configuration Mistral : Mistral.
- Les providers audio peuvent remplacer
baseUrl,headersetproviderOptionsviatools.media.audio. - La limite de taille par défaut est de 20MB (
tools.media.audio.maxBytes). Un audio trop volumineux est ignoré pour ce modèle et l’entrée suivante est essayée. - Les fichiers audio minuscules/vides de moins de 1024 octets sont ignorés avant la transcription provider/CLI.
maxCharspar défaut pour l’audio est non défini (transcription complète). Définisseztools.media.audio.maxCharsoumaxCharspar entrée pour tronquer la sortie.- La valeur par défaut automatique OpenAI est
gpt-4o-mini-transcribe; définissezmodel: "gpt-4o-transcribe"pour une meilleure précision. - Utilisez
tools.media.audio.attachmentspour traiter plusieurs messages vocaux (mode: "all"+maxAttachments). - La transcription est disponible dans les templates sous la forme
{{Transcript}}. tools.media.audio.echoTranscriptest désactivé par défaut ; activez-le pour renvoyer la confirmation de transcription dans le chat d’origine avant le traitement par l’agent.tools.media.audio.echoFormatpersonnalise le texte renvoyé (placeholder :{transcript}).- La sortie stdout de la CLI est plafonnée (5MB) ; gardez une sortie CLI concise.
Prise en charge de l’environnement proxy
La transcription audio basée sur un provider respecte les variables d’environnement proxy sortantes standard :HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Détection des mentions dans les groupes
LorsquerequireMention: true est défini pour une discussion de groupe, OpenClaw transcrit désormais l’audio avant de vérifier les mentions. Cela permet de traiter les messages vocaux même lorsqu’ils contiennent des mentions.
Fonctionnement :
- Si un message vocal n’a pas de corps texte et que le groupe exige des mentions, OpenClaw effectue une transcription de « pré-vérification ».
- La transcription est vérifiée par rapport aux motifs de mention (par exemple
@BotName, déclencheurs emoji). - Si une mention est trouvée, le message continue dans le pipeline complet de réponse.
- La transcription est utilisée pour la détection des mentions afin que les messages vocaux puissent franchir le filtre de mention.
- Si la transcription échoue pendant la pré-vérification (délai d’attente, erreur API, etc.), le message est traité selon la détection de mention basée uniquement sur le texte.
- Cela garantit que les messages mixtes (texte + audio) ne sont jamais incorrectement rejetés.
- Définissez
channels.telegram.groups.<chatId>.disableAudioPreflight: truepour ignorer les vérifications de mention sur transcription de pré-vérification pour ce groupe. - Définissez
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflightpour remplacer par sujet (truepour ignorer,falsepour forcer l’activation). - La valeur par défaut est
false(pré-vérification activée lorsque les conditions de filtrage par mention correspondent).
requireMention: true. Le message vocal est transcrit, la mention est détectée et l’agent répond.
Pièges courants
- Les règles d’étendue utilisent la première correspondance gagnante.
chatTypeest normalisé endirect,groupouroom. - Assurez-vous que votre CLI se termine avec le code 0 et affiche du texte brut ; le JSON doit être ajusté via
jq -r .text. - Pour
parakeet-mlx, si vous passez--output-dir, OpenClaw lit<output-dir>/<media-basename>.txtlorsque--output-formatvauttxt(ou est omis) ; les formats de sortie autres quetxtreviennent à l’analyse stdout. - Gardez des délais d’attente raisonnables (
timeoutSeconds, 60s par défaut) pour éviter de bloquer la file de réponses. - La transcription de pré-vérification ne traite que la première pièce jointe audio pour la détection des mentions. Les fichiers audio supplémentaires sont traités pendant la phase principale de compréhension des médias.