Що працює
- Розуміння медіа (аудіо): Якщо розуміння аудіо ввімкнено (або визначено автоматично), OpenClaw:
- Знаходить перше аудіовкладення (локальний шлях або URL) і за потреби завантажує його.
- Застосовує
maxBytesперед надсиланням до кожного запису моделі. - Запускає перший придатний запис моделі за порядком (провайдер або CLI).
- Якщо він завершується помилкою або пропускається (розмір/тайм-аут), пробує наступний запис.
- У разі успіху замінює
Bodyблоком[Audio]і встановлює{{Transcript}}.
- Розбір команд: Коли транскрибування успішне,
CommandBody/RawBodyвстановлюються в транскрипт, тож slash-команди й далі працюють. - Докладне журналювання: У
--verboseми журналюємо, коли виконується транскрибування і коли воно замінює тіло повідомлення.
Автоматичне визначення (типово)
Якщо ви не налаштовуєте моделі іtools.media.audio.enabled не встановлено в false,
OpenClaw автоматично визначає варіанти в такому порядку й зупиняється на першому робочому:
- Активна модель відповіді, якщо її провайдер підтримує розуміння аудіо.
- Локальні CLI (якщо встановлені)
sherpa-onnx-offline(потребуєSHERPA_ONNX_MODEL_DIRз encoder/decoder/joiner/tokens)whisper-cli(зwhisper-cpp; використовуєWHISPER_CPP_MODELабо вбудовану tiny-модель)whisper(Python CLI; завантажує моделі автоматично)
- Автентифікація провайдера
- Спочатку пробуються налаштовані записи
models.providers.*, які підтримують аудіо - Порядок резервних провайдерів: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Спочатку пробуються налаштовані записи
agy).
Щоб вимкнути автоматичне визначення, встановіть tools.media.audio.enabled: false.
Щоб налаштувати вручну, встановіть tools.media.audio.models.
Примітка: Виявлення бінарних файлів виконується за принципом best-effort у macOS/Linux/Windows; переконайтеся, що CLI є в PATH (ми розгортаємо ~), або задайте явну CLI-модель із повним шляхом до команди.
Приклади конфігурації
Провайдер + резервний CLI (OpenAI + Whisper CLI)
Лише провайдер із керуванням за областю дії
Лише провайдер (Deepgram)
Лише провайдер (Mistral Voxtral)
Лише провайдер (SenseAudio)
Відлунювати транскрипт у чат (за явним увімкненням)
Примітки й обмеження
- Автентифікація провайдера дотримується стандартного порядку автентифікації моделей (профілі автентифікації, env vars,
models.providers.*.apiKey). - Деталі налаштування Groq: Groq.
- Deepgram підхоплює
DEEPGRAM_API_KEY, коли використовуєтьсяprovider: "deepgram". - Деталі налаштування Deepgram: Deepgram (транскрибування аудіо).
- Деталі налаштування Mistral: Mistral.
- SenseAudio підхоплює
SENSEAUDIO_API_KEY, коли використовуєтьсяprovider: "senseaudio". - Деталі налаштування SenseAudio: SenseAudio.
- Аудіопровайдери можуть перевизначати
baseUrl,headersіproviderOptionsчерезtools.media.audio. - Типове обмеження розміру становить 20MB (
tools.media.audio.maxBytes). Завелике аудіо пропускається для цієї моделі, і пробується наступний запис. - Крихітні/порожні аудіофайли менші за 1024 байти пропускаються перед провайдерським/CLI-транскрибуванням.
- Типовий
maxCharsдля аудіо не задано (повний транскрипт). Встановітьtools.media.audio.maxCharsабоmaxCharsдля окремого запису, щоб обрізати вивід. - Типове автоматичне значення OpenAI —
gpt-4o-mini-transcribe; встановітьmodel: "gpt-4o-transcribe"для вищої точності. - Використовуйте
tools.media.audio.attachments, щоб обробляти кілька голосових нотаток (mode: "all"+maxAttachments). - Транскрипт доступний шаблонам як
{{Transcript}}. tools.media.audio.echoTranscriptтипово вимкнено; увімкніть його, щоб надсилати підтвердження транскрипту назад до початкового чату перед обробкою агентом.tools.media.audio.echoFormatналаштовує текст відлуння (заповнювач:{transcript}).- stdout CLI обмежено (5MB); тримайте вивід CLI стислим.
- CLI
argsмає використовувати{{MediaPath}}для локального шляху до аудіофайлу. Запустітьopenclaw doctor --fix, щоб мігрувати застарілі заповнювачі{input}зі старіших конфігураційaudio.transcription.command.
Підтримка proxy-середовища
Провайдерське транскрибування аудіо враховує стандартні env vars вихідного proxy:HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Виявлення згадок у групах
Коли для групового чату встановленоrequireMention: true, OpenClaw тепер транскрибує аудіо перед перевіркою згадок. Це дає змогу обробляти голосові нотатки, навіть коли вони містять згадки.
Як це працює:
- Якщо голосове повідомлення не має текстового тіла, а група вимагає згадок, OpenClaw виконує «preflight»-транскрибування.
- Транскрипт перевіряється на патерни згадок (наприклад,
@BotName, emoji-тригери). - Якщо згадку знайдено, повідомлення проходить через повний pipeline відповіді.
- Транскрипт використовується для виявлення згадок, щоб голосові нотатки могли пройти mention gate.
- Якщо транскрибування під час preflight завершується помилкою (тайм-аут, помилка API тощо), повідомлення обробляється на основі виявлення згадок лише в тексті.
- Це гарантує, що змішані повідомлення (текст + аудіо) ніколи не буде помилково відкинуто.
- Встановіть
channels.telegram.groups.<chatId>.disableAudioPreflight: true, щоб пропустити preflight-перевірки згадок у транскрипті для цієї групи. - Встановіть
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight, щоб перевизначити для окремої теми (trueдля пропуску,falseдля примусового ввімкнення). - Типове значення —
false(preflight увімкнено, коли умови mention gate збігаються).
requireMention: true. Голосова нотатка транскрибується, згадка виявляється, і агент відповідає.
Нюанси
- Правила області дії використовують принцип першого збігу.
chatTypeнормалізується доdirect,groupабоroom. - Переконайтеся, що ваш CLI завершується з кодом 0 і друкує звичайний текст; JSON потрібно обробити через
jq -r .text. - Для
parakeet-mlx, якщо ви передаєте--output-dir, OpenClaw читає<output-dir>/<media-basename>.txt, коли--output-formatдорівнюєtxt(або його пропущено); формати виводу неtxtповертаються до розбору stdout. - Тримайте тайм-аути розумними (
timeoutSeconds, типово 60s), щоб не блокувати чергу відповідей. - Preflight-транскрибування обробляє лише перше аудіовкладення для виявлення згадок. Додаткове аудіо обробляється під час основної фази розуміння медіа.