diff --git a/docs/uk/plugins/google-meet.md b/docs/uk/plugins/google-meet.md index a7690f005..e6c644780 100644 --- a/docs/uk/plugins/google-meet.md +++ b/docs/uk/plugins/google-meet.md @@ -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 --port 18789 --display-name parallels-macos ``` -Якщо `` — це LAN IP і ви не використовуєте TLS, вузол відхиляє -простий WebSocket, якщо ви явно не дозволите це для цієї довіреної приватної мережі: +Якщо `` — це IP-адреса LAN і ви не використовуєте TLS, вузол відхиляє +незашифрований WebSocket, якщо ви явно не дозволите це для цієї довіреної приватної мережі: ```bash OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node run --host --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) diff --git a/docs/uk/plugins/voice-call.md b/docs/uk/plugins/voice-call.md index cd7fe8387..b7d5f9bde 100644 --- a/docs/uk/plugins/voice-call.md +++ b/docs/uk/plugins/voice-call.md @@ -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.`. -- Якщо `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.`. +- Якщо `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.`. +- Якщо `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 + 30–60` секунд. + завершитися. Гарна стартова точка — `maxDurationSeconds + 30–60` секунд. Приклад: @@ -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-ах ``, тому -застарілі/повторно відтворені callback-и мовлення не можуть задовольнити новіший очікуваний хід транскрипції. +Ходи розмов Twilio включають токен на кожен хід у callback-ах ``, тому +застарілі/повторно відтворені 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.` у конфігурації плагіна (`openai`, `elevenlabs`, `microsoft`, `edge`) автоматично мігруються до `tts.providers.` під час завантаження. У збереженій конфігурації віддавайте перевагу структурі `providers`. -- **Microsoft speech ігнорується для голосових викликів** (телефонному аудіо потрібен PCM; поточний транспорт Microsoft не надає телекомунікаційний PCM-вивід). -- Основний TTS використовується, коли ввімкнено Twilio media streaming; інакше виклики повертаються до рідних голосів провайдера. -- Якщо потік медіа Twilio вже активний, Voice Call не повертається до TwiML ``. Якщо телекомунікаційний TTS недоступний у цьому стані, запит відтворення завершується помилкою замість змішування двох шляхів відтворення. -- Коли телекомунікаційний TTS повертається до вторинного провайдера, Voice Call записує попередження в журнал із ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження. +- Застарілі ключі `tts.` усередині конфігурації плагіна (`openai`, `elevenlabs`, `microsoft`, `edge`) автоматично мігруються до `tts.providers.` під час завантаження. У збереженій конфігурації віддавайте перевагу формі `providers`. +- **Microsoft speech ігнорується для голосових дзвінків** (телефонному аудіо потрібен PCM; поточний транспорт Microsoft не надає вихід PCM для телефонії). +- Базовий TTS використовується, коли ввімкнено потокове медіа Twilio; інакше дзвінки переходять до вбудованих голосів провайдера. +- Якщо медіапотік Twilio вже активний, Voice Call не переходить на TwiML ``. Якщо 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 --digits "ww123456#" openclaw voicecall end --call-id openclaw voicecall status --call-id openclaw voicecall tail -openclaw voicecall latency # підсумувати затримку ходів із журналів +openclaw voicecall latency # підсумувати затримку ходів за логами openclaw voicecall expose --mode funnel ``` -`latency` читає `calls.jsonl` зі стандартного шляху зберігання voice-call. Використовуйте -`--file `, щоб вказати інший журнал, і `--last `, щоб обмежити аналіз -останніми N записами (типово 200). Вивід містить p50/p90/p99 для затримки -ходів і часу очікування прослуховування. +`latency` читає `calls.jsonl` зі стандартного шляху сховища voice-call. Використовуйте +`--file `, щоб вказати інший лог, і `--last `, щоб обмежити аналіз +останніми 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) diff --git a/docs/uk/tools/media-overview.md b/docs/uk/tools/media-overview.md index d1256e5b8..005d7e43f 100644 --- a/docs/uk/tools/media-overview.md +++ b/docs/uk/tools/media-overview.md @@ -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 | -Розуміння медіа використовує будь-яку модель із підтримкою vision або audio, зареєстровану у вашій конфігурації provider. У таблиці вище виділено provider із виділеною підтримкою розуміння медіа; більшість LLM-provider з мультимодальними моделями (Anthropic, Google, OpenAI тощо) також можуть розуміти вхідні медіа, якщо вони налаштовані як активна модель для відповідей. +Розуміння медіа використовує будь-яку модель із підтримкою зору або аудіо, зареєстровану у вашій конфігурації постачальника. Таблиця вище виділяє постачальників зі спеціалізованою підтримкою розуміння медіа; більшість постачальників LLM із мультимодальними моделями (Anthropic, Google, OpenAI тощо) також можуть розуміти вхідні медіа, якщо їх налаштовано як активну модель для відповідей. ## Як працює асинхронна генерація -Генерація відео й музики виконується як фонові завдання, оскільки обробка 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)