Nodes and media
Аудио и голосовые заметки
Что работает
- Понимание медиа (аудио): если понимание аудио включено (или обнаружено автоматически), 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; скачивает модели автоматически)
- Авторизация провайдера
- Сначала пробуются настроенные записи
models.providers.*, поддерживающие аудио - Порядок резервных провайдеров: OpenAI → Groq → xAI → Deepgram → Google → SenseAudio → ElevenLabs → Mistral
- Сначала пробуются настроенные записи
По состоянию на 2026-05-22 автообнаружение Gemini CLI больше не поддерживается для понимания медиа. Google переводит пользователей Gemini CLI на Antigravity CLI; для аудио следует использовать локальную или провайдерскую транскрибацию, а резервный CLI для изображений/видео следует перенести на Antigravity CLI (agy).
Чтобы отключить автообнаружение, задайте tools.media.audio.enabled: false.
Чтобы настроить вручную, задайте tools.media.audio.models.
Примечание: обнаружение бинарных файлов выполняется по мере возможности на macOS/Linux/Windows; убедитесь, что CLI находится в PATH (мы раскрываем ~), или задайте явную CLI-модель с полным путем к команде.
Примеры конфигурации
Провайдер + резервный 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, }, ], }, }, },}Только провайдер с ограничением по области действия
{ tools: { media: { audio: { enabled: true, scope: { default: "allow", rules: [{ action: "deny", match: { chatType: "group" } }], }, models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Только провайдер (Deepgram)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "deepgram", model: "nova-3" }], }, }, },}Только провайдер (Mistral Voxtral)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "mistral", model: "voxtral-mini-latest" }], }, }, },}Только провайдер (SenseAudio)
{ tools: { media: { audio: { enabled: true, models: [{ provider: "senseaudio", model: "senseaudio-asr-pro-1.5-260319" }], }, }, },}Отправка транскрипта в чат (с явным включением)
{ tools: { media: { audio: { enabled: true, echoTranscript: true, // default is false echoFormat: '📝 "{transcript}"', // optional, supports {transcript} models: [{ provider: "openai", model: "gpt-4o-mini-transcribe" }], }, }, },}Примечания и ограничения
- Авторизация провайдера следует стандартному порядку авторизации моделей (профили авторизации, переменные окружения,
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 кратким.
argsCLI должны использовать{{MediaPath}}для локального пути к аудиофайлу. Запуститеopenclaw doctor --fix, чтобы перенести устаревшие заполнители{input}из старых конфигурацийaudio.transcription.command.
Поддержка прокси через окружение
Аудиотранскрибация на основе провайдера учитывает стандартные переменные окружения для исходящего прокси:
HTTPS_PROXYHTTP_PROXYALL_PROXYhttps_proxyhttp_proxyall_proxy
Если переменные окружения прокси не заданы, используется прямое исходящее подключение. Если конфигурация прокси некорректна, OpenClaw логирует предупреждение и возвращается к прямой загрузке.
Обнаружение упоминаний в группах
Когда для группового чата задано requireMention: true, OpenClaw теперь транскрибирует аудио до проверки упоминаний. Это позволяет обрабатывать голосовые заметки, даже когда они содержат упоминания.
Как это работает:
- Если у голосового сообщения нет текстового тела, а группа требует упоминаний, OpenClaw выполняет «предварительную» транскрибацию.
- Транскрипт проверяется на шаблоны упоминаний (например,
@BotName, триггеры-эмодзи). - Если упоминание найдено, сообщение проходит через полный конвейер ответа.
- Транскрипт используется для обнаружения упоминаний, чтобы голосовые заметки могли пройти фильтр упоминаний.
Резервное поведение:
- Если транскрибация завершается ошибкой во время предварительной проверки (тайм-аут, ошибка API и т. д.), сообщение обрабатывается на основе обнаружения упоминаний только в тексте.
- Это гарантирует, что смешанные сообщения (текст + аудио) никогда не будут ошибочно отброшены.
Отключение для группы/темы Telegram:
- Задайте
channels.telegram.groups.<chatId>.disableAudioPreflight: true, чтобы пропустить предварительные проверки упоминаний по транскрипту для этой группы. - Задайте
channels.telegram.groups.<chatId>.topics.<threadId>.disableAudioPreflight, чтобы переопределить для отдельной темы (true— пропустить,false— принудительно включить). - По умолчанию —
false(предварительная проверка включена, когда совпадают условия с фильтром упоминаний).
Пример: пользователь отправляет голосовую заметку со словами «Эй, @Claude, какая погода?» в группе Telegram с 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), чтобы не блокировать очередь ответов. - Предварительная транскрибация обрабатывает только первое аудиовложение для обнаружения упоминаний. Дополнительные аудиофайлы обрабатываются во время основной фазы понимания медиа.