Audio et notes vocales
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 d’envoyer à chaque entrée de model. - Exécute la première entrée de model éligible dans l’ordre (provider ou CLI).
- En cas d’échec ou d’ignorance (taille/timeout), 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 sur la transcription pour que les commandes slash fonctionnent toujours. - Journalisation détaillée : Dans
--verbose, nous consignons le moment où la transcription s’exécute et le moment où elle remplace le corps.
Détection automatique (par défaut)
Section intitulée « Détection automatique (par défaut) »Si vous ne configurez pas de models 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 :
- Model de réponse actif lorsque son provider prend en charge la compréhension audio.
- CLIs locales (si installées)
sherpa-onnx-offline(nécessiteSHERPA_ONNX_MODEL_DIRavec encodeur/décodeur/jointeur/jetons)whisper-cli(depuiswhisper-cpp; utiliseWHISPER_CPP_MODELou le tiny model groupé)whisper(Python CLI ; télécharge les models automatiquement)
- Gemini CLI (
gemini) utilisantread_many_files - Auth provider
- Les entrées
models.providers.*configurées prenant en charge l’audio sont essayées en premier - Ordre de repli groupé : OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Les entrées
Pour désactiver la détection automatique, définissez tools.media.audio.enabled: false.
Pour personnaliser, définissez tools.media.audio.modelsmacOSLinuxWindowsCLI.
Remarque : La détection binaire est effectuée au mieux sur macOS/Linux/Windows ; assurez-vous que le CLI est sur PATH (nous développons ~CLI), ou définissez un model CLI explicite avec un chemin de commande complet.
Exemples de configuration
Section intitulée « Exemples de configuration »Provider + CLI de secours (OpenAI + Whisper CLI)
Section intitulée « Provider + CLI de secours (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 gestion de la portée
Section intitulée « Provider uniquement avec gestion de la portée »{ 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" }], }, }, },}Provider uniquement (SenseAudio)
Section intitulée « Provider uniquement (SenseAudio) »{ tools: { media: { audio: { enabled: true, models: [{ provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319" }], }, }, },}Écho de la transcription vers le chat (optionnel)
Section intitulée « Écho de la transcription vers le chat (optionnel) »{ 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 de model (profils d’authentification, env vars,
models.providers.*.apiKey). - Détails de la configuration de Groq : Groq.
- Deepgram prend Deepgram
DEEPGRAM_API_KEYlorsqueprovider: "deepgram"est utilisé. - Détails de la configuration de Deepgram : Deepgram (transcription audio).
- Détails de la configuration de Mistral : Mistral.
- SenseAudio prend
SENSEAUDIO_API_KEYlorsqueprovider: "senseaudio"est utilisé. - Détails de la configuration de SenseAudio : SenseAudio.
- 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 model 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.
- Le
maxCharspar défaut pour l’audio est non défini (transcription complète). Définisseztools.media.audio.maxCharsou unmaxCharspar entrée pour réduire la sortie. - La valeur par défaut automatique d’OpenAI est OpenAI
gpt-4o-mini-transcribe; définissezmodel: "gpt-4o-transcribe"pour une plus grande précision. - Utilisez
tools.media.audio.attachmentspour traiter plusieurs notes vocales (mode: "all"+maxAttachments). - La transcription est disponible pour les modèles sous la forme
{{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 de la CLI est limité (5 Mo) ; gardez la sortie de la CLI concise.
- La CLI
argsdoit utiliser{{MediaPath}}pour le chemin du fichier audio local. Exécutezopenclaw doctor --fixpour migrer les espaces réservés{input}obsolètes des anciennes configurationsaudio.transcription.command.
Prise en charge de l’environnement proxy
Section intitulée « Prise en charge de l’environnement proxy »La transcription audio basée sur un fournisseur respecte les variables d’environnement de proxy sortant standard :
HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Si aucune variable d’environnement de proxy n’est définie, un accès direct sortant est utilisé. Si la configuration du proxy est malformée, OpenClaw enregistre un avertissement et revient à une récupération directe.
Détection des mentions dans les groupes
Section intitulée « Détection des mentions dans les groupes »Lorsque requireMention: true est défini pour un chat de groupe, OpenClaw transcrit désormais l’audio avant de vérifier les mentions. Cela permet de traiter les notes vocales même lorsqu’elles contiennent des mentions.
Fonctionnement :
- 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 motifs de mention (par exemple,
@BotName, déclencheurs d’emoji). - Si une mention est trouvée, le message passe par le pipeline complet de réponse.
- La transcription est utilisée pour la détection des mentions afin que les notes vocales puissent franchir la barrière des mentions.
Comportement de secours :
- Si la transcription échoue pendant la phase préliminaire (délai d’attente, erreur API, etc.), le message est traité sur la base de la détection de mentions par texte uniquement.
- Cela garantit que les messages mixtes (texte + audio) ne sont jamais incorrectement ignorés.
Désactivation par groupe/sujet Telegram :
- Définissez
channels.telegram.groups.<chatId>.disableAudioPreflight: truepour ignorer les vérifications de mention de 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éparation activée lorsque les conditions de mention correspondantes sont remplies).
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 utilisent le premier correspondant gagne.
chatTypeest normalisé àdirect,groupouroom. - Assurez-vous que votre CLI renvoie 0 et imprime du texte brut ; 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 nontxtreviennent à l’analyse stdout. - Gardez les délais d’attente raisonnables (
timeoutSeconds, par défaut 60 s) pour éviter de bloquer la file de réponse. - La transcription préliminaire traite uniquement la première pièce jointe audio pour la détection de mention. L’audio supplémentaire est traité lors de la phase principale de compréhension des médias.