Audio / notatki głosowe (2026-01-17)
Co działa
- Rozumienie multimediów (audio): jeśli rozumienie audio jest włączone (lub wykrywane automatycznie), OpenClaw:
- Lokalizuje pierwszy załącznik audio (ścieżka lokalna lub URL) i pobiera go w razie potrzeby.
- Egzekwuje
maxBytesprzed wysłaniem do każdego wpisu modelu. - Uruchamia pierwszy kwalifikujący się wpis modelu zgodnie z kolejnością (provider lub CLI).
- Jeśli to się nie powiedzie lub zostanie pominięte (rozmiar/timeout), próbuje następnego wpisu.
- Po sukcesie zastępuje
Bodyblokiem[Audio]i ustawia{{Transcript}}.
- Parsowanie poleceń: gdy transkrypcja zakończy się sukcesem,
CommandBody/RawBodysą ustawiane na transkrypt, dzięki czemu polecenia slash nadal działają. - Szczegółowe logowanie: w
--verboselogujemy moment uruchomienia transkrypcji oraz moment zastąpienia treści.
Automatyczne wykrywanie (domyślne)
Jeśli nie skonfigurujesz modeli, atools.media.audio.enabled nie jest ustawione na false,
OpenClaw automatycznie wykrywa w tej kolejności i zatrzymuje się na pierwszej działającej opcji:
- Aktywny model odpowiedzi, jeśli jego provider obsługuje rozumienie audio.
- Lokalne CLI (jeśli są zainstalowane)
sherpa-onnx-offline(wymagaSHERPA_ONNX_MODEL_DIRz encoder/decoder/joiner/tokens)whisper-cli(zwhisper-cpp; używaWHISPER_CPP_MODELlub dołączonego małego modelu)whisper(Python CLI; automatycznie pobiera modele)
- Gemini CLI (
gemini) używająceread_many_files - Uwierzytelnianie providera
- Najpierw próbowane są skonfigurowane wpisy
models.providers.*obsługujące audio - Wbudowana kolejność fallbacku: OpenAI → Groq → Deepgram → Google → Mistral
- Najpierw próbowane są skonfigurowane wpisy
tools.media.audio.enabled: false.
Aby je dostosować, ustaw tools.media.audio.models.
Uwaga: wykrywanie binarek jest best-effort na macOS/Linux/Windows; upewnij się, że CLI jest w PATH (rozwijamy ~), albo ustaw jawny model CLI z pełną ścieżką polecenia.
Przykłady konfiguracji
Fallback providera + CLI (OpenAI + Whisper CLI)
Tylko provider z gatingiem zakresu
Tylko provider (Deepgram)
Tylko provider (Mistral Voxtral)
Odesłanie transkryptu do czatu (opt-in)
Uwagi i limity
- Uwierzytelnianie providera korzysta ze standardowej kolejności auth modeli (profile uwierzytelniania, zmienne env,
models.providers.*.apiKey). - Szczegóły konfiguracji Groq: Groq.
- Deepgram pobiera
DEEPGRAM_API_KEY, gdy używane jestprovider: "deepgram". - Szczegóły konfiguracji Deepgram: Deepgram (transkrypcja audio).
- Szczegóły konfiguracji Mistral: Mistral.
- Providery audio mogą nadpisywać
baseUrl,headersiproviderOptionsprzeztools.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. - Małe/puste pliki audio poniżej 1024 bajtów są pomijane przed transkrypcją przez providera/CLI.
- Domyślne
maxCharsdla audio jest nieustawione (pełny transkrypt). Ustawtools.media.audio.maxCharslubmaxCharsdla konkretnego wpisu, aby przyciąć wynik. - Domyślnym auto ustawieniem OpenAI jest
gpt-4o-mini-transcribe; ustawmodel: "gpt-4o-transcribe", aby uzyskać większą dokładność. - Użyj
tools.media.audio.attachments, aby przetwarzać wiele notatek głosowych (mode: "all"+maxAttachments). - Transkrypt jest dostępny dla szablonów jako
{{Transcript}}. tools.media.audio.echoTranscriptjest domyślnie wyłączone; włącz je, aby wysyłać potwierdzenie transkryptu z powrotem do czatu źródłowego przed przetwarzaniem przez agenta.tools.media.audio.echoFormatdostosowuje tekst echo (placeholder:{transcript}).stdoutCLI jest ograniczone (5 MB); utrzymuj zwięzłe dane wyjściowe CLI.
Obsługa środowiska proxy
Transkrypcja audio oparta na providerze respektuje standardowe zmienne env dla wychodzącego proxy:HTTPS_PROXYHTTP_PROXYhttps_proxyhttp_proxy
Wykrywanie wzmianek w grupach
Gdy dla czatu grupowego ustawionorequireMention: true, OpenClaw teraz transkrybuje audio przed sprawdzeniem wzmianek. Dzięki temu notatki głosowe mogą być przetwarzane nawet wtedy, gdy zawierają wzmianki.
Jak to działa:
- Jeśli wiadomość głosowa nie ma tekstowej treści, a grupa wymaga wzmianek, OpenClaw wykonuje transkrypcję „preflight”.
- Transkrypt jest sprawdzany pod kątem wzorców wzmianek (na przykład
@BotName, wyzwalaczy emoji). - Jeśli wzmianka zostanie znaleziona, wiadomość przechodzi przez pełny pipeline odpowiedzi.
- Transkrypt jest używany do wykrywania wzmianek, dzięki czemu notatki głosowe mogą przejść przez bramkę wzmianki.
- Jeśli transkrypcja nie powiedzie się podczas preflight (timeout, błąd API itp.), wiadomość jest przetwarzana na podstawie wykrywania wzmianek wyłącznie z tekstu.
- Dzięki temu wiadomości mieszane (tekst + audio) nigdy nie są błędnie odrzucane.
- Ustaw
channels.telegram.groups.<chatId>.disableAudioPreflight: true, aby pominąć kontrolę wzmianki w transkrypcie preflight dla tej grupy. - Ustaw
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight, aby nadpisać to dla konkretnego tematu (true, aby pominąć,false, aby wymusić włączenie). - Domyślna wartość to
false(preflight włączony, gdy warunki gated wzmiankami pasują).
requireMention: true. Notatka głosowa jest transkrybowana, wzmianka zostaje wykryta i agent odpowiada.
Pułapki
- Reguły zakresu używają zasady first-match wins.
chatTypejest normalizowane dodirect,grouplubroom. - Upewnij się, że Twoje CLI kończy się kodem 0 i wypisuje zwykły tekst; JSON trzeba przekształcić, na przykład przez
jq -r .text. - Dla
parakeet-mlx, jeśli przekażesz--output-dir, OpenClaw odczytuje<output-dir>/<media-basename>.txt, gdy--output-formatma wartośćtxt(lub jest pominięte); formaty wyjściowe inne niżtxtwracają do parsowaniastdout. - Utrzymuj rozsądne timeouty (
timeoutSeconds, domyślnie 60 s), aby nie blokować kolejki odpowiedzi. - Transkrypcja preflight przetwarza tylko pierwszy załącznik audio do wykrywania wzmianek. Dodatkowe audio jest przetwarzane podczas głównej fazy rozumienia multimediów.