chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 09:20:36 +00:00
parent b7a6405acf
commit 8246384f64
3 changed files with 351 additions and 241 deletions

View File

@ -5,10 +5,10 @@ read_when:
summary: 'Plugin Google Meet: приєднання до явних URL-адрес Meet через Chrome або Twilio з типовими налаштуваннями голосу в реальному часі'
title: Plugin Google Meet
x-i18n:
generated_at: "2026-04-24T08:44:59Z"
generated_at: "2026-04-24T09:19:21Z"
model: gpt-5.4
provider: openai
source_hash: 8d430a1f2d6ee7fc1d997ef388a2e0d2915a6475480343e7060edac799dfc027
source_hash: f1673ac4adc9cf163194a340dd6e451d0e4d28bb62adeb126898298e62106d43
source_path: plugins/google-meet.md
workflow: 15
---
@ -19,36 +19,39 @@ x-i18n:
Plugin є навмисно явним:
- Він приєднується лише за явним URL `https://meet.google.com/...`.
- Він приєднується лише до явного URL `https://meet.google.com/...`.
- Голос `realtime` є режимом за замовчуванням.
- Голос realtime може повертатися до повного агента OpenClaw, коли потрібні глибші
- Голос у реальному часі може повертатися до повного агента OpenClaw, коли потрібні глибші
міркування або інструменти.
- Автентифікація починається з особистого Google OAuth або вже виконаного входу в профіль Chrome.
- Автоматичного оголошення згоди немає.
- Типовий аудіобекенд Chrome — `BlackHole 2ch`.
- Chrome може працювати локально або на підключеному вузлі.
- Twilio приймає номер для дозвону та необов’язкову PIN-код або DTMF-послідовність.
- Типовим аудіобекендом Chrome є `BlackHole 2ch`.
- Chrome може працювати локально або на підключеному вузлі хоста.
- Twilio приймає номер для дозвону та необов’язковий PIN або послідовність DTMF.
- Команда CLI — `googlemeet`; `meet` зарезервовано для ширших
телекомунікаційних робочих процесів агента.
робочих процесів телеконференцій агентів.
## Швидкий старт
Установіть локальні аудіозалежності й переконайтеся, що провайдер realtime може використовувати
OpenAI:
Установіть локальні аудіозалежності та налаштуйте бекенд-провайдера голосу в реальному часі.
OpenAI використовується за замовчуванням; Google Gemini Live також працює з
`realtime.provider: "google"`:
```bash
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
```
`blackhole-2ch` установлює віртуальний аудіопристрій `BlackHole 2ch`. Інсталятор
Homebrew потребує перезавантаження, перш ніж macOS покаже цей пристрій:
Homebrew вимагає перезавантаження, перш ніж macOS зробить пристрій доступним:
```bash
sudo reboot
```
Після перезавантаження перевірте обидва компоненти:
Після перезавантаження перевірте обидві складові:
```bash
system_profiler SPAudioDataType | grep -i BlackHole
@ -92,33 +95,33 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij
```
Chrome приєднується як профіль Chrome, у якому виконано вхід. У Meet виберіть `BlackHole 2ch` для
шляху мікрофона/динаміка, який використовує OpenClaw. Для чистого двобічного аудіо використовуйте
окремі віртуальні пристрої або граф у стилі Loopback; одного пристрою BlackHole
достатньо для першого smoke-тесту, але може виникати луна.
шляху мікрофона/динаміка, який використовує OpenClaw. Для чистого двостороннього аудіо використовуйте
окремі віртуальні пристрої або граф на кшталт Loopback; одного пристрою BlackHole
достатньо для першого димового тесту, але може виникати луна.
### Локальний Gateway + Parallels Chrome
Вам **не** потрібен повний OpenClaw Gateway або ключ API моделі всередині macOS VM
лише для того, щоб Chrome працював у VM. Запустіть Gateway і агента локально, а потім запустіть
вузол-хост у VM. Один раз увімкніть вбудований Plugin у VM, щоб вузол
лише для того, щоб VM володіла Chrome. Запустіть Gateway і агента локально, а потім
запустіть хост вузла у VM. Один раз увімкніть вбудований Plugin у VM, щоб вузол
рекламував команду Chrome:
Що де працює:
Що де запускається:
- Хост Gateway: OpenClaw Gateway, робочий простір агента, ключі моделі/API, realtime
провайдер і конфігурація Plugin Google Meet.
- Parallels macOS VM: CLI/node host OpenClaw, Google Chrome, SoX, BlackHole 2ch
і профіль Chrome із виконаним входом у Google.
- Не потрібно у VM: служба Gateway, конфігурація агента, ключ OpenAI/GPT або налаштування
провайдера моделі.
- Хост Gateway: OpenClaw Gateway, робочий простір агента, ключі моделі/API, провайдер
реального часу та конфігурація Plugin Google Meet.
- Parallels macOS VM: OpenClaw CLI/хост вузла, Google Chrome, SoX, BlackHole 2ch,
і профіль Chrome з виконаним входом у Google.
- Не потрібно у VM: служба Gateway, конфігурація агента, ключ OpenAI/GPT або
налаштування провайдера моделі.
Установіть залежності VM:
Установіть залежності у VM:
```bash
brew install blackhole-2ch sox
```
Перезавантажте VM після встановлення BlackHole, щоб macOS показала `BlackHole 2ch`:
Перезавантажте VM після встановлення BlackHole, щоб macOS зробила `BlackHole 2ch` доступним:
```bash
sudo reboot
@ -137,21 +140,21 @@ command -v rec play
openclaw plugins enable google-meet
```
Запустіть вузол-хост у VM:
Запустіть хост вузла у VM:
```bash
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macos
```
Якщо `<gateway-host>` — це LAN IP і ви не використовуєте TLS, вузол відхиляє
простий WebSocket, якщо ви явно не дозволите це для цієї довіреної приватної мережі:
Якщо `<gateway-host>` — це IP-адреса LAN і ви не використовуєте TLS, вузол відхиляє
незашифрований WebSocket, якщо ви явно не дозволите це для цієї довіреної приватної мережі:
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
```
Використовуйте ту саму змінну середовища під час встановлення вузла як LaunchAgent:
Використовуйте ту саму змінну середовища, коли встановлюєте вузол як LaunchAgent:
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
@ -163,7 +166,7 @@ openclaw node restart
параметр `openclaw.json`. `openclaw node install` зберігає його в середовищі LaunchAgent,
коли він присутній у команді встановлення.
Схваліть вузол із хоста Gateway:
Схваліть вузол з хоста Gateway:
```bash
openclaw devices list
@ -201,7 +204,7 @@ openclaw nodes status
}
```
Тепер приєднуйтеся як зазвичай із хоста Gateway:
Тепер приєднуйтеся як зазвичай з хоста Gateway:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij
@ -209,11 +212,11 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij
або попросіть агента використати інструмент `google_meet` з `transport: "chrome-node"`.
Якщо `chromeNode.node` не вказано, OpenClaw автоматично вибирає вузол лише тоді, коли рівно один
підключений вузол рекламує `googlemeet.chrome`. Якщо підключено кілька
придатних вузлів, установіть `chromeNode.node` на id вузла, видиме ім’я або віддалену IP-адресу.
Якщо `chromeNode.node` пропущено, OpenClaw виконує автоматичний вибір лише тоді, коли рівно один
підключений вузол рекламує `googlemeet.chrome`. Якщо підключено кілька придатних вузлів,
установіть `chromeNode.node` на id вузла, відображуване ім’я або віддалену IP-адресу.
Типові перевірки збоїв:
Поширені перевірки збоїв:
- `No connected Google Meet-capable node`: запустіть `openclaw node run` у VM,
схваліть сполучення та переконайтеся, що `openclaw plugins enable google-meet` було виконано
@ -221,26 +224,26 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij
`gateway.nodes.allowCommands: ["googlemeet.chrome"]`.
- `BlackHole 2ch audio device not found on the node`: установіть `blackhole-2ch`
у VM і перезавантажте VM.
- Chrome відкривається, але не може приєднатися: виконайте вхід у Chrome всередині VM і підтвердьте, що
цей профіль може приєднатися до URL Meet вручну.
- Немає аудіо: у Meet направте мікрофон/динамік через шлях віртуального аудіопристрою,
який використовує OpenClaw; використовуйте окремі віртуальні пристрої або маршрутизацію у стилі Loopback
для чистого двобічного аудіо.
- Chrome відкривається, але не може приєднатися: увійдіть у Chrome всередині VM і підтвердьте, що цей
профіль може вручну приєднатися до URL Meet.
- Немає аудіо: у Meet спрямуйте мікрофон/динамік через шлях віртуального аудіопристрою,
який використовує OpenClaw; для чистого двостороннього аудіо використовуйте окремі віртуальні пристрої або маршрутизацію
на кшталт Loopback.
## Примітки щодо встановлення
Типовий шлях Chrome realtime використовує два зовнішні інструменти:
Типовий режим Chrome у реальному часі використовує два зовнішні інструменти:
- `sox`: утиліта командного рядка для роботи з аудіо. Plugin використовує її команди `rec` і `play`
для типового аудіомоста 8 кГц G.711 mu-law.
- `blackhole-2ch`: віртуальний аудіодрайвер macOS. Він створює аудіопристрій `BlackHole 2ch`,
для типового аудіомоста 8 kHz G.711 mu-law.
- `blackhole-2ch`: віртуальний аудіодрайвер для macOS. Він створює аудіопристрій `BlackHole 2ch`,
через який Chrome/Meet може маршрутизувати аудіо.
OpenClaw не постачає і не розповсюджує жоден із цих пакетів. Документація просить користувачів
установлювати їх як залежності хоста через Homebrew. SoX ліцензовано як
`LGPL-2.0-only AND GPL-2.0-only`; BlackHole — за GPL-3.0. Якщо ви збираєте
інсталятор або appliance, що постачає BlackHole разом з OpenClaw, перегляньте умови
ліцензування BlackHole у першоджерелі або отримайте окрему ліцензію від Existential Audio.
OpenClaw не постачає і не розповсюджує жоден із цих пакетів. У документації користувачам пропонується
встановлювати їх як залежності хоста через Homebrew. SoX ліцензовано як
`LGPL-2.0-only AND GPL-2.0-only`; BlackHole — GPL-3.0. Якщо ви збираєте
інсталятор або пристрій, який постачає BlackHole разом з OpenClaw, перегляньте
висхідні умови ліцензування BlackHole або отримайте окрему ліцензію від Existential Audio.
## Транспорти
@ -248,7 +251,7 @@ OpenClaw не постачає і не розповсюджує жоден із
Транспорт Chrome відкриває URL Meet у Google Chrome і приєднується як профіль Chrome, у якому виконано вхід.
У macOS Plugin перед запуском перевіряє наявність `BlackHole 2ch`.
Якщо це налаштовано, він також запускає команду перевірки стану аудіомоста та команду запуску
Якщо налаштовано, він також запускає команду перевірки стану аудіомоста та команду запуску
перед відкриттям Chrome. Використовуйте `chrome`, коли Chrome/аудіо працюють на хості Gateway;
використовуйте `chrome-node`, коли Chrome/аудіо працюють на підключеному вузлі, наприклад у Parallels
macOS VM.
@ -258,14 +261,14 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome
openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-node
```
Спрямуйте аудіо мікрофона та динаміка Chrome через локальний аудіоміст OpenClaw.
Якщо `BlackHole 2ch` не встановлено, приєднання завершується помилкою налаштування,
а не тихим приєднанням без аудіошляху.
Спрямуйте аудіо мікрофона й динаміка Chrome через локальний аудіоміст OpenClaw.
Якщо `BlackHole 2ch` не встановлено, приєднання завершується помилкою налаштування
замість тихого приєднання без аудіошляху.
### Twilio
Транспорт Twilio — це суворий план дозвону, делегований Plugin Voice Call. Він
не аналізує сторінки Meet у пошуку телефонних номерів.
Транспорт Twilio — це строгий план набору, делегований Plugin Voice Call. Він
не аналізує сторінки Meet для пошуку телефонних номерів.
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
@ -285,8 +288,8 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
## OAuth і попередня перевірка
Доступ Google Meet Media API спочатку використовує особистий OAuth client. Налаштуйте
`oauth.clientId` і, за бажанням, `oauth.clientSecret`, а потім виконайте:
Доступ до Google Meet Media API спочатку використовує особистий клієнт OAuth. Налаштуйте
`oauth.clientId` і, за потреби, `oauth.clientSecret`, а потім виконайте:
```bash
openclaw googlemeet auth login --json
@ -296,7 +299,7 @@ openclaw googlemeet auth login --json
локальний callback на `http://localhost:8085/oauth2callback` і ручний
потік копіювання/вставлення з `--manual`.
Ці змінні середовища підтримуються як резервні варіанти:
Ці змінні середовища приймаються як резервні варіанти:
- `OPENCLAW_GOOGLE_MEET_CLIENT_ID` або `GOOGLE_MEET_CLIENT_ID`
- `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET` або `GOOGLE_MEET_CLIENT_SECRET`
@ -307,30 +310,33 @@ openclaw googlemeet auth login --json
- `OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING` або `GOOGLE_MEET_DEFAULT_MEETING`
- `OPENCLAW_GOOGLE_MEET_PREVIEW_ACK` або `GOOGLE_MEET_PREVIEW_ACK`
Розв’яжіть URL Meet, код або `spaces/{id}` через `spaces.get`:
Визначте URL Meet, код або `spaces/{id}` через `spaces.get`:
```bash
openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
```
Запустіть попередню перевірку перед роботою з медіа:
Перед роботою з медіа виконайте попередню перевірку:
```bash
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij
```
Установлюйте `preview.enrollmentAcknowledged: true` лише після підтвердження, що ваш Cloud
project, OAuth principal і учасники зустрічі зареєстровані в Google
Workspace Developer Preview Program для Meet media APIs.
Установлюйте `preview.enrollmentAcknowledged: true` лише після підтвердження, що ваш проєкт Cloud,
принципал OAuth і учасники зустрічі зареєстровані в Google
Workspace Developer Preview Program для медіа API Meet.
## Конфігурація
Поширеному шляху Chrome realtime потрібні лише ввімкнений Plugin, BlackHole, SoX
і ключ OpenAI:
Поширений шлях Chrome у реальному часі потребує лише ввімкненого Plugin, BlackHole, SoX
і ключа бекенд-провайдера голосу в реальному часі. OpenAI використовується за замовчуванням; установіть
`realtime.provider: "google"`, щоб використовувати Google Gemini Live:
```bash
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
```
Установіть конфігурацію Plugin у `plugins.entries.google-meet.config`:
@ -352,18 +358,18 @@ export OPENAI_API_KEY=sk-...
- `defaultTransport: "chrome"`
- `defaultMode: "realtime"`
- `chromeNode.node`: необов’язковий id/ім’я/IP вузла для `chrome-node`
- `chromeNode.node`: необов’язкові id/ім’я/IP вузла для `chrome-node`
- `chrome.audioBackend: "blackhole-2ch"`
- `chrome.audioInputCommand`: команда SoX `rec`, що записує аудіо 8 кГц G.711 mu-law
у stdout
- `chrome.audioOutputCommand`: команда SoX `play`, що читає аудіо 8 кГц G.711 mu-law
зі stdin
- `chrome.audioInputCommand`: команда SoX `rec`, що записує аудіо
8 kHz G.711 mu-law у stdout
- `chrome.audioOutputCommand`: команда SoX `play`, що читає аудіо
8 kHz G.711 mu-law із stdin
- `realtime.provider: "openai"`
- `realtime.toolPolicy: "safe-read-only"`
- `realtime.instructions`: короткі усні відповіді, з
`openclaw_agent_consult` для глибших відповідей
- `realtime.introMessage`: коротка усна перевірка готовності, коли realtime-міст
підключається; установіть `""`, щоб приєднуватися беззвучно
- `realtime.introMessage`: коротка усна перевірка готовності, коли міст реального часу
підключається; установіть `""`, щоб приєднатися беззвучно
Необов’язкові перевизначення:
@ -379,8 +385,15 @@ export OPENAI_API_KEY=sk-...
node: "parallels-macos",
},
realtime: {
provider: "google",
toolPolicy: "owner",
introMessage: "Say exactly: I'm here.",
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
}
```
@ -415,12 +428,12 @@ export OPENAI_API_KEY=sk-...
Використовуйте `transport: "chrome"`, коли Chrome працює на хості Gateway. Використовуйте
`transport: "chrome-node"`, коли Chrome працює на підключеному вузлі, наприклад у Parallels
VM. В обох випадках модель realtime і `openclaw_agent_consult` працюють на
VM. В обох випадках модель реального часу та `openclaw_agent_consult` працюють на
хості Gateway, тому облікові дані моделі залишаються там.
Використовуйте `action: "status"`, щоб перелічити активні сесії або перевірити ID сесії. Використовуйте
`action: "speak"` із `sessionId` і `message`, щоб змусити агента realtime
говорити негайно. Використовуйте `action: "leave"`, щоб позначити сесію як завершену.
`action: "speak"` із `sessionId` і `message`, щоб агент реального часу
одразу заговорив. Використовуйте `action: "leave"`, щоб позначити сесію завершеною.
```json
{
@ -430,28 +443,28 @@ VM. В обох випадках модель realtime і `openclaw_agent_consul
}
```
## Консультація агента realtime
## Консультація агента в реальному часі
Режим Chrome realtime оптимізований для живого голосового циклу. Провайдер голосу realtime
чує аудіо зустрічі та говорить через налаштований аудіоміст.
Коли моделі realtime потрібні глибші міркування, актуальна інформація або звичайні
Режим Chrome у реальному часі оптимізовано для живого голосового циклу. Провайдер голосу
в реальному часі чує аудіо зустрічі й говорить через налаштований аудіоміст.
Коли моделі реального часу потрібні глибші міркування, актуальна інформація або звичайні
інструменти OpenClaw, вона може викликати `openclaw_agent_consult`.
Інструмент consult непомітно запускає звичайного агента OpenClaw з контекстом
нещодавньої стенограми зустрічі й повертає стислу усну відповідь до голосової
сесії realtime. Потім голосова модель може озвучити цю відповідь назад у зустрічі.
Інструмент consult запускає звичайного агента OpenClaw у фоновому режимі з контекстом
недавньої стенограми зустрічі та повертає стислу усну відповідь до голосової сесії
реального часу. Потім голосова модель може озвучити цю відповідь назад у зустріч.
`realtime.toolPolicy` керує запуском consult:
- `safe-read-only`: показувати інструмент consult і обмежувати звичайного агента
- `safe-read-only`: надавати інструмент consult і обмежувати звичайного агента
інструментами `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і
`memory_get`.
- `owner`: показувати інструмент consult і дозволяти звичайному агенту використовувати
стандартну політику інструментів агента.
- `none`: не показувати інструмент consult моделі голосу realtime.
- `owner`: надавати інструмент consult і дозволяти звичайному агенту використовувати
звичайну політику інструментів агента.
- `none`: не надавати інструмент consult голосовій моделі реального часу.
Ключ сесії consult має область дії на рівні окремої сесії Meet, тому наступні виклики consult
можуть повторно використовувати попередній контекст consult під час тієї самої зустрічі.
Ключ сесії consult обмежено однією сесією Meet, тому подальші виклики consult
можуть повторно використовувати попередній контекст consult протягом тієї самої зустрічі.
Щоб примусово виконати усну перевірку готовності після того, як Chrome повністю приєднався до дзвінка:
@ -461,29 +474,29 @@ openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
## Примітки
Офіційний media API Google Meet орієнтований на отримання, тому для мовлення в дзвінок Meet
усе ще потрібен шлях учасника. Цей plugin зберігає цю межу видимою:
Chrome обробляє участь через браузер і локальну маршрутизацію аудіо; Twilio обробляє
Офіційний медіа API Google Meet орієнтований на отримання, тому для мовлення в дзвінок
Meet усе ще потрібен шлях участі учасника. Цей Plugin зберігає цю межу видимою:
Chrome відповідає за участь через браузер і локальну маршрутизацію аудіо; Twilio відповідає за
участь через телефонний дозвін.
Режиму Chrome realtime потрібне одне з такого:
Для режиму Chrome у реальному часі потрібно одне з такого:
- `chrome.audioInputCommand` плюс `chrome.audioOutputCommand`: OpenClaw керує
мостом моделі realtime і передає аудіо 8 кГц G.711 mu-law між цими
командами та вибраним провайдером голосу realtime.
мостом моделі реального часу й передає аудіо 8 kHz G.711 mu-law між цими
командами та вибраним провайдером голосу реального часу.
- `chrome.audioBridgeCommand`: зовнішня команда моста керує всім локальним
аудіошляхом і має завершитися після запуску або перевірки свого демона.
Для чистого двобічного аудіо маршрутизуйте вихід Meet і мікрофон Meet через окремі
віртуальні пристрої або граф віртуальних пристроїв у стилі Loopback. Один спільний
Для чистого двостороннього аудіо спрямовуйте вихід Meet і мікрофон Meet через окремі
віртуальні пристрої або граф віртуальних пристроїв на кшталт Loopback. Один спільний
пристрій BlackHole може повертати голоси інших учасників назад у дзвінок.
`googlemeet speak` запускає активний аудіоміст realtime для сесії
`googlemeet speak` запускає активний аудіоміст реального часу для сесії
Chrome. `googlemeet leave` зупиняє цей міст. Для сесій Twilio, делегованих
через Plugin Voice Call, `leave` також завершує базовий голосовий дзвінок.
через Plugin Voice Call, `leave` також завершує пов’язаний голосовий дзвінок.
## Пов’язане
- [Plugin Voice call](/uk/plugins/voice-call)
- [Режим talk](/uk/nodes/talk)
- [Створення плагінів](/uk/plugins/building-plugins)
- [Створення Plugin](/uk/plugins/building-plugins)

View File

@ -2,13 +2,13 @@
read_when:
- Ви хочете здійснити вихідний голосовий дзвінок з OpenClaw
- Ви налаштовуєте або розробляєте плагін voice-call
summary: 'Плагін Voice Call: вихідні + вхідні дзвінки через Twilio/Telnyx/Plivo (встановлення плагіна + налаштування + CLI)'
summary: 'Плагін Voice Call: вихідні + вхідні дзвінки через Twilio/Telnyx/Plivo (встановлення плагіна + конфігурація + CLI)'
title: Плагін Voice call
x-i18n:
generated_at: "2026-04-24T00:54:17Z"
generated_at: "2026-04-24T09:19:22Z"
model: gpt-5.4
provider: openai
source_hash: 4cd57118133506c22604ab9592a823546a91795ab425de4b7a81edbbb8374e6d
source_hash: 6aed4e33ce090c86f43c71280f033e446f335c53d42456fdc93c9938250e9af6
source_path: plugins/voice-call.md
workflow: 15
---
@ -16,27 +16,27 @@ x-i18n:
# Voice Call (плагін)
Голосові дзвінки для OpenClaw через плагін. Підтримує вихідні сповіщення та
багатоходові розмови з політиками вхідних викликів.
багатоходові розмови з політиками для вхідних викликів.
Поточні провайдери:
- `twilio` (Programmable Voice + Media Streams)
- `telnyx` (Call Control v2)
- `plivo` (Voice API + XML transfer + GetInput speech)
- `mock` (розробка/без мережі)
- `mock` (dev/без мережі)
Швидка ментальна модель:
Коротка ментальна модель:
- Встановіть плагін
- Перезапустіть Gateway
- Налаштуйте в `plugins.entries.voice-call.config`
- Використовуйте `openclaw voicecall ...` або інструмент `voice_call`
## Де він працює (локально чи віддалено)
## Де це працює (локально чи віддалено)
Плагін Voice Call працює **всередині процесу Gateway**.
Якщо ви використовуєте віддалений Gateway, встановіть/налаштуйте плагін на **машині, де працює Gateway**, а потім перезапустіть Gateway, щоб завантажити його.
Якщо ви використовуєте віддалений Gateway, встановіть/налаштуйте плагін на **машині, де запущено Gateway**, а потім перезапустіть Gateway, щоб завантажити його.
## Встановлення
@ -48,7 +48,7 @@ openclaw plugins install @openclaw/voice-call
Після цього перезапустіть Gateway.
### Варіант B: встановлення з локальної папки (розробка, без копіювання)
### Варіант B: встановлення з локальної папки (dev, без копіювання)
```bash
PLUGIN_SRC=./path/to/local/voice-call-plugin
@ -58,7 +58,7 @@ cd "$PLUGIN_SRC" && pnpm install
Після цього перезапустіть Gateway.
## Налаштування
## Конфігурація
Задайте конфігурацію в `plugins.entries.voice-call.config`:
@ -81,7 +81,7 @@ cd "$PLUGIN_SRC" && pnpm install
telnyx: {
apiKey: "...",
connectionId: "...",
// Публічний ключ webhook Telnyx з Telnyx Mission Control Portal
// Публічний ключ Webhook Telnyx з Telnyx Mission Control Portal
// (рядок Base64; також можна задати через TELNYX_PUBLIC_KEY).
publicKey: "...",
},
@ -103,7 +103,7 @@ cd "$PLUGIN_SRC" && pnpm install
trustedProxyIPs: ["100.64.0.1"],
},
// Публічна експозиція (оберіть один варіант)
// Публічна експозиція (виберіть один варіант)
// publicUrl: "https://example.ngrok.app/voice/webhook",
// tunnel: { provider: "ngrok" },
// tailscale: { mode: "funnel", path: "/voice/webhook" }
@ -114,7 +114,7 @@ cd "$PLUGIN_SRC" && pnpm install
streaming: {
enabled: true,
provider: "openai", // необов’язково; якщо не задано, використовується перший зареєстрований провайдер транскрипції в реальному часі
provider: "openai", // необов’язково; якщо не вказано, використовується перший зареєстрований провайдер транскрипції в реальному часі
streamPath: "/voice/stream",
providers: {
openai: {
@ -129,6 +129,17 @@ cd "$PLUGIN_SRC" && pnpm install
maxPendingConnectionsPerIp: 4,
maxConnections: 128,
},
realtime: {
enabled: false,
provider: "google", // необов’язково; якщо не вказано, використовується перший зареєстрований голосовий провайдер у реальному часі
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
},
},
},
@ -138,48 +149,132 @@ cd "$PLUGIN_SRC" && pnpm install
Примітки:
- Twilio/Telnyx потребують **публічно доступного** URL Webhook.
- Plivo потребує **публічно доступного** URL Webhook.
- `mock` — це локальний провайдер для розробки (без мережевих викликів).
- Якщо старіші конфігурації все ще використовують `provider: "log"`, `twilio.from` або застарілі ключі OpenAI `streaming.*`, запустіть `openclaw doctor --fix`, щоб переписати їх.
- Telnyx потребує `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо тільки `skipSignatureVerification` не має значення true.
- `skipSignatureVerification` призначено лише для локального тестування.
- Якщо ви використовуєте безкоштовний тариф ngrok, задайте `publicUrl` точно як URL ngrok; перевірка підпису завжди примусово виконується.
- Twilio/Telnyx вимагають **публічно доступний** URL Webhook.
- Plivo вимагає **публічно доступний** URL Webhook.
- `mock` — це локальний dev-провайдер (без мережевих викликів).
- Якщо старі конфігурації досі використовують `provider: "log"`, `twilio.from` або застарілі ключі `streaming.*` для OpenAI, виконайте `openclaw doctor --fix`, щоб переписати їх.
- Для Telnyx потрібен `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо тільки `skipSignatureVerification` не має значення true.
- `skipSignatureVerification` призначений лише для локального тестування.
- Якщо ви використовуєте безкоштовний рівень ngrok, задайте `publicUrl` як точний URL ngrok; перевірка підпису завжди примусово увімкнена.
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` дозволяє Webhook-и Twilio з невалідними підписами **лише** коли `tunnel.provider="ngrok"` і `serve.bind` є loopback (локальний агент ngrok). Використовуйте лише для локальної розробки.
- URL-и безкоштовного тарифу ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` зміниться, підписи Twilio не проходитимуть перевірку. Для продакшну віддавайте перевагу стабільному домену або воронці Tailscale.
- Типові параметри безпеки Streaming:
- `streaming.preStartTimeoutMs` закриває сокети, які ніколи не надсилають валідний кадр `start`.
- URL-адреси безкоштовного рівня Ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` зміниться, підписи Twilio не пройдуть перевірку. Для production віддавайте перевагу стабільному домену або Tailscale funnel.
- `realtime.enabled` запускає повноцінні голосові розмови голос-до-голосу; не вмикайте його разом із `streaming.enabled`.
- Типові параметри безпеки streaming:
- `streaming.preStartTimeoutMs` закриває сокети, які так і не надсилають валідний кадр `start`.
- `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів до старту.
- `streaming.maxPendingConnectionsPerIp` обмежує неавтентифіковані сокети до старту на одну вихідну IP-адресу.
- `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікуваних + активних).
- Резервний механізм під час виконання поки що все ще приймає ці старі ключі voice-call, але шлях переписування — це `openclaw doctor --fix`, а shim сумісності є тимчасовим.
- `streaming.maxPendingConnectionsPerIp` обмежує кількість неавтентифікованих сокетів до старту з однієї IP-адреси джерела.
- `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікувальні + активні).
- Під час виконання fallback наразі все ще приймає ці старі ключі voice-call, але шлях переписування — це `openclaw doctor --fix`, а шар сумісності є тимчасовим.
## Streaming transcription
## Голосові розмови в реальному часі
`streaming` вибирає провайдера транскрипції в реальному часі для аудіо викликів наживо.
`realtime` вибирає повнодуплексного голосового провайдера в реальному часі для аудіо живого дзвінка.
Він відокремлений від `streaming`, який лише пересилає аудіо провайдерам
транскрипції в реальному часі.
Поточна поведінка під час виконання:
- `streaming.provider` є необов’язковим. Якщо не задано, Voice Call використовує
першого зареєстрованого провайдера транскрипції в реальному часі.
- До вбудованих провайдерів транскрипції в реальному часі входять Deepgram (`deepgram`),
ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) та xAI
(`xai`), які реєструються їхніми плагінами провайдерів.
- Необроблена конфігурація, якою володіє провайдер, розміщується в `streaming.providers.<providerId>`.
- Якщо `streaming.provider` вказує на незареєстрованого провайдера, або якщо взагалі не зареєстровано жодного
провайдера транскрипції в реальному часі, Voice Call записує попередження в журнал і
пропускає медіа-Streaming замість того, щоб зірвати роботу всього плагіна.
- `realtime.enabled` підтримується для Twilio Media Streams.
- `realtime.enabled` не можна поєднувати з `streaming.enabled`.
- `realtime.provider` є необов’язковим. Якщо не вказано, Voice Call використовує першого
зареєстрованого голосового провайдера в реальному часі.
- Вбудовані голосові провайдери в реальному часі включають Google Gemini Live (`google`) та
OpenAI (`openai`), зареєстровані їхніми плагінами провайдерів.
- Сирий конфіг, що належить провайдеру, розташовано в `realtime.providers.<providerId>`.
- Якщо `realtime.provider` вказує на незареєстрованого провайдера або якщо жодного голосового
провайдера в реальному часі взагалі не зареєстровано, Voice Call записує попередження в лог і пропускає
медіа в реальному часі замість того, щоб ламати весь плагін.
Типові параметри транскрипції Streaming OpenAI:
Типові значення Google Gemini Live realtime:
- Ключ API: `streaming.providers.openai.apiKey` або `OPENAI_API_KEY`
- API key: `realtime.providers.google.apiKey`, `GEMINI_API_KEY` або
`GOOGLE_GENERATIVE_AI_API_KEY`
- model: `gemini-2.5-flash-native-audio-preview-12-2025`
- voice: `Kore`
Приклад:
```json5
{
plugins: {
entries: {
"voice-call": {
config: {
provider: "twilio",
inboundPolicy: "allowlist",
allowFrom: ["+15550005678"],
realtime: {
enabled: true,
provider: "google",
instructions: "Говоріть коротко й запитуйте перед використанням інструментів.",
providers: {
google: {
apiKey: "${GEMINI_API_KEY}",
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
},
},
},
},
}
```
Використовуйте OpenAI натомість:
```json5
{
plugins: {
entries: {
"voice-call": {
config: {
realtime: {
enabled: true,
provider: "openai",
providers: {
openai: {
apiKey: "${OPENAI_API_KEY}",
},
},
},
},
},
},
},
}
```
Див. [провайдер Google](/uk/providers/google) і [провайдер OpenAI](/uk/providers/openai)
для параметрів голосу в реальному часі, специфічних для провайдера.
## Streaming транскрипції
`streaming` вибирає провайдера транскрипції в реальному часі для аудіо живого дзвінка.
Поточна поведінка під час виконання:
- `streaming.provider` є необов’язковим. Якщо не вказано, Voice Call використовує першого
зареєстрованого провайдера транскрипції в реальному часі.
- Вбудовані провайдери транскрипції в реальному часі включають Deepgram (`deepgram`),
ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) і xAI
(`xai`), зареєстровані їхніми плагінами провайдерів.
- Сирий конфіг, що належить провайдеру, розташовано в `streaming.providers.<providerId>`.
- Якщо `streaming.provider` вказує на незареєстрованого провайдера або якщо жодного провайдера
транскрипції в реальному часі взагалі не зареєстровано, Voice Call записує попередження в лог і
пропускає streaming медіа замість того, щоб ламати весь плагін.
Типові значення транскрипції streaming OpenAI:
- API key: `streaming.providers.openai.apiKey` або `OPENAI_API_KEY`
- model: `gpt-4o-transcribe`
- `silenceDurationMs`: `800`
- `vadThreshold`: `0.5`
Типові параметри транскрипції Streaming xAI:
Типові значення транскрипції streaming xAI:
- Ключ API: `streaming.providers.xai.apiKey` або `XAI_API_KEY`
- API key: `streaming.providers.xai.apiKey` або `XAI_API_KEY`
- endpoint: `wss://api.x.ai/v1/stt`
- `encoding`: `mulaw`
- `sampleRate`: `8000`
@ -214,7 +309,7 @@ cd "$PLUGIN_SRC" && pnpm install
}
```
Натомість використовуйте xAI:
Використовуйте xAI натомість:
```json5
{
@ -249,17 +344,17 @@ cd "$PLUGIN_SRC" && pnpm install
- `streaming.silenceDurationMs``streaming.providers.openai.silenceDurationMs`
- `streaming.vadThreshold``streaming.providers.openai.vadThreshold`
## Очищення застарілих викликів
## Очищувач застарілих викликів
Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують фінальний webhook
Використовуйте `staleCallReaperSeconds`, щоб завершувати виклики, які ніколи не отримують фінального Webhook
(наприклад, виклики в режимі notify, які ніколи не завершуються). Типове значення — `0`
(вимкнено).
Рекомендовані діапазони:
- **Продакшн:** `120``300` секунд для потоків у стилі notify.
- **Production:** `120``300` секунд для потоків у стилі notify.
- Тримайте це значення **вищим за `maxDurationSeconds`**, щоб звичайні виклики могли
завершитися. Хороша початкова точка — `maxDurationSeconds + 3060` секунд.
завершитися. Гарна стартова точка — `maxDurationSeconds + 3060` секунд.
Приклад:
@ -281,27 +376,27 @@ cd "$PLUGIN_SRC" && pnpm install
## Безпека Webhook
Коли перед Gateway стоїть проксі або тунель, плагін реконструює
публічний URL для перевірки підпису. Ці параметри визначають, яким
переспрямованим заголовкам довіряти.
публічний URL для перевірки підпису. Ці параметри керують тим, яким forwarded
заголовкам довіряти.
`webhookSecurity.allowedHosts` формує allowlist хостів із заголовків переспрямування.
`webhookSecurity.allowedHosts` задає allowlist хостів із forwarding-заголовків.
`webhookSecurity.trustForwardingHeaders` довіряє переспрямованим заголовкам без allowlist.
`webhookSecurity.trustForwardingHeaders` довіряє forwarded-заголовкам без allowlist.
`webhookSecurity.trustedProxyIPs` довіряє переспрямованим заголовкам лише тоді, коли
`webhookSecurity.trustedProxyIPs` довіряє forwarded-заголовкам лише тоді, коли
віддалена IP-адреса запиту збігається зі списком.
Захист від повторного відтворення webhook увімкнено для Twilio та Plivo. Повторно відтворені валідні webhook-
запити підтверджуються, але їхні побічні ефекти пропускаються.
Захист від повторного відтворення Webhook увімкнено для Twilio та Plivo. Повторно відтворені валідні запити Webhook
підтверджуються, але пропускаються з погляду побічних ефектів.
Ходи розмови Twilio включають окремий токен для кожного ходу в callback-ах `<Gather>`, тому
застарілі/повторно відтворені callback-и мовлення не можуть задовольнити новіший очікуваний хід транскрипції.
Ходи розмов Twilio включають токен на кожен хід у callback-ах `<Gather>`, тому
застарілі/повторно відтворені callback-и мовлення не можуть задовольнити новіший очікуваний хід транскрипту.
Неавтентифіковані webhook-запити відхиляються до читання тіла, якщо відсутні
Неавтентифіковані запити Webhook відхиляються до читання тіла, якщо відсутні
обов’язкові заголовки підпису провайдера.
Webhook voice-call використовує спільний профіль тіла до автентифікації (64 КБ / 5 секунд)
разом з обмеженням одночасних запитів на IP перед перевіркою підпису.
Webhook voice-call використовує спільний профіль тіла до автентифікації (64 KB / 5 секунд)
плюс обмеження кількості одночасних запитів на IP до перевірки підпису.
Приклад зі стабільним публічним хостом:
@ -322,11 +417,11 @@ Webhook voice-call використовує спільний профіль ті
}
```
## TTS для викликів
## TTS для дзвінків
Voice Call використовує основну конфігурацію `messages.tts` для
Streaming мовлення у викликах. Ви можете перевизначити її в конфігурації плагіна з
**тією самою структурою** — вона виконує deep merge з `messages.tts`.
Voice Call використовує базову конфігурацію `messages.tts` для
потокового мовлення під час дзвінків. Ви можете перевизначити її в конфігурації плагіна з
**тією самою структурою** — вона deep-merge-иться з `messages.tts`.
```json5
{
@ -344,15 +439,15 @@ Streaming мовлення у викликах. Ви можете перевиз
Примітки:
- Застарілі ключі `tts.<provider>` у конфігурації плагіна (`openai`, `elevenlabs`, `microsoft`, `edge`) автоматично мігруються до `tts.providers.<provider>` під час завантаження. У збереженій конфігурації віддавайте перевагу структурі `providers`.
- **Microsoft speech ігнорується для голосових викликів** (телефонному аудіо потрібен PCM; поточний транспорт Microsoft не надає телекомунікаційний PCM-вивід).
- Основний TTS використовується, коли ввімкнено Twilio media streaming; інакше виклики повертаються до рідних голосів провайдера.
- Якщо потік медіа Twilio вже активний, Voice Call не повертається до TwiML `<Say>`. Якщо телекомунікаційний TTS недоступний у цьому стані, запит відтворення завершується помилкою замість змішування двох шляхів відтворення.
- Коли телекомунікаційний TTS повертається до вторинного провайдера, Voice Call записує попередження в журнал із ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження.
- Застарілі ключі `tts.<provider>` усередині конфігурації плагіна (`openai`, `elevenlabs`, `microsoft`, `edge`) автоматично мігруються до `tts.providers.<provider>` під час завантаження. У збереженій конфігурації віддавайте перевагу формі `providers`.
- **Microsoft speech ігнорується для голосових дзвінків** (телефонному аудіо потрібен PCM; поточний транспорт Microsoft не надає вихід PCM для телефонії).
- Базовий TTS використовується, коли ввімкнено потокове медіа Twilio; інакше дзвінки переходять до вбудованих голосів провайдера.
- Якщо медіапотік Twilio вже активний, Voice Call не переходить на TwiML `<Say>`. Якщо TTS для телефонії в такому стані недоступний, запит на відтворення завершується помилкою замість змішування двох шляхів відтворення.
- Коли TTS для телефонії переходить на вторинного провайдера, Voice Call записує попередження в лог із ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження.
### Більше прикладів
Використовувати лише основний TTS (без перевизначення):
Використовувати лише базовий TTS (без перевизначення):
```json5
{
@ -367,7 +462,7 @@ Streaming мовлення у викликах. Ви можете перевиз
}
```
Перевизначити на ElevenLabs лише для викликів (зберегти основне значення за замовчуванням деінде):
Перевизначити на ElevenLabs лише для дзвінків (залишити базове значення в інших місцях):
```json5
{
@ -392,7 +487,7 @@ Streaming мовлення у викликах. Ви можете перевиз
}
```
Перевизначити лише модель OpenAI для викликів (приклад deep merge):
Перевизначити лише модель OpenAI для дзвінків (приклад deep-merge):
```json5
{
@ -415,9 +510,9 @@ Streaming мовлення у викликах. Ви можете перевиз
}
```
## Вхідні виклики
## Вхідні дзвінки
Типова політика вхідних викликів — `disabled`. Щоб увімкнути вхідні виклики, задайте:
Типове значення політики вхідних дзвінків — `disabled`. Щоб увімкнути вхідні дзвінки, задайте:
```json5
{
@ -427,11 +522,11 @@ Streaming мовлення у викликах. Ви можете перевиз
}
```
`inboundPolicy: "allowlist"` — це низьконадійний фільтр caller ID. Плагін
нормалізує надане провайдером значення `From` і порівнює його з `allowFrom`.
Перевірка webhook автентифікує доставку від провайдера та цілісність payload, але
вона не доводить право власності на номер абонента PSTN/VoIP. Розглядайте `allowFrom` як
фільтрацію caller ID, а не як надійну ідентифікацію абонента.
`inboundPolicy: "allowlist"` — це низькорівневий фільтр caller ID. Плагін
нормалізує значення `From`, яке надає провайдер, і порівнює його з `allowFrom`.
Перевірка Webhook автентифікує доставку від провайдера та цілісність payload, але
не доводить право власності на номер абонента PSTN/VoIP. Сприймайте `allowFrom` як
фільтрацію caller ID, а не як сильне підтвердження особи абонента.
Автовідповіді використовують систему агентів. Налаштовуйте через:
@ -441,7 +536,7 @@ Streaming мовлення у викликах. Ви можете перевиз
### Контракт озвученого виводу
Для автовідповідей Voice Call додає суворий контракт озвученого виводу до system prompt:
Для автовідповідей Voice Call додає до системного prompt суворий контракт озвученого виводу:
- `{"spoken":"..."}`
@ -449,24 +544,24 @@ Streaming мовлення у викликах. Ви можете перевиз
- Ігнорує payload, позначені як reasoning/error content.
- Розбирає прямий JSON, JSON у fenced-блоках або вбудовані ключі `"spoken"`.
- Повертається до звичайного тексту та видаляє ймовірні вступні абзаци з плануванням/метакоментарями.
- Переходить до plain text і видаляє ймовірні вступні абзаци з плануванням/метаданими.
Це дозволяє зосередити озвучене відтворення на тексті, призначеному для абонента, і уникнути потрапляння тексту планування в аудіо.
Це дозволяє зосередити озвучення на тексті для абонента й уникнути потрапляння в аудіо тексту планування.
### Поведінка запуску розмови
### Поведінка під час запуску розмови
Для вихідних викликів `conversation` обробка першого повідомлення прив’язана до стану відтворення наживо:
Для вихідних дзвінків у режимі `conversation` обробка першого повідомлення пов’язана зі станом живого відтворення:
- Очищення черги barge-in і автовідповідь пригнічуються лише поки початкове привітання активно озвучується.
- Якщо початкове відтворення завершується помилкою, виклик повертається до `listening`, а початкове повідомлення залишається в черзі для повторної спроби.
- Початкове відтворення для Twilio streaming запускається при підключенні потоку без додаткової затримки.
- Очищення черги barge-in та автовідповідь пригнічуються лише тоді, коли початкове привітання активно озвучується.
- Якщо початкове відтворення не вдається, дзвінок повертається до стану `listening`, а початкове повідомлення залишається в черзі для повторної спроби.
- Початкове відтворення для потокового Twilio починається під час підключення потоку без додаткової затримки.
### Пільговий період після відключення потоку Twilio
Коли медіапотік Twilio відключається, Voice Call чекає `2000ms`, перш ніж автоматично завершити виклик:
Коли медіапотік Twilio відключається, Voice Call чекає `2000ms` перед автоматичним завершенням дзвінка:
- Якщо потік перепідключається протягом цього вікна, авто-завершення скасовується.
- Якщо після завершення пільгового періоду потік не реєструється знову, виклик завершується, щоб запобігти завислим активним викликам.
- Якщо після завершення пільгового періоду потік не реєструється знову, дзвінок завершується, щоб запобігти завислим активним дзвінкам.
## CLI
@ -479,14 +574,14 @@ openclaw voicecall dtmf --call-id <id> --digits "ww123456#"
openclaw voicecall end --call-id <id>
openclaw voicecall status --call-id <id>
openclaw voicecall tail
openclaw voicecall latency # підсумувати затримку ходів із журналів
openclaw voicecall latency # підсумувати затримку ходів за логами
openclaw voicecall expose --mode funnel
```
`latency` читає `calls.jsonl` зі стандартного шляху зберігання voice-call. Використовуйте
`--file <path>`, щоб вказати інший журнал, і `--last <n>`, щоб обмежити аналіз
останніми N записами (типово 200). Вивід містить p50/p90/p99 для затримки
ходів і часу очікування прослуховування.
`latency` читає `calls.jsonl` зі стандартного шляху сховища voice-call. Використовуйте
`--file <path>`, щоб вказати інший лог, і `--last <n>`, щоб обмежити аналіз
останніми N записами (типово 200). Вивід містить p50/p90/p99 для затримки ходу
та часу очікування прослуховування.
## Інструмент агента
@ -515,5 +610,5 @@ openclaw voicecall expose --mode funnel
## Пов’язане
- [Text-to-speech](/uk/tools/tts)
- [Режим розмови](/uk/nodes/talk)
- [Голосова активація](/uk/nodes/voicewake)
- [Talk mode](/uk/nodes/talk)
- [Voice wake](/uk/nodes/voicewake)

View File

@ -1,87 +1,89 @@
---
read_when:
- Пошук огляду медіаможливостей
- Вибір provider медіа для налаштування
- Шукаєте огляд медіаможливостей
- Вирішуєте, якого постачальника медіа налаштувати
- Розуміння того, як працює асинхронна генерація медіа
summary: Уніфікована цільова сторінка для генерації медіа, розуміння медіа та мовленнєвих можливостей
summary: Уніфікована цільова сторінка для генерації медіа, розуміння та можливостей мовлення
title: Огляд медіа
x-i18n:
generated_at: "2026-04-23T23:08:11Z"
generated_at: "2026-04-24T09:19:22Z"
model: gpt-5.4
provider: openai
source_hash: 469fb173ac3853011b8cd4f89f3ab97dd7d14e12e4e1d7d87e84de05d025a593
source_hash: 39848c6104ebd4feeb37b233b70f3312fa076b535c3b3780336729eb9fdfa4e6
source_path: tools/media-overview.md
workflow: 15
---
# Генерація та розуміння медіа
OpenClaw генерує зображення, відео й музику, розуміє вхідні медіа (зображення, аудіо, відео) та озвучує відповіді за допомогою text-to-speech. Усі медіаможливості керуються інструментами: агент вирішує, коли їх використовувати, залежно від розмови, і кожен інструмент з’являється лише тоді, коли налаштовано принаймні одного відповідного provider.
OpenClaw генерує зображення, відео та музику, розуміє вхідні медіа (зображення, аудіо, відео) і озвучує відповіді за допомогою перетворення тексту на мовлення. Усі медіаможливості керуються інструментами: агент вирішує, коли їх використовувати, на основі розмови, і кожен інструмент з’являється лише тоді, коли налаштовано принаймні одного базового постачальника.
## Можливості з першого погляду
| Можливість | Інструмент | Provider | Що робить |
| ------------------- | ---------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Генерація зображень | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Створює або редагує зображення за текстовими prompt чи посиланнями |
| Генерація відео | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | Створює відео з тексту, зображень або наявних відео |
| Генерація музики | `music_generate` | ComfyUI, Google, MiniMax | Створює музику або аудіодоріжки з текстових prompt |
| Text-to-speech (TTS) | `tts` | ElevenLabs, Microsoft, MiniMax, OpenAI, xAI | Перетворює вихідні відповіді на озвучене аудіо |
| Розуміння медіа | (автоматично) | Будь-який provider моделі з підтримкою vision/audio, а також резервні CLI-варіанти | Підсумовує вхідні зображення, аудіо та відео |
| Можливість | Інструмент | Постачальники | Що він робить |
| -------------------- | ---------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| Генерація зображень | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Створює або редагує зображення з текстових запитів чи референсів |
| Генерація відео | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | Створює відео з тексту, зображень або наявних відео |
| Генерація музики | `music_generate` | ComfyUI, Google, MiniMax | Створює музику або аудіодоріжки з текстових запитів |
| Перетворення тексту на мовлення (TTS) | `tts` | ElevenLabs, Google, Microsoft, MiniMax, OpenAI, xAI | Перетворює вихідні відповіді на озвучене аудіо |
| Розуміння медіа | (автоматично) | Будь-який постачальник моделей із підтримкою зору/аудіо, а також резервні варіанти CLI | Підсумовує вхідні зображення, аудіо та відео |
## Матриця можливостей provider
## Матриця можливостей постачальників
Ця таблиця показує, які provider підтримують які медіаможливості на платформі.
Ця таблиця показує, які постачальники підтримують які медіаможливості на всій платформі.
| Provider | Зображення | Відео | Музика | TTS | STT / Транскрибування | Розуміння медіа |
| ---------- | ---------- | ----- | ------ | --- | --------------------- | --------------- |
| Alibaba | | Yes | | | | |
| BytePlus | | Yes | | | | |
| ComfyUI | Yes | Yes | Yes | | | |
| Deepgram | | | | | Yes | |
| ElevenLabs | | | | Yes | Yes | |
| fal | Yes | Yes | | | | |
| Google | Yes | Yes | Yes | | | Yes |
| Microsoft | | | | Yes | | |
| MiniMax | Yes | Yes | Yes | Yes | | |
| Mistral | | | | | Yes | |
| OpenAI | Yes | Yes | | Yes | Yes | Yes |
| Qwen | | Yes | | | | |
| Runway | | Yes | | | | |
| Together | | Yes | | | | |
| Vydra | Yes | Yes | | | | |
| xAI | Yes | Yes | | Yes | Yes | Yes |
| Постачальник | Зображення | Відео | Музика | TTS | STT / Транскрибування | Голос у реальному часі | Розуміння медіа |
| ------------ | ---------- | ----- | ------ | --- | --------------------- | ---------------------- | --------------- |
| Alibaba | | Yes | | | | | |
| BytePlus | | Yes | | | | | |
| ComfyUI | Yes | Yes | Yes | | | | |
| Deepgram | | | | | Yes | | |
| ElevenLabs | | | | Yes | Yes | | |
| fal | Yes | Yes | | | | | |
| Google | Yes | Yes | Yes | Yes | | Yes | Yes |
| Microsoft | | | | Yes | | | |
| MiniMax | Yes | Yes | Yes | Yes | | | |
| Mistral | | | | | Yes | | |
| OpenAI | Yes | Yes | | Yes | Yes | Yes | Yes |
| Qwen | | Yes | | | | | |
| Runway | | Yes | | | | | |
| Together | | Yes | | | | | |
| Vydra | Yes | Yes | | | | | |
| xAI | Yes | Yes | | Yes | Yes | | Yes |
<Note>
Розуміння медіа використовує будь-яку модель із підтримкою vision або audio, зареєстровану у вашій конфігурації provider. У таблиці вище виділено provider із виділеною підтримкою розуміння медіа; більшість LLM-provider з мультимодальними моделями (Anthropic, Google, OpenAI тощо) також можуть розуміти вхідні медіа, якщо вони налаштовані як активна модель для відповідей.
Розуміння медіа використовує будь-яку модель із підтримкою зору або аудіо, зареєстровану у вашій конфігурації постачальника. Таблиця вище виділяє постачальників зі спеціалізованою підтримкою розуміння медіа; більшість постачальників LLM із мультимодальними моделями (Anthropic, Google, OpenAI тощо) також можуть розуміти вхідні медіа, якщо їх налаштовано як активну модель для відповідей.
</Note>
## Як працює асинхронна генерація
Генерація відео й музики виконується як фонові завдання, оскільки обробка provider зазвичай триває від 30 секунд до кількох хвилин. Коли агент викликає `video_generate` або `music_generate`, OpenClaw надсилає запит provider, одразу повертає ідентифікатор завдання й відстежує роботу в журналі завдань. Поки завдання виконується, агент продовжує відповідати на інші повідомлення. Коли provider завершує роботу, OpenClaw пробуджує агента, щоб той міг надіслати готове медіа назад у початковий канал. Генерація зображень і TTS є синхронними та завершуються в межах відповіді.
Генерація відео та музики виконується як фонові завдання, оскільки обробка у постачальників зазвичай триває від 30 секунд до кількох хвилин. Коли агент викликає `video_generate` або `music_generate`, OpenClaw надсилає запит постачальнику, одразу повертає ідентифікатор завдання та відстежує роботу в журналі завдань. Поки завдання виконується, агент продовжує відповідати на інші повідомлення. Коли постачальник завершує обробку, OpenClaw пробуджує агента, щоб той міг опублікувати готовий медіарезультат назад у вихідний канал. Генерація зображень і TTS є синхронними та завершуються безпосередньо під час відповіді.
Deepgram, ElevenLabs, Mistral, OpenAI і xAI можуть транскрибувати вхідне
аудіо через пакетний шлях `tools.media.audio`, якщо це налаштовано. Deepgram,
ElevenLabs, Mistral, OpenAI і xAI також реєструють provider потокового STT для Voice Call,
тому живе телефонне аудіо можна пересилати вибраному вендору
аудіо через пакетний шлях `tools.media.audio`, якщо їх налаштовано. Deepgram,
ElevenLabs, Mistral, OpenAI і xAI також реєструють постачальників потокового STT для
Voice Call, тож живе телефонне аудіо може бути переспрямоване до вибраного постачальника
без очікування завершення запису.
OpenAI зіставляється з поверхнями OpenClaw для зображень, відео, пакетного TTS, пакетного STT, потокового STT для Voice Call, realtime voice і memory embedding. xAI наразі
зіставляється з поверхнями OpenClaw для зображень, відео, пошуку, виконання коду, пакетного TTS, пакетного STT
і потокового STT для Voice Call. Realtime voice xAI — це
можливість upstream, але вона не зареєстрована в OpenClaw, доки спільний контракт
realtime voice не зможе її представити.
Google відповідає поверхням OpenClaw для зображень, відео, музики, пакетного TTS, backend realtime
voice і розуміння медіа. OpenAI відповідає поверхням OpenClaw для зображень,
відео, пакетного TTS, пакетного STT, потокового STT для Voice Call, backend realtime voice
та вбудовувань пам’яті. xAI наразі відповідає поверхням OpenClaw для зображень, відео,
пошуку, виконання коду, пакетного TTS, пакетного STT і потокового STT для Voice Call.
Голос xAI Realtime є можливістю на стороні постачальника, але він не
реєструється в OpenClaw, доки спільний контракт голосу в реальному часі не зможе це виразити.
## Швидкі посилання
- [Генерація зображень](/uk/tools/image-generation) -- генерація та редагування зображень
- [Генерація відео](/uk/tools/video-generation) -- text-to-video, image-to-video і video-to-video
- [Генерація зображень](/uk/tools/image-generation) -- генерування та редагування зображень
- [Генерація відео](/uk/tools/video-generation) -- текст у відео, зображення у відео та відео у відео
- [Генерація музики](/uk/tools/music-generation) -- створення музики й аудіодоріжок
- [Text-to-Speech](/uk/tools/tts) -- перетворення відповідей на озвучене аудіо
- [Перетворення тексту на мовлення](/uk/tools/tts) -- перетворення відповідей на озвучене аудіо
- [Розуміння медіа](/uk/nodes/media-understanding) -- розуміння вхідних зображень, аудіо та відео
## Пов’язано
## Пов’язане
- [Генерація зображень](/uk/tools/image-generation)
- [Генерація відео](/uk/tools/video-generation)
- [Генерація музики](/uk/tools/music-generation)
- [Text-to-speech](/uk/tools/tts)
- [Перетворення тексту на мовлення](/uk/tools/tts)