Nodes and media
Аудіо та голосові нотатки
Що це робить
Коли розуміння аудіо ввімкнено (або виявлено автоматично), OpenClaw:
- Знаходить перше аудіовкладення (локальний шлях або URL) і за потреби завантажує його.
- Застосовує обмеження
maxBytesперед надсиланням до кожного запису моделі. - Послідовно запускає перший придатний запис моделі (провайдер або CLI); якщо запис завершується помилкою або пропускається (через розмір чи перевищення часу очікування), виконується спроба з наступним записом.
- У разі успіху замінює
Bodyблоком[Audio]і встановлює{{Transcript}}.
Після успішної транскрипції CommandBody/RawBody також отримують текст транскрипції, щоб команди з похилою рискою й надалі працювали. З параметром --verbose журнали показують, коли виконується транскрипція та коли вона замінює тіло повідомлення.
Автоматичне виявлення (типово)
Якщо моделі не налаштовано й tools.media.audio.enabled не має значення false, OpenClaw виконує автоматичне виявлення в наведеному нижче порядку та зупиняється на першому працездатному варіанті:
- Активна модель відповіді, якщо її провайдер підтримує розуміння аудіо.
- Налаштована автентифікація провайдера — будь-який запис
models.providers.*із доступною автентифікацією для провайдера, який підтримує транскрипцію аудіо. Цей варіант перевіряється перед локальними CLI, тому налаштований ключ API завжди має пріоритет над локальним виконуваним файлом уPATH. Пріоритет провайдерів, коли налаштовано кілька: Groq, OpenAI, xAI, Deepgram, Google, SenseAudio, ElevenLabs, Mistral. - Локальні CLI (лише якщо не знайдено автентифікацію провайдера). OpenClaw формує впорядкований список резервних варіантів:
whisper-cliперед типовими варіантами для CPU, лише якщо попередній виклик моделі в поточному процесі виявив Metal або CUDAsherpa-onnx-offlineіз типовим провайдером CPU (потребуєSHERPA_ONNX_MODEL_DIRіз файламиtokens.txt,encoder.onnx,decoder.onnxіjoiner.onnx)whisper-cli, якщо збірка лише підтримує Metal/CUDA або вибрану серверну частину ще не було виявленоparakeet-mlxна Apple Silicon (підтримує MLX; використання пристрою залишається невиявленим)whisper(CLI для Python; автоматично завантажує моделі)
Походження встановлення чи посилання є свідченням підтримки можливості, а не її фактичного виконання. Саме собою воно ніколи не переміщує кандидата вище за sherpa для CPU. OpenClaw не завантажує модель під час налаштування чи перевірки стану лише для визначення серверної частини.
Автоматично виявлений whisper.cpp залишає ввімкненими звичайні журнали запуску моделі, щоб OpenClaw міг зафіксувати рядок using … backend від базового компонента. Явно задані записи CLI зберігають налаштовані прапорці виведення.
Автоматичне виявлення Gemini CLI для розуміння медіа замінено резервним варіантом ізольованого CLI Antigravity (agy) для зображень і відео; для аудіо не використовується жодний резервний CLI, окрім наведених вище локальних виконуваних файлів.
Щоб вимкнути автоматичне виявлення, задайте tools.media.audio.enabled: false. Щоб налаштувати його, задайте tools.media.audio.models.
Перевірте локальний вибір без транскрибування аудіо:
openclaw capability audio providersopenclaw doctor --lint --only core/doctor/local-audio-acceleration --severity-min infoІнвентаризація провайдерів окремо повідомляє переможця серед локальних резервних варіантів і глобальний вибір провайдера, а також поля підтримуваної, запитаної та виявленої серверної частини. Після виконання транскрипції /status показує запитану або виявлену серверну частину в рядку медіа. Явні записи CLI у tools.media.audio.models і надалі оминають автоматичний вибір; використовуйте відповідні їхній серверній частині прапорці, як-от --provider=cuda для sherpa або --no-gpu/--device для whisper.cpp.
Приклади конфігурації
Провайдер і резервний CLI (OpenAI + Whisper CLI)
{ tools: { media: { audio: { enabled: true, maxBytes: 20971520, models: [ { provider: "openai", model: "gpt-4o-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-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, // типове значення — false echoFormat: '📝 "{transcript}"', // необов’язково, підтримує {transcript} models: [{ provider: "openai", model: "gpt-4o-transcribe" }], }, }, },}Примітки та обмеження
- Автентифікація провайдера відповідає стандартному порядку автентифікації моделей (профілі автентифікації, змінні середовища,
models.providers.*.apiKey). - Відомості про налаштування Groq: Groq.
- Deepgram використовує
DEEPGRAM_API_KEY, коли заданоprovider: "deepgram". Відомості про налаштування: Deepgram. - Відомості про налаштування Mistral: Mistral.
- SenseAudio використовує
SENSEAUDIO_API_KEY, коли заданоprovider: "senseaudio". Відомості про налаштування: SenseAudio. - Провайдери аудіо можуть перевизначати
baseUrl,headersіproviderOptionsчерезtools.media.audio. - Типове обмеження розміру становить 20 МБ (
tools.media.audio.maxBytes). Завелике аудіо пропускається для цієї моделі, після чого виконується спроба з наступним записом. - Аудіофайли розміром менше ніж 1024 байти пропускаються до транскрипції через провайдера або CLI.
- Типове значення
maxCharsдля аудіо не задано (повна транскрипція). Задайтеtools.media.audio.maxCharsабоmaxCharsдля окремого запису, щоб скоротити результат. - Типова модель автоматичного виявлення OpenAI —
gpt-4o-transcribe; задайтеmodel: "gpt-4o-mini-transcribe"для дешевшого та швидшого варіанта. - Використовуйте
tools.media.audio.attachments, щоб обробляти кілька голосових повідомлень (mode: "all"разом ізmaxAttachments, типове значення — 1). - Транскрипція доступна в шаблонах як
{{Transcript}}. tools.media.audio.echoTranscriptтипово вимкнено; увімкніть цей параметр, щоб до обробки агентом надсилати підтвердження транскрипції назад у початковий чат.tools.media.audio.echoFormatналаштовує текст відтворення (заповнювач:{transcript}; типове значення —📝 "{transcript}").- Обсяг стандартного виведення CLI обмежено 5 МБ; забезпечте стислий результат CLI.
argsCLI мають використовувати{{MediaPath}}для локального шляху до аудіофайлу. Запустітьopenclaw doctor --fix, щоб перенести застарілі заповнювачі{input}зі старіших конфігураційaudio.transcription.command(вилучений ключ:audio.transcription, замінений наtools.media.audio.models).tools.media.concurrencyобмежує кількість завдань обробки медіа; це не планувальник GPU.
Постійно запущене локальне перетворення мовлення на текст
Автоматично виявлене локальне перетворення мовлення на текст і надалі запускає окремий процес для кожного запиту. Наразі OpenClaw не керує постійно запущеним сервером whisper.cpp, оскільки стандартний пакет Homebrew whisper-cpp вимикає цей сервер, а базовий приклад не має налаштованої обмеженої черги допуску. Щоб безпечно ввімкнути керований Plugin життєвий цикл постійно запущеного процесу, потрібен супроводжуваний пакетований обробник із перевіркою справності та запуску, постійним утриманням моделі в пам’яті, обмеженою чергою, скасуванням і часом очікування, роботою лише через local loopback без автентифікації та без резервного переходу до хмарного сервісу.
Підтримка проксі через змінні середовища
Транскрипція аудіо на основі провайдерів враховує стандартні змінні середовища вихідного проксі відповідно до семантики EnvHttpProxyAgent в undici:
HTTPS_PROXY/https_proxyHTTP_PROXY/http_proxyALL_PROXY/all_proxy
Змінні в нижньому регістрі мають пріоритет над змінними у верхньому; записи NO_PROXY/no_proxy (імена хостів, *.suffix або host:port) оминають проксі. Якщо змінні середовища проксі не задано, використовується пряме вихідне з’єднання. Якщо налаштування проксі завершується помилкою (неправильно сформований URL), OpenClaw записує попередження в журнал і повертається до прямого отримання даних.
Виявлення згадок у групах
У каналах, які підтримують попередню обробку аудіо, OpenClaw транскрибує аудіо до перевірки згадок, коли для групового чату задано requireMention: true. Завдяки цьому голосове повідомлення без підпису може пройти перевірку згадки, якщо його транскрипція містить налаштований шаблон згадки. У документації окремих каналів описано транспорти, які натомість потребують введеної текстом згадки.
Як це працює:
- Якщо голосове повідомлення не має текстового тіла, а група вимагає згадок, 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абоchannel. - Переконайтеся, що ваш CLI завершується з кодом 0 і виводить звичайний текст; виведення JSON потрібно обробити за допомогою
jq -r .text. - Відомі режими виведення у файл є визначальними: порожній або відсутній передбачуваний файл транскрипції не створює транскрипції замість резервного використання виведення перебігу роботи CLI.
- Для
parakeet-mlxвикористовуйте--output-format txt(абоall) разом із--output-dirі типовим шаблоном виведення{filename}. Також враховуються змінні середовища базового компонентаPARAKEET_OUTPUT_FORMATіPARAKEET_OUTPUT_TEMPLATE. OpenClaw читає<output-dir>/<media-basename>.txt; типовий форматsrt, інші формати та власні шаблони виведення й надалі використовують стандартне виведення. - Задавайте прийнятний час очікування (
timeoutSeconds, типово 60 с), щоб не блокувати чергу відповідей. - Для виявлення згадок попередня транскрипція обробляє лише перше аудіовкладення. Додаткові аудіовкладення обробляються під час основного етапу розуміння медіа.