Аудио / голосовые заметки — 2026-01-17
Что работает
- Понимание медиа (аудио): Если понимание аудио включено (или автоматически обнаружено), OpenClaw:
- Находит первое аудиовложение (локальный путь или URL) и при необходимости загружает его.
- Применяет
maxBytesперед отправкой каждому элементу модели. - Запускает первый подходящий элемент модели по порядку (провайдер или CLI).
- В случае сбоя или пропуска (размер/тайм‑аут) пробует следующий элемент.
- При успехе заменяет
Bodyна блок[Audio]и устанавливает{{Transcript}}.
- Разбор команд: Когда транскрибация успешна,
CommandBody/RawBodyустанавливаются в текст транскрипта, чтобы слеш‑команды продолжали работать. - Подробное логирование: В
--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; автоматически загружает модели)
- Gemini CLI (
gemini) с использованиемread_many_files - Ключи провайдеров (OpenAI → Groq → Deepgram → Google)
tools.media.audio.enabled: false.
Для кастомизации установите tools.media.audio.models.
Примечание: обнаружение бинарников выполняется по принципу best‑effort на macOS/Linux/Windows; убедитесь, что CLI находится в PATH (мы разворачиваем ~), либо задайте явную CLI‑модель с полным путём к команде.
Примеры конфигурации
Провайдер + резервный вариант CLI (OpenAI + Whisper CLI)
Только провайдер с ограничением по области действия
Только провайдер (Deepgram)
Примечания и ограничения
- Аутентификация провайдеров следует стандартному порядку аутентификации моделей (профили аутентификации, переменные окружения,
models.providers.*.apiKey). - Deepgram подхватывает
DEEPGRAM_API_KEY, когда используетсяprovider: "deepgram". - Подробности настройки Deepgram: Deepgram (audio transcription).
- Аудиопровайдеры могут переопределять
baseUrl,headersиproviderOptionsчерезtools.media.audio. - Ограничение размера по умолчанию — 20MB (
tools.media.audio.maxBytes). Слишком большое аудио пропускается для этой модели, и пробуется следующий элемент. - Значение
maxCharsдля аудио по умолчанию не задано (полная транскрипция). Установитеtools.media.audio.maxCharsилиmaxCharsдля отдельного элемента, чтобы обрезать вывод. - Автозначение OpenAI по умолчанию —
gpt-4o-mini-transcribe; установитеmodel: "gpt-4o-transcribe"для более высокой точности. - Используйте
tools.media.audio.attachmentsдля обработки нескольких голосовых заметок (mode: "all"+maxAttachments). - Транскрипт доступен в шаблонах как
{{Transcript}}. - Вывод stdout CLI ограничен (5MB); держите вывод CLI кратким.
Обнаружение упоминаний в группах
Когда для группового чата установленоrequireMention: true, OpenClaw теперь транскрибирует аудио до проверки упоминаний. Это позволяет обрабатывать голосовые сообщения, даже если они содержат упоминания.
Как это работает:
- Если голосовое сообщение не содержит текстовой части и в группе требуются упоминания, OpenClaw выполняет «предварительную» транскрибацию (preflight).
- Транскрипция проверяется на наличие шаблонов упоминаний (например,
@BotName, триггеры-эмодзи). - Если упоминание найдено, сообщение проходит через полный конвейер ответа.
- Транскрипция используется для обнаружения упоминаний, чтобы голосовые сообщения могли пройти проверку на упоминание.
- Если транскрибация завершается ошибкой на этапе preflight (тайм-аут, ошибка API и т. д.), сообщение обрабатывается на основе обнаружения упоминаний только в тексте.
- Это гарантирует, что смешанные сообщения (текст + аудио) никогда не будут ошибочно отклонены.
requireMention: true. Голосовое сообщение транскрибируется, обнаруживается упоминание, и агент отвечает.
Готчас
- Правила областей используют принцип «первое совпадение выигрывает».
chatTypeнормализуется кdirect,groupилиroom. - Убедитесь, что ваш CLI завершает работу с кодом 0 и печатает обычный текст; JSON необходимо привести к нужному виду через
jq -r .text. - Держите тайм‑ауты разумными (
timeoutSeconds, по умолчанию 60с), чтобы не блокировать очередь ответов. - Preflight-транскрибация обрабатывает только первое аудиовложение для обнаружения упоминаний. Дополнительные аудиофайлы обрабатываются на основном этапе анализа медиа.