Audio / Spraaknotities — 2026-01-17¶
Wat werkt¶
- Mediaherkenning (audio): Als audioherkenning is ingeschakeld (of automatisch wordt gedetecteerd), doet OpenClaw het volgende:
1. Vindt de eerste audio-bijlage (lokaal pad of URL) en downloadt deze indien nodig.
2. Past
maxBytestoe voordat naar elke modelvermelding wordt verzonden. 3. Voert de eerste geschikte modelvermelding in volgorde uit (provider of CLI). 4. Als dit faalt of wordt overgeslagen (grootte/time-out), wordt de volgende vermelding geprobeerd. 5. Bij succes vervangt hetBodydoor een[Audio]-blok en stelt{{Transcript}}in. - Command parsing: Wanneer transcriptie slaagt, worden
CommandBody/RawBodyingesteld op het transcript zodat slash-opdrachten blijven werken. - Uitgebreide logging: In
--verboseloggen we wanneer transcriptie draait en wanneer deze de body vervangt.
Automatische detectie (standaard)¶
Als je geen modellen configureert en tools.media.audio.enabled niet is ingesteld op false,
detecteert OpenClaw automatisch in deze volgorde en stopt bij de eerste werkende optie:
- Lokale CLI’s (indien geïnstalleerd)
-
sherpa-onnx-offline(vereistSHERPA_ONNX_MODEL_DIRmet encoder/decoder/joiner/tokens) -whisper-cli(vanwhisper-cpp; gebruiktWHISPER_CPP_MODELof het meegeleverde tiny-model) -whisper(Python-CLI; downloadt modellen automatisch) - Gemini CLI (
gemini) metread_many_files - Provider-sleutels (OpenAI → Groq → Deepgram → Google)
Om automatische detectie uit te schakelen, stel tools.media.audio.enabled: false in.
Om te personaliseren, stel tools.media.audio.models in.
Let op: Detectie van binaries is best-effort op macOS/Linux/Windows; zorg dat de CLI op PATH staat (we breiden ~ uit), of stel een expliciet CLI-model in met een volledig opdrachtpad.
Configuratievoorbeelden¶
Provider + CLI-fallback (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,
},
],
},
},
},
}
Alleen provider met scope-gating¶
{
tools: {
media: {
audio: {
enabled: true,
scope: {
default: "allow",
rules: [{ action: "deny", match: { chatType: "group" } }],
},
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
Alleen provider (Deepgram)¶
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}
Notities & limieten¶
- Provider-authenticatie volgt de standaard model-auth-volgorde (auth-profielen, omgevingsvariabelen,
models.providers.*.apiKey). - Deepgram pikt
DEEPGRAM_API_KEYop wanneerprovider: "deepgram"wordt gebruikt. - Details voor Deepgram-installatie: Deepgram (audiotranscriptie).
- Audioproviders kunnen
baseUrl,headersenproviderOptionsoverschrijven viatools.media.audio. - De standaard maximale grootte is 20MB (
tools.media.audio.maxBytes). Te grote audio wordt voor dat model overgeslagen en de volgende vermelding wordt geprobeerd. - Standaard
maxCharsvoor audio is niet ingesteld (volledig transcript). Steltools.media.audio.maxCharsin of per vermeldingmaxCharsom de uitvoer in te korten. - De OpenAI-standaard is
gpt-4o-mini-transcribe; stelmodel: "gpt-4o-transcribe"in voor hogere nauwkeurigheid. - Gebruik
tools.media.audio.attachmentsom meerdere spraaknotities te verwerken (mode: "all"+maxAttachments). - Het transcript is beschikbaar voor templates als
{{Transcript}}. - CLI-stdout is begrensd (5MB); houd CLI-uitvoer beknopt.
Gotcha's¶
- Scoperegels gebruiken first-match-wins.
chatTypewordt genormaliseerd naardirect,groupofroom. - Zorg dat je CLI met exitcode 0 afsluit en platte tekst print; JSON moet worden aangepast via
jq -r .text. - Houd time-outs redelijk (
timeoutSeconds, standaard 60s) om blokkeren van de antwoordwachtrij te voorkomen.