Audio / Notatki głosowe — 2026-01-17¶
Co działa¶
- Rozumienie mediów (audio): Jeśli rozumienie audio jest włączone (lub wykryte automatycznie), OpenClaw:
1. Lokalizuje pierwsze załączone audio (ścieżka lokalna lub URL) i w razie potrzeby pobiera je.
2. Wymusza
maxBytesprzed wysłaniem do każdego wpisu modelu. 3. Uruchamia pierwszy kwalifikujący się wpis modelu w kolejności (dostawca lub CLI). 4. Jeśli się nie powiedzie lub zostanie pominięty (rozmiar/timeout), próbuje następnego wpisu. 5. Po sukcesie zastępujeBodyblokiem[Audio]i ustawia{{Transcript}}. - Parsowanie poleceń: Gdy transkrypcja się powiedzie,
CommandBody/RawBodysą ustawiane na transkrypt, dzięki czemu polecenia slash nadal działają. - Szczegółowe logowanie: W
--verboselogujemy moment uruchomienia transkrypcji oraz zastąpienia treści.
Automatyczne wykrywanie (domyślne)¶
Jeśli nie skonfigurujesz modeli i tools.media.audio.enabled nie jest ustawione na false,
OpenClaw wykrywa automatycznie w tej kolejności i zatrzymuje się na pierwszej działającej opcji:
- Lokalne CLI (jeśli zainstalowane)
-
sherpa-onnx-offline(wymagaSHERPA_ONNX_MODEL_DIRz encoder/decoder/joiner/tokens) -whisper-cli(zwhisper-cpp; używaWHISPER_CPP_MODELlub dołączonego modelu tiny) -whisper(CLI w Pythonie; automatycznie pobiera modele) - Gemini CLI (
gemini) używającread_many_files - Klucze dostawców (OpenAI → Groq → Deepgram → Google)
Aby wyłączyć automatyczne wykrywanie, ustaw tools.media.audio.enabled: false.
Aby dostosować, ustaw tools.media.audio.models.
Uwaga: Wykrywanie binariów jest „best‑effort” na macOS/Linux/Windows; upewnij się, że CLI jest w PATH (rozwijamy ~), lub ustaw jawny model CLI z pełną ścieżką polecenia.
Przykłady konfiguracji¶
Dostawca + zapasowe 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,
},
],
},
},
},
}
Tylko dostawca z bramkowaniem zakresu¶
{
tools: {
media: {
audio: {
enabled: true,
scope: {
default: "allow",
rules: [{ action: "deny", match: { chatType: "group" } }],
},
models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }],
},
},
},
}
Tylko dostawca (Deepgram)¶
{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "deepgram", model: "nova-3" }],
},
},
},
}
Uwagi i limity¶
- Uwierzytelnianie dostawców podąża za standardową kolejnością uwierzytelniania modeli (profile uwierzytelniania, zmienne środowiskowe,
models.providers.*.apiKey). - Deepgram przejmuje
DEEPGRAM_API_KEY, gdy używany jestprovider: "deepgram". - Szczegóły konfiguracji Deepgram: Deepgram (transkrypcja audio).
- Dostawcy audio mogą nadpisywać
baseUrl,headersiproviderOptionspoprzeztools.media.audio. - Domyślny limit rozmiaru to 20 MB (
tools.media.audio.maxBytes). Zbyt duże audio jest pomijane dla danego modelu i próbowany jest następny wpis. - Domyślne
maxCharsdla audio jest nieustawione (pełny transkrypt). Ustawtools.media.audio.maxCharslub per‑wpismaxChars, aby przyciąć wynik. - Domyślne ustawienie OpenAI to
gpt-4o-mini-transcribe; ustawmodel: "gpt-4o-transcribe"dla wyższej dokładności. - Użyj
tools.media.audio.attachmentsdo przetwarzania wielu notatek głosowych (mode: "all"+maxAttachments). - Transkrypt jest dostępny dla szablonów jako
{{Transcript}}. - Stdout CLI jest limitowany (5 MB); utrzymuj zwięzłość wyjścia CLI.
Gotchas¶
- Zasady zakresu działają na zasadzie „pierwsze dopasowanie wygrywa”.
chatTypejest normalizowane dodirect,grouplubroom. - Upewnij się, że Twoje CLI kończy działanie kodem 0 i wypisuje zwykły tekst; JSON wymaga obróbki przez
jq -r .text. - Utrzymuj rozsądne timeouty (
timeoutSeconds, domyślnie 60 s), aby nie blokować kolejki odpowiedzi.