Audio et notes vocales
Audio / Notes vocales (2026-01-17)
Section intitulée « Audio / Notes vocales (2026-01-17) »Ce qui fonctionne
Section intitulée « Ce qui fonctionne »- Compréhension des médias (audio) : Si la compréhension audio est activée (ou détectée automatiquement), OpenClaw :
- Localise la première pièce jointe audio (chemin local ou URL) et la télécharge si nécessaire.
- Applique
maxBytesavant l’envoi à chaque entrée de modèle. - Exécute la première entrée de modèle éligible dans l’ordre (fournisseur ou CLI).
- En cas d’échec ou d’ignorance (taille/délai d’attente), il essaie l’entrée suivante.
- En cas de succès, il remplace
Bodypar un bloc[Audio]et définit{{Transcript}}.
- Analyse des commandes : Lorsque la transcription réussit,
CommandBody/RawBodysont définis avec la transcription pour que les commandes slash fonctionnent toujours. - Journalisation détaillée : Dans
--verbose, nous journalisons l’exécution de la transcription et le remplacement du corps.
Détection automatique (par défaut)
Section intitulée « Détection automatique (par défaut) »Si vous ne configurez pas de modèles et que tools.media.audio.enabled n’est pas défini sur false,
OpenClaw détecte automatiquement dans cet ordre et s’arrête à la première option fonctionnelle :
- CLI locales (si installées)
sherpa-onnx-offline(nécessiteSHERPA_ONNX_MODEL_DIRavec encodeur/décodeur/joineur/jetons)whisper-cli(depuiswhisper-cpp; utiliseWHISPER_CPP_MODELou le petit modèle inclus)whisper(CLI Python ; télécharge les modèles automatiquement)
- CLI Gemini (
gemini) utilisantread_many_files - Clés de fournisseur (OpenAI → Groq → Deepgram → Google)
Pour désactiver la détection automatique, définissez tools.media.audio.enabled: false.
Pour personnaliser, définissez tools.media.audio.models.
Remarque : La détection binaire est de meilleure effort sur macOS/Linux/Windows ; assurez-vous que le CLI est sur PATH (nous développons ~), ou définissez un CLI explicite avec un chemin de commande complet.
Exemples de configuration
Section intitulée « Exemples de configuration »Provider + repli CLI (OpenAI + Whisper CLI)
Section intitulée « Provider + repli 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, }, ], }, }, },}Provider uniquement avec filtrage par périmètre
Section intitulée « Provider uniquement avec filtrage par périmètre »{ tools: { media: { audio: { enabled: true, scope: { default: "allow", rules: [{ action: "deny", match: { chatType: "group" } }], }, models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Provider uniquement (Deepgram)
Section intitulée « Provider uniquement (Deepgram) »{ tools: { media: { audio: { enabled: true, models: [{ provider: "deepgram", model: "nova-3" }], }, }, },}Provider uniquement (Mistral Voxtral)
Section intitulée « Provider uniquement (Mistral Voxtral) »{ tools: { media: { audio: { enabled: true, models: [{ provider: "mistral", model: "voxtral-mini-latest" }], }, }, },}Renvoyer la transcription au chat (opt-in)
Section intitulée « Renvoyer la transcription au chat (opt-in) »{ tools: { media: { audio: { enabled: true, echoTranscript: true, // default is false echoFormat: '📝 "{transcript}"', // optional, supports {transcript} models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Notes et limites
Section intitulée « Notes et limites »- L’authentification du provider suit l’ordre standard d’authentification des modèles (profils d’authentification, env vars,
models.providers.*.apiKey). - 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 20 Mo (
tools.media.audio.maxBytes). Les fichiers audio trop volumineux sont ignorés 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 par le provider/CLI.
- La valeur par défaut
maxCharspour l’audio est non définie (transcription complète). Définisseztools.media.audio.maxCharsoumaxCharspar entrée pour réduire la sortie. - La valeur par défaut automatique de OpenAI est
gpt-4o-mini-transcribe; définissezmodel: "gpt-4o-transcribe"pour une précision accrue. - Utilisez
tools.media.audio.attachmentspour traiter plusieurs notes vocales (mode: "all"+maxAttachments). - La transcription est disponible pour les modèles en tant que
{{Transcript}}. tools.media.audio.echoTranscriptest désactivé par défaut ; activez-le pour renvoyer la confirmation de la transcription au chat d’origine avant le traitement par l’agent.tools.media.audio.echoFormatpersonnalise le texte d’écho (espace réservé :{transcript}).- Le stdout CLI est limité (5 Mo) ; gardez la sortie CLI concise.
Prise en charge de l’environnement proxy
Section intitulée « Prise en charge de l’environnement proxy »La transcription audio basée sur des fournisseurs respecte les variables d’environnement de proxy sortant standard :
HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Si aucune variable d’environnement de proxy n’est définie, une sortie directe est utilisée. Si la configuration du proxy est malformée, OpenClaw enregistre un avertissement et revient à une récupération directe.
Détection de mentions dans les groupes
Section intitulée « Détection de mentions dans les groupes »Lorsque requireMention: true est défini pour une conversation de groupe, OpenClaw transcrit désormais l’audio avant de vérifier les mentions. Cela permet de traiter les notes vocales même si elles contiennent des mentions.
Comment cela fonctionne :
- Si un message vocal n’a pas de corps de texte et que le groupe nécessite des mentions, OpenClaw effectue une transcription « préliminaire ».
- La transcription est vérifiée pour les modèles de mention (par exemple,
@BotName, déclencheurs d’emoji). - Si une mention est trouvée, le message passe par le pipeline de réponse complet.
- La transcription est utilisée pour la détection de mentions afin que les notes vocales puissent passer la porte de mention.
Comportement de repli :
- Si la transcription échoue lors de la phase préliminaire (délai d’attente, erreur API, etc.), le message est traité sur la base de la détection de mention par texte uniquement.
- Cela garantit que les messages mixtes (texte + audio) ne sont jamais incorrectement abandonnés.
Désactivation par groupe/sujet Telegram :
- Définissez
channels.telegram.groups.<chatId>.disableAudioPreflight: truepour ignorer les vérifications de mention de la transcription préliminaire 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éliminaire activé lorsque les conditions de porte de mention correspondent).
Exemple : Un utilisateur envoie une note vocale disant « Hey @Claude, quelle est la météo ? » dans un groupe Telegram avec requireMention: true. La note vocale est transcrite, la mention est détectée et l’agent répond.
- Les règles de portée s’appliquent selon la première correspondance trouvée.
chatTypeest normalisé àdirect,groupouroom. - Assurez-vous que votre CLI se ferme avec le code 0 et imprime du texte brut ; le JSON doit être traité via
jq -r .text. - Pour
parakeet-mlx, si vous passez--output-dir, OpenClaw lit<output-dir>/<media-basename>.txtlorsque--output-formatesttxt(ou omis) ; les formats de sortie autres quetxtreviennent à l’analyse de stdout. - Gardez des délais d’expiration raisonnables (
timeoutSeconds, 60 s par défaut) pour éviter de bloquer la file de réponse. - La transcription préliminaire ne traite que la première pièce jointe audio pour la détection des mentions. L’audio supplémentaire est traité lors de la phase principale de compréhension des médias.