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:
- Lokalizuje pierwsze załączone audio (ścieżka lokalna lub URL) i w razie potrzeby pobiera je.
- Wymusza
maxBytesprzed wysłaniem do każdego wpisu modelu. - Uruchamia pierwszy kwalifikujący się wpis modelu w kolejności (dostawca lub CLI).
- Jeśli się nie powiedzie lub zostanie pominięty (rozmiar/timeout), próbuje następnego wpisu.
- Po sukcesie zastępuje
Bodyblokiem[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 itools.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)
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)
Tylko dostawca z bramkowaniem zakresu
Tylko dostawca (Deepgram)
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.
Wykrywanie wzmianek w grupach
Gdy w czacie grupowym ustawionorequireMention: true, OpenClaw transkrybuje teraz dźwięk przed sprawdzeniem wzmianek. Pozwala to przetwarzać wiadomości głosowe, nawet jeśli zawierają wzmianki.
Jak to działa:
- Jeśli wiadomość głosowa nie ma treści tekstowej, a grupa wymaga wzmianek, OpenClaw wykonuje transkrypcję „preflight”.
- Transkrypt jest sprawdzany pod kątem wzorców wzmianek (np.
@BotName, wyzwalacze emoji). - Jeśli wykryta zostanie wzmianka, wiadomość przechodzi przez pełny pipeline odpowiedzi.
- Transkrypt jest używany do wykrywania wzmianek, dzięki czemu wiadomości głosowe mogą przejść przez bramkę wzmianek.
- Jeśli transkrypcja nie powiedzie się podczas etapu preflight (timeout, błąd API itp.), wiadomość jest przetwarzana wyłącznie na podstawie wykrywania wzmianek w tekście.
- Zapewnia to, że wiadomości mieszane (tekst + audio) nigdy nie zostaną błędnie odrzucone.
requireMention: true. Wiadomość głosowa jest transkrybowana, wzmianka zostaje wykryta i agent odpowiada.
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. - Transkrypcja preflight przetwarza tylko pierwszy załącznik audio w celu wykrycia wzmianek. Dodatkowe pliki audio są przetwarzane podczas głównej fazy rozumienia mediów.