diff --git a/docs/uk/providers/xiaomi.md b/docs/uk/providers/xiaomi.md index a1e77e618..f49716a88 100644 --- a/docs/uk/providers/xiaomi.md +++ b/docs/uk/providers/xiaomi.md @@ -1,35 +1,34 @@ --- read_when: - - Ви хочете використовувати моделі Xiaomi MiMo в OpenClaw + - Ви хочете моделі Xiaomi MiMo в OpenClaw - Вам потрібно налаштувати `XIAOMI_API_KEY` -summary: Використання моделей Xiaomi MiMo з OpenClaw +summary: Використовуйте моделі Xiaomi MiMo з OpenClaw title: Xiaomi MiMo x-i18n: - generated_at: "2026-04-23T23:06:06Z" + generated_at: "2026-04-25T08:51:56Z" model: gpt-5.4 provider: openai - source_hash: ae61547fa5864f0cd3e19465a8a7d6ff843f9534ab9c2dd39a86a3593cafaa8d + source_hash: 7781973c3a1d14101cdb0a8d1affe3fd076a968552ed2a8630a91a8947daeb3a source_path: providers/xiaomi.md workflow: 15 --- -Xiaomi MiMo — це API-платформа для моделей **MiMo**. OpenClaw використовує endpoint Xiaomi, -сумісний з OpenAI, з автентифікацією через API key. +Xiaomi MiMo — це API-платформа для моделей **MiMo**. OpenClaw використовує сумісний з OpenAI endpoint Xiaomi з автентифікацією за API-ключем. -| Властивість | Значення | -| ----------- | ------------------------------- | -| Провайдер | `xiaomi` | -| Auth | `XIAOMI_API_KEY` | -| API | Сумісний з OpenAI | -| Base URL | `https://api.xiaomimimo.com/v1` | +| Властивість | Значення | +| ----------- | ------------------------------ | +| Постачальник | `xiaomi` | +| Автентифікація | `XIAOMI_API_KEY` | +| API | Сумісне з OpenAI | +| Базова URL-адреса | `https://api.xiaomimimo.com/v1` | ## Початок роботи - - Створіть API key у [консолі Xiaomi MiMo](https://platform.xiaomimimo.com/#/console/api-keys). + + Створіть API-ключ у [консолі Xiaomi MiMo](https://platform.xiaomimimo.com/#/console/api-keys). - + ```bash openclaw onboard --auth-choice xiaomi-api-key ``` @@ -48,19 +47,53 @@ Xiaomi MiMo — це API-платформа для моделей **MiMo**. Open -## Вбудований catalog +## Вбудований каталог -| Посилання на модель | Вхід | Контекст | Макс. вивід | Reasoning | Примітки | -| ---------------------- | ----------- | --------- | ----------- | --------- | -------------- | -| `xiaomi/mimo-v2-flash` | text | 262,144 | 8,192 | Ні | Типова модель | -| `xiaomi/mimo-v2-pro` | text | 1,048,576 | 32,000 | Так | Великий контекст | -| `xiaomi/mimo-v2-omni` | text, image | 262,144 | 32,000 | Так | Мультимодальна | +| Посилання на модель | Вхідні дані | Контекст | Макс. вивід | Міркування | Примітки | +| ----------------------- | ----------- | --------- | ----------- | ---------- | ------------- | +| `xiaomi/mimo-v2-flash` | текст | 262,144 | 8,192 | Ні | Модель за замовчуванням | +| `xiaomi/mimo-v2-pro` | текст | 1,048,576 | 32,000 | Так | Великий контекст | +| `xiaomi/mimo-v2-omni` | текст, зображення | 262,144 | 32,000 | Так | Мультимодальна | -Типове посилання на модель — `xiaomi/mimo-v2-flash`. Провайдер автоматично додається, коли задано `XIAOMI_API_KEY` або існує auth profile. +Посилання на модель за замовчуванням — `xiaomi/mimo-v2-flash`. Постачальник додається автоматично, коли встановлено `XIAOMI_API_KEY` або існує профіль автентифікації. -## Приклад config +## Text-to-speech + +У комплектний plugin `xiaomi` також входить реєстрація Xiaomi MiMo як постачальника мовлення для `messages.tts`. Він викликає TTS-контракт chat-completions Xiaomi з текстом як повідомленням `assistant` і необов’язковими вказівками щодо стилю як повідомленням `user`. + +| Властивість | Значення | +| ----------- | -------------------------------------- | +| Ідентифікатор TTS | `xiaomi` (`mimo` alias) | +| Автентифікація | `XIAOMI_API_KEY` | +| API | `POST /v1/chat/completions` з `audio` | +| За замовчуванням | `mimo-v2.5-tts`, голос `mimo_default` | +| Вивід | MP3 за замовчуванням; WAV, якщо налаштовано | + +```json5 +{ + messages: { + tts: { + auto: "always", + provider: "xiaomi", + providers: { + xiaomi: { + apiKey: "xiaomi_api_key", + model: "mimo-v2.5-tts", + voice: "mimo_default", + format: "mp3", + style: "Bright, natural, conversational tone.", + }, + }, + }, + }, +} +``` + +Серед підтримуваних вбудованих голосів: `mimo_default`, `default_zh`, `default_en`, `Mia`, `Chloe`, `Milo` і `Dean`. `mimo-v2-tts` підтримується для старіших облікових записів MiMo TTS; за замовчуванням використовується поточна модель MiMo-V2.5 TTS. Для цілей голосових повідомлень, таких як Feishu і Telegram, OpenClaw перекодовує вивід Xiaomi у 48 кГц Opus за допомогою `ffmpeg` перед доставкою. + +## Приклад конфігурації ```json5 { @@ -109,27 +142,27 @@ Xiaomi MiMo — це API-платформа для моделей **MiMo**. Open ``` - - Провайдер `xiaomi` автоматично додається, коли `XIAOMI_API_KEY` задано у вашому середовищі або існує auth profile. Вам не потрібно вручну налаштовувати провайдера, якщо тільки ви не хочете перевизначити метадані моделі або base URL. + + Постачальник `xiaomi` додається автоматично, коли `XIAOMI_API_KEY` встановлено у вашому середовищі або існує профіль автентифікації. Вам не потрібно вручну налаштовувати постачальника, якщо тільки ви не хочете перевизначити метадані моделі або базову URL-адресу. - - - **mimo-v2-flash** — легка й швидка, ідеальна для загальних текстових завдань. Підтримка reasoning відсутня. - - **mimo-v2-pro** — підтримує reasoning з контекстним вікном на 1M токенів для роботи з довгими документами. - - **mimo-v2-omni** — мультимодальна модель із підтримкою reasoning, яка приймає і текст, і зображення. + + - **mimo-v2-flash** — легка й швидка модель, ідеальна для текстових завдань загального призначення. Підтримка міркування відсутня. + - **mimo-v2-pro** — підтримує міркування з контекстним вікном на 1M токенів для навантажень із довгими документами. + - **mimo-v2-omni** — мультимодальна модель із підтримкою міркування, яка приймає як текстові, так і графічні вхідні дані. - Усі моделі використовують префікс `xiaomi/` (наприклад `xiaomi/mimo-v2-pro`). + Усі моделі використовують префікс `xiaomi/` (наприклад, `xiaomi/mimo-v2-pro`). - - - Якщо моделі не з’являються, переконайтеся, що `XIAOMI_API_KEY` задано й він валідний. - - Коли Gateway працює як daemon, переконайтеся, що ключ доступний цьому процесу (наприклад у `~/.openclaw/.env` або через `env.shellEnv`). + + - Якщо моделі не з’являються, переконайтеся, що `XIAOMI_API_KEY` встановлено й він дійсний. + - Коли Gateway працює як демон, переконайтеся, що ключ доступний для цього процесу (наприклад, у `~/.openclaw/.env` або через `env.shellEnv`). - Ключі, задані лише в інтерактивному shell, не видимі процесам gateway, якими керує daemon. Для постійної доступності використовуйте `~/.openclaw/.env` або config `env.shellEnv`. + Ключі, встановлені лише у вашій інтерактивній оболонці, не видимі для процесів Gateway, якими керує демон. Для постійної доступності використовуйте `~/.openclaw/.env` або конфігурацію `env.shellEnv`. @@ -139,12 +172,12 @@ Xiaomi MiMo — це API-платформа для моделей **MiMo**. Open - Вибір провайдерів, посилань на моделі та поведінки failover. + Вибір постачальників, посилань на моделі та поведінки резервного перемикання. Повний довідник конфігурації OpenClaw. - Панель Xiaomi MiMo і керування API key. + Панель керування Xiaomi MiMo та керування API-ключами. diff --git a/docs/uk/tools/tts.md b/docs/uk/tools/tts.md index 2f989da8b..3aa902b27 100644 --- a/docs/uk/tools/tts.md +++ b/docs/uk/tools/tts.md @@ -6,44 +6,45 @@ read_when: summary: Перетворення тексту на мовлення (TTS) для вихідних відповідей title: Перетворення тексту на мовлення x-i18n: - generated_at: "2026-04-25T08:32:13Z" + generated_at: "2026-04-25T08:51:54Z" model: gpt-5.4 provider: openai - source_hash: b63be2c606754b3ed334c394fb2ea8da3698ca8bfcbe8c136a5b710cb9c52768 + source_hash: 14a2d014850395add532faef86659acae7fd6a8a5757f9dd7dac606c0780d278 source_path: tools/tts.md workflow: 15 --- -OpenClaw може перетворювати вихідні відповіді на аудіо за допомогою ElevenLabs, Google Gemini, Gradium, Microsoft, MiniMax, OpenAI, Vydra або xAI. +OpenClaw може перетворювати вихідні відповіді на аудіо за допомогою ElevenLabs, Google Gemini, Gradium, Microsoft, MiniMax, OpenAI, Vydra, xAI або Xiaomi MiMo. Це працює всюди, де OpenClaw може надсилати аудіо. ## Підтримувані сервіси - **ElevenLabs** (основний або резервний постачальник) - **Google Gemini** (основний або резервний постачальник; використовує Gemini API TTS) -- **Gradium** (основний або резервний постачальник; підтримує вихід у форматі голосових повідомлень і телефонії) +- **Gradium** (основний або резервний постачальник; підтримує вихід voice-note і telephony) - **Microsoft** (основний або резервний постачальник; поточна вбудована реалізація використовує `node-edge-tts`) - **MiniMax** (основний або резервний постачальник; використовує API T2A v2) -- **OpenAI** (основний або резервний постачальник; також використовується для зведень) +- **OpenAI** (основний або резервний постачальник; також використовується для підсумків) - **Vydra** (основний або резервний постачальник; спільний постачальник зображень, відео та мовлення) - **xAI** (основний або резервний постачальник; використовує xAI TTS API) +- **Xiaomi MiMo** (основний або резервний постачальник; використовує MiMo TTS через chat completions Xiaomi) ### Примітки щодо мовлення Microsoft -Поточний вбудований постачальник мовлення Microsoft використовує онлайн-службу +Поточний вбудований постачальник мовлення Microsoft використовує онлайн-сервіс нейронного TTS Microsoft Edge через бібліотеку `node-edge-tts`. Це хостинговий сервіс (не локальний), він використовує кінцеві точки Microsoft і не потребує API-ключа. -`node-edge-tts` надає параметри конфігурації мовлення та формати виводу, але -сервіс підтримує не всі параметри. Старі конфігурації та вхідні директиви -з `edge` усе ще працюють і нормалізуються до `microsoft`. +`node-edge-tts` надає параметри конфігурації мовлення та вихідні формати, але +сервіс підтримує не всі параметри. Застаріла конфігурація та вхідні директиви +з використанням `edge` усе ще працюють і нормалізуються до `microsoft`. -Оскільки цей шлях використовує публічний вебсервіс без опублікованої SLA або квоти, -ставтеся до нього як до best-effort. Якщо вам потрібні гарантовані ліміти й підтримка, використовуйте OpenAI +Оскільки цей шлях використовує загальнодоступний вебсервіс без опублікованих SLA або квот, +вважайте його best-effort. Якщо вам потрібні гарантовані ліміти та підтримка, використовуйте OpenAI або ElevenLabs. ## Необов’язкові ключі -Якщо ви хочете використовувати OpenAI, ElevenLabs, Google Gemini, Gradium, MiniMax, Vydra або xAI: +Якщо ви хочете використовувати OpenAI, ElevenLabs, Google Gemini, Gradium, MiniMax, Vydra, xAI або Xiaomi MiMo: - `ELEVENLABS_API_KEY` (або `XI_API_KEY`) - `GEMINI_API_KEY` (або `GOOGLE_API_KEY`) @@ -52,23 +53,25 @@ OpenClaw може перетворювати вихідні відповіді - `OPENAI_API_KEY` - `VYDRA_API_KEY` - `XAI_API_KEY` +- `XIAOMI_API_KEY` -Для мовлення Microsoft API-ключ **не** потрібен. +Мовлення Microsoft **не** потребує API-ключа. Якщо налаштовано кілька постачальників, спочатку використовується вибраний постачальник, а решта слугують резервними варіантами. -Автозведення використовує налаштовану `summaryModel` (або `agents.defaults.model.primary`), -тому, якщо ви вмикаєте зведення, цей постачальник також має бути автентифікований. +Автоматичний підсумок використовує налаштований `summaryModel` (або `agents.defaults.model.primary`), +тому якщо ви вмикаєте підсумки, цей постачальник також має бути автентифікований. ## Посилання на сервіси - [Посібник OpenAI Text-to-Speech](https://platform.openai.com/docs/guides/text-to-speech) -- [Довідник API OpenAI Audio](https://platform.openai.com/docs/api-reference/audio) +- [Довідник OpenAI Audio API](https://platform.openai.com/docs/api-reference/audio) - [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech) - [Автентифікація ElevenLabs](https://elevenlabs.io/docs/api-reference/authentication) - [Gradium](/uk/providers/gradium) - [API MiniMax T2A v2](https://platform.minimaxi.com/document/T2A%20V2) +- [Синтез мовлення Xiaomi MiMo](/uk/providers/xiaomi#text-to-speech) - [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts) -- [Формати виводу Microsoft Speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) +- [Вихідні формати Microsoft Speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) - [xAI Text to Speech](https://docs.x.ai/developers/rest-api-reference/inference/voice#text-to-speech-rest) ## Чи ввімкнено це за замовчуванням? @@ -76,13 +79,13 @@ OpenClaw може перетворювати вихідні відповіді Ні. Автоматичний TTS **вимкнено** за замовчуванням. Увімкніть його в конфігурації через `messages.tts.auto` або локально через `/tts on`. -Якщо `messages.tts.provider` не задано, OpenClaw вибирає першого налаштованого -постачальника мовлення в порядку авто-вибору реєстру. +Коли `messages.tts.provider` не задано, OpenClaw вибирає першого налаштованого +постачальника мовлення в порядку автоматичного вибору реєстру. ## Конфігурація -Конфігурація TTS розміщена в `messages.tts` у `openclaw.json`. -Повна схема наведена в [Конфігурації Gateway](/uk/gateway/configuration). +Конфігурація TTS розміщується в `messages.tts` у `openclaw.json`. +Повна схема наведена в [Конфігурація Gateway](/uk/gateway/configuration). ### Мінімальна конфігурація (увімкнення + постачальник) @@ -97,7 +100,7 @@ OpenClaw може перетворювати вихідні відповіді } ``` -### OpenAI як основний, ElevenLabs як резервний +### OpenAI як основний з ElevenLabs як резервним ```json5 { @@ -205,8 +208,8 @@ OpenClaw може перетворювати вихідні відповіді } ``` -Google Gemini TTS використовує шлях API-ключа Gemini. Ключ API Google Cloud Console, -обмежений Gemini API, тут є дійсним, і це той самий тип ключа, який використовується +Google Gemini TTS використовує шлях API-ключа Gemini. Тут дійсний API-ключ Google Cloud Console, +обмежений Gemini API, і це той самий тип ключа, який використовується вбудованим постачальником генерації зображень Google. Порядок визначення: `messages.tts.providers.google.apiKey` -> `models.providers.google.apiKey` -> `GEMINI_API_KEY` -> `GOOGLE_API_KEY`. @@ -236,7 +239,35 @@ Google Gemini TTS використовує шлях API-ключа Gemini. Кл xAI TTS використовує той самий шлях `XAI_API_KEY`, що й вбудований постачальник моделей Grok. Порядок визначення: `messages.tts.providers.xai.apiKey` -> `XAI_API_KEY`. Поточні доступні голоси: `ara`, `eve`, `leo`, `rex`, `sal` і `una`; `eve` — -голос за замовчуванням. `language` приймає тег BCP-47 або `auto`. +значення за замовчуванням. `language` приймає тег BCP-47 або `auto`. + +### Xiaomi MiMo як основний + +```json5 +{ + messages: { + tts: { + auto: "always", + provider: "xiaomi", + providers: { + xiaomi: { + apiKey: "xiaomi_api_key", + baseUrl: "https://api.xiaomimimo.com/v1", + model: "mimo-v2.5-tts", + voice: "mimo_default", + format: "mp3", + style: "Bright, natural, conversational tone.", + }, + }, + }, + }, +} +``` + +Xiaomi MiMo TTS використовує той самий шлях `XIAOMI_API_KEY`, що й вбудований постачальник моделей Xiaomi. +Ідентифікатор постачальника мовлення — `xiaomi`; `mimo` також приймається як псевдонім. +Цільовий текст надсилається як повідомлення асистента відповідно до контракту TTS Xiaomi. +Необов’язковий `style` надсилається як інструкція користувача і не озвучується. ### OpenRouter як основний @@ -327,7 +358,7 @@ OpenRouter TTS використовує той самий шлях `OPENROUTER_A } ``` -### Вимкнення автозведення для довгих відповідей +### Вимкнення автоматичного підсумку для довгих відповідей ```json5 { @@ -350,46 +381,46 @@ OpenRouter TTS використовує той самий шлях `OPENROUTER_A - `auto`: режим автоматичного TTS (`off`, `always`, `inbound`, `tagged`). - `inbound` надсилає аудіо лише після вхідного голосового повідомлення. - `tagged` надсилає аудіо лише тоді, коли відповідь містить директиви `[[tts:key=value]]` або блок `[[tts:text]]...[[/tts:text]]`. -- `enabled`: застарілий перемикач (doctor переносить його до `auto`). +- `enabled`: застарілий перемикач (doctor мігрує його до `auto`). - `mode`: `"final"` (за замовчуванням) або `"all"` (включає відповіді інструментів/блоків). -- `provider`: ідентифікатор постачальника мовлення, наприклад `"elevenlabs"`, `"google"`, `"gradium"`, `"microsoft"`, `"minimax"`, `"openai"`, `"vydra"` або `"xai"` (резервне перемикання відбувається автоматично). -- Якщо `provider` **не задано**, OpenClaw використовує першого налаштованого постачальника мовлення в порядку авто-вибору реєстру. -- Застарілу конфігурацію `provider: "edge"` виправляє `openclaw doctor --fix`, переписуючи її на - `provider: "microsoft"`. -- `summaryModel`: необов’язкова недорога модель для автозведення; за замовчуванням використовується `agents.defaults.model.primary`. +- `provider`: ідентифікатор постачальника мовлення, наприклад `"elevenlabs"`, `"google"`, `"gradium"`, `"microsoft"`, `"minimax"`, `"openai"`, `"vydra"`, `"xai"` або `"xiaomi"` (резервне перемикання відбувається автоматично). +- Якщо `provider` **не задано**, OpenClaw використовує першого налаштованого постачальника мовлення в порядку автоматичного вибору реєстру. +- Застаріла конфігурація `provider: "edge"` виправляється командою `openclaw doctor --fix` і + переписується на `provider: "microsoft"`. +- `summaryModel`: необов’язкова недорога модель для автоматичного підсумку; за замовчуванням використовується `agents.defaults.model.primary`. - Приймає `provider/model` або псевдонім налаштованої моделі. -- `modelOverrides`: дозволяє моделі видавати директиви TTS (увімкнено за замовчуванням). +- `modelOverrides`: дозволяє моделі виводити директиви TTS (увімкнено за замовчуванням). - `allowProvider` за замовчуванням має значення `false` (перемикання постачальника вмикається явно). -- `providers.`: параметри, що належать постачальнику, з ключем за ідентифікатором постачальника мовлення. -- Застарілі прямі блоки постачальників (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) виправляються через `openclaw doctor --fix`; у збереженій конфігурації слід використовувати `messages.tts.providers.`. -- Застарілий `messages.tts.providers.edge` також виправляється через `openclaw doctor --fix`; у збереженій конфігурації слід використовувати `messages.tts.providers.microsoft`. -- `maxTextLength`: жорстке обмеження для вхідного тексту TTS (символи). Якщо його перевищено, `/tts audio` завершується з помилкою. +- `providers.`: налаштування, що належать постачальнику, із ключем за ідентифікатором постачальника мовлення. +- Застарілі прямі блоки постачальників (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) виправляються командою `openclaw doctor --fix`; у збереженій конфігурації слід використовувати `messages.tts.providers.`. +- Застарілий `messages.tts.providers.edge` також виправляється командою `openclaw doctor --fix`; у збереженій конфігурації слід використовувати `messages.tts.providers.microsoft`. +- `maxTextLength`: жорстке обмеження для вхідного тексту TTS (символи). `/tts audio` завершується помилкою, якщо ліміт перевищено. - `timeoutMs`: тайм-аут запиту (мс). -- `prefsPath`: перевизначає локальний шлях до JSON-файлу налаштувань (постачальник/ліміт/зведення). -- Значення `apiKey` можуть братися зі змінних середовища (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`). +- `prefsPath`: перевизначає локальний шлях до JSON-файлу prefs (постачальник/ліміт/підсумок). +- Значення `apiKey` беруться з env vars (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `GEMINI_API_KEY`/`GOOGLE_API_KEY`, `GRADIUM_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`, `VYDRA_API_KEY`, `XAI_API_KEY`, `XIAOMI_API_KEY`), якщо не задані явно. - `providers.elevenlabs.baseUrl`: перевизначає базовий URL API ElevenLabs. - `providers.openai.baseUrl`: перевизначає кінцеву точку OpenAI TTS. - Порядок визначення: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1` - - Значення, відмінні від стандартного, розглядаються як OpenAI-сумісні кінцеві точки TTS, тому допускаються власні назви моделей і голосів. + - Значення, відмінні від типових, розглядаються як OpenAI-сумісні кінцеві точки TTS, тому допускаються власні назви моделей і голосів. - `providers.elevenlabs.voiceSettings`: - `stability`, `similarityBoost`, `style`: `0..1` - `useSpeakerBoost`: `true|false` - - `speed`: `0.5..2.0` (1.0 = звичайна швидкість) + - `speed`: `0.5..2.0` (1.0 = нормально) - `providers.elevenlabs.applyTextNormalization`: `auto|on|off` -- `providers.elevenlabs.languageCode`: дволітерний ISO 639-1 (наприклад, `en`, `de`) -- `providers.elevenlabs.seed`: ціле число `0..4294967295` (best-effort детермінізм) +- `providers.elevenlabs.languageCode`: 2-літерний ISO 639-1 (наприклад, `en`, `de`) +- `providers.elevenlabs.seed`: ціле число `0..4294967295` (best-effort determinism) - `providers.minimax.baseUrl`: перевизначає базовий URL API MiniMax (за замовчуванням `https://api.minimax.io`, env: `MINIMAX_API_HOST`). - `providers.minimax.model`: модель TTS (за замовчуванням `speech-2.8-hd`, env: `MINIMAX_TTS_MODEL`). - `providers.minimax.voiceId`: ідентифікатор голосу (за замовчуванням `English_expressive_narrator`, env: `MINIMAX_TTS_VOICE_ID`). - `providers.minimax.speed`: швидкість відтворення `0.5..2.0` (за замовчуванням 1.0). - `providers.minimax.vol`: гучність `(0, 10]` (за замовчуванням 1.0; має бути більшою за 0). -- `providers.minimax.pitch`: ціле зміщення тону `-12..12` (за замовчуванням 0). Дробові значення обрізаються перед викликом MiniMax T2A, оскільки API відхиляє нецілі значення тону. +- `providers.minimax.pitch`: цілочисельне зміщення тону `-12..12` (за замовчуванням 0). Дробові значення відкидаються перед викликом MiniMax T2A, оскільки API не приймає нецілі значення тону. - `providers.google.model`: модель Gemini TTS (за замовчуванням `gemini-3.1-flash-tts-preview`). - `providers.google.voiceName`: назва вбудованого голосу Gemini (за замовчуванням `Kore`; також приймається `voice`). -- `providers.google.audioProfile`: підказка стилю природною мовою, що додається перед озвучуваним текстом. -- `providers.google.speakerName`: необов’язкова мітка мовця, яка додається перед озвучуваним текстом, коли ваш запит TTS використовує іменованого мовця. -- `providers.google.baseUrl`: перевизначає базовий URL Gemini API. Дозволено лише `https://generativelanguage.googleapis.com`. - - Якщо `messages.tts.providers.google.apiKey` пропущено, TTS може повторно використовувати `models.providers.google.apiKey` до переходу на резерв через env. +- `providers.google.audioProfile`: підказка зі стилем природною мовою, що додається перед озвучуваним текстом. +- `providers.google.speakerName`: необов’язкова мітка мовця, що додається перед озвучуваним текстом, коли ваш TTS prompt використовує іменованого мовця. +- `providers.google.baseUrl`: перевизначає базовий URL Gemini API. Приймається лише `https://generativelanguage.googleapis.com`. + - Якщо `messages.tts.providers.google.apiKey` пропущено, TTS може повторно використати `models.providers.google.apiKey` перед переходом до env. - `providers.gradium.baseUrl`: перевизначає базовий URL API Gradium (за замовчуванням `https://api.gradium.ai`). - `providers.gradium.voiceId`: ідентифікатор голосу Gradium (за замовчуванням Emma, `YTpq7expH9539ERJ`). - `providers.xai.apiKey`: API-ключ xAI TTS (env: `XAI_API_KEY`). @@ -397,38 +428,44 @@ OpenRouter TTS використовує той самий шлях `OPENROUTER_A - `providers.xai.voiceId`: ідентифікатор голосу xAI (за замовчуванням `eve`; поточні доступні голоси: `ara`, `eve`, `leo`, `rex`, `sal`, `una`). - `providers.xai.language`: код мови BCP-47 або `auto` (за замовчуванням `en`). - `providers.xai.responseFormat`: `mp3`, `wav`, `pcm`, `mulaw` або `alaw` (за замовчуванням `mp3`). -- `providers.xai.speed`: перевизначення швидкості, специфічне для постачальника. +- `providers.xai.speed`: перевизначення швидкості на рівні постачальника. +- `providers.xiaomi.apiKey`: API-ключ Xiaomi MiMo (env: `XIAOMI_API_KEY`). +- `providers.xiaomi.baseUrl`: перевизначає базовий URL API Xiaomi MiMo (за замовчуванням `https://api.xiaomimimo.com/v1`, env: `XIAOMI_BASE_URL`). +- `providers.xiaomi.model`: модель TTS (за замовчуванням `mimo-v2.5-tts`, env: `XIAOMI_TTS_MODEL`; також підтримується `mimo-v2-tts`). +- `providers.xiaomi.voice`: ідентифікатор голосу MiMo (за замовчуванням `mimo_default`, env: `XIAOMI_TTS_VOICE`). +- `providers.xiaomi.format`: `mp3` або `wav` (за замовчуванням `mp3`, env: `XIAOMI_TTS_FORMAT`). +- `providers.xiaomi.style`: необов’язкова інструкція щодо стилю природною мовою, яка надсилається як повідомлення користувача; вона не озвучується. - `providers.openrouter.apiKey`: API-ключ OpenRouter (env: `OPENROUTER_API_KEY`; може повторно використовувати `models.providers.openrouter.apiKey`). - `providers.openrouter.baseUrl`: перевизначає базовий URL OpenRouter TTS (за замовчуванням `https://openrouter.ai/api/v1`; застарілий `https://openrouter.ai/v1` нормалізується). - `providers.openrouter.model`: ідентифікатор моделі OpenRouter TTS (за замовчуванням `hexgrad/kokoro-82m`; також приймається `modelId`). - `providers.openrouter.voice`: ідентифікатор голосу, специфічний для постачальника (за замовчуванням `af_alloy`; також приймається `voiceId`). - `providers.openrouter.responseFormat`: `mp3` або `pcm` (за замовчуванням `mp3`). -- `providers.openrouter.speed`: перевизначення швидкості, специфічне для постачальника. +- `providers.openrouter.speed`: перевизначення швидкості на рівні постачальника. - `providers.microsoft.enabled`: дозволяє використання мовлення Microsoft (за замовчуванням `true`; без API-ключа). - `providers.microsoft.voice`: назва нейронного голосу Microsoft (наприклад, `en-US-MichelleNeural`). - `providers.microsoft.lang`: код мови (наприклад, `en-US`). -- `providers.microsoft.outputFormat`: формат виводу Microsoft (наприклад, `audio-24khz-48kbitrate-mono-mp3`). - - Дійсні значення див. у форматах виводу Microsoft Speech; не всі формати підтримуються вбудованим транспортом на базі Edge. -- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: рядки з відсотками (наприклад, `+10%`, `-5%`). +- `providers.microsoft.outputFormat`: вихідний формат Microsoft (наприклад, `audio-24khz-48kbitrate-mono-mp3`). + - Дійсні значення див. у Microsoft Speech output formats; не всі формати підтримуються вбудованим транспортом на базі Edge. +- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: рядки у відсотках (наприклад, `+10%`, `-5%`). - `providers.microsoft.saveSubtitles`: записує JSON-субтитри поруч з аудіофайлом. -- `providers.microsoft.proxy`: URL проксі для запитів мовлення Microsoft. +- `providers.microsoft.proxy`: URL проксі для запитів до мовлення Microsoft. - `providers.microsoft.timeoutMs`: перевизначення тайм-ауту запиту (мс). -- `edge.*`: застарілий псевдонім для тих самих параметрів Microsoft. Виконайте +- `edge.*`: застарілий псевдонім для тих самих налаштувань Microsoft. Виконайте `openclaw doctor --fix`, щоб переписати збережену конфігурацію на `providers.microsoft`. -## Керовані моделлю перевизначення (увімкнено за замовчуванням) +## Перевизначення, керовані моделлю (увімкнено за замовчуванням) -За замовчуванням модель **може** видавати директиви TTS для однієї відповіді. +За замовчуванням модель **може** виводити директиви TTS для однієї відповіді. Коли `messages.tts.auto` має значення `tagged`, ці директиви потрібні для запуску аудіо. -Коли це ввімкнено, модель може видавати директиви `[[tts:...]]` для перевизначення голосу +Коли цю функцію ввімкнено, модель може виводити директиви `[[tts:...]]` для перевизначення голосу для однієї відповіді, а також необов’язковий блок `[[tts:text]]...[[/tts:text]]`, щоб -надати виразні теги (сміх, підказки для співу тощо), які мають з’являтися лише в +додати виразні теги (сміх, підказки для співу тощо), які мають з’являтися лише в аудіо. -Директиви `provider=...` ігноруються, якщо не задано `modelOverrides.allowProvider: true`. +Директиви `provider=...` ігноруються, якщо `modelOverrides.allowProvider: true` не встановлено. -Приклад корисного навантаження відповіді: +Приклад payload відповіді: ``` Here you go. @@ -439,17 +476,17 @@ Here you go. Доступні ключі директив (коли ввімкнено): -- `provider` (ідентифікатор зареєстрованого постачальника мовлення, наприклад `openai`, `elevenlabs`, `google`, `gradium`, `minimax`, `microsoft`, `vydra` або `xai`; потребує `allowProvider: true`) -- `voice` (голос OpenAI або Gradium), `voiceName` / `voice_name` / `google_voice` (голос Google) або `voiceId` (ElevenLabs / Gradium / MiniMax / xAI) -- `model` (модель OpenAI TTS, ідентифікатор моделі ElevenLabs або модель MiniMax) або `google_model` (модель Google TTS) +- `provider` (ідентифікатор зареєстрованого постачальника мовлення, наприклад `openai`, `elevenlabs`, `google`, `gradium`, `minimax`, `microsoft`, `vydra`, `xai` або `xiaomi`; потребує `allowProvider: true`) +- `voice` (голос OpenAI, Gradium або Xiaomi), `voiceName` / `voice_name` / `google_voice` (голос Google) або `voiceId` (ElevenLabs / Gradium / MiniMax / xAI) +- `model` (модель OpenAI TTS, ідентифікатор моделі ElevenLabs, модель MiniMax або модель Xiaomi MiMo TTS) або `google_model` (модель Google TTS) - `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost` - `vol` / `volume` (гучність MiniMax, 0-10) -- `pitch` (цілий тон MiniMax, від -12 до 12; дробові значення обрізаються перед запитом до MiniMax) +- `pitch` (цілочисельний тон MiniMax, від -12 до 12; дробові значення відкидаються перед запитом MiniMax) - `applyTextNormalization` (`auto|on|off`) - `languageCode` (ISO 639-1) - `seed` -Вимкнення всіх перевизначень моделі: +Вимкнути всі перевизначення моделі: ```json5 { @@ -463,7 +500,7 @@ Here you go. } ``` -Необов’язковий список дозволів (увімкнення перемикання постачальника зі збереженням можливості налаштовувати інші параметри): +Необов’язковий allowlist (увімкнути перемикання постачальника, зберігши можливість налаштовувати інші параметри): ```json5 { @@ -479,79 +516,80 @@ Here you go. } ``` -## Налаштування для окремого користувача +## Налаштування для окремих користувачів Команди зі слешем записують локальні перевизначення до `prefsPath` (за замовчуванням: `~/.openclaw/settings/tts.json`, можна перевизначити через `OPENCLAW_TTS_PREFS` або `messages.tts.prefsPath`). -Збережені поля: +Поля, що зберігаються: - `enabled` - `provider` -- `maxLength` (поріг зведення; за замовчуванням 1500 символів) +- `maxLength` (поріг підсумку; за замовчуванням 1500 символів) - `summarize` (за замовчуванням `true`) Вони перевизначають `messages.tts.*` для цього хоста. -## Формати виводу (фіксовані) +## Вихідні формати (фіксовані) -- **Feishu / Matrix / Telegram / WhatsApp**: відповіді голосовими повідомленнями віддають перевагу Opus (`opus_48000_64` від ElevenLabs, `opus` від OpenAI). +- **Feishu / Matrix / Telegram / WhatsApp**: для відповідей voice-note перевага надається Opus (`opus_48000_64` від ElevenLabs, `opus` від OpenAI). - 48 кГц / 64 кбіт/с — хороший компроміс для голосових повідомлень. -- **Feishu**: коли відповідь голосовим повідомленням створюється як MP3/WAV/M4A або в іншому - імовірному форматі аудіофайлу, плагін Feishu перекодовує її в 48 кГц Ogg/Opus за допомогою +- **Feishu**: коли відповідь voice-note створюється як MP3/WAV/M4A або інший + імовірний аудіофайл, плагін Feishu перекодовує її в 48 кГц Ogg/Opus за допомогою `ffmpeg` перед надсиланням нативної бульбашки `audio`. Якщо перетворення не вдається, Feishu отримує оригінальний файл як вкладення. - **Інші канали**: MP3 (`mp3_44100_128` від ElevenLabs, `mp3` від OpenAI). - - 44,1 кГц / 128 кбіт/с — стандартний баланс для чіткості мовлення. -- **MiniMax**: MP3 (модель `speech-2.8-hd`, частота дискретизації 32 кГц) для звичайних аудіовкладень. Для цілей голосових повідомлень, таких як Feishu і Telegram, OpenClaw перекодовує MP3 від MiniMax у 48 кГц Opus за допомогою `ffmpeg` перед доставкою. -- **Google Gemini**: Gemini API TTS повертає необроблений 24 кГц PCM. OpenClaw обгортає його у WAV для аудіовкладень і повертає PCM напряму для Talk/телефонії. Нативний формат голосових повідомлень Opus цим шляхом не підтримується. -- **Gradium**: WAV для аудіовкладень, Opus для цілей голосових повідомлень і `ulaw_8000` на 8 кГц для телефонії. -- **xAI**: MP3 за замовчуванням; `responseFormat` може бути `mp3`, `wav`, `pcm`, `mulaw` або `alaw`. OpenClaw використовує пакетну REST-кінцеву точку xAI TTS і повертає завершене аудіовкладення; потоковий TTS WebSocket xAI цим шляхом постачальника не використовується. Нативний формат голосових повідомлень Opus цим шляхом не підтримується. + - 44,1 кГц / 128 кбіт/с — типовий баланс для чіткості мовлення. +- **MiniMax**: MP3 (модель `speech-2.8-hd`, частота дискретизації 32 кГц) для звичайних аудіовкладень. Для цілей voice-note, таких як Feishu і Telegram, OpenClaw перекодовує MP3 від MiniMax у 48 кГц Opus за допомогою `ffmpeg` перед доставленням. +- **Xiaomi MiMo**: MP3 за замовчуванням або WAV, якщо налаштовано. Для цілей voice-note, таких як Feishu і Telegram, OpenClaw перекодовує вихід Xiaomi у 48 кГц Opus за допомогою `ffmpeg` перед доставленням. +- **Google Gemini**: Gemini API TTS повертає необроблений PCM 24 кГц. OpenClaw обгортає його у WAV для аудіовкладень і повертає PCM безпосередньо для Talk/telephony. Нативний формат voice-note Opus цим шляхом не підтримується. +- **Gradium**: WAV для аудіовкладень, Opus для цілей voice-note і `ulaw_8000` на 8 кГц для telephony. +- **xAI**: MP3 за замовчуванням; `responseFormat` може бути `mp3`, `wav`, `pcm`, `mulaw` або `alaw`. OpenClaw використовує пакетну REST-кінцеву точку TTS від xAI і повертає завершене аудіовкладення; потоковий TTS WebSocket від xAI не використовується цим шляхом постачальника. Нативний формат voice-note Opus цим шляхом не підтримується. - **Microsoft**: використовує `microsoft.outputFormat` (за замовчуванням `audio-24khz-48kbitrate-mono-mp3`). - Вбудований транспорт приймає `outputFormat`, але сервіс підтримує не всі формати. - - Значення формату виводу відповідають форматам виводу Microsoft Speech (включно з Ogg/WebM Opus). + - Значення вихідного формату відповідають Microsoft Speech output formats (включно з Ogg/WebM Opus). - Telegram `sendVoice` приймає OGG/MP3/M4A; використовуйте OpenAI/ElevenLabs, якщо вам потрібні гарантовані голосові повідомлення Opus. - - Якщо налаштований формат виводу Microsoft не спрацьовує, OpenClaw повторює спробу з MP3. + - Якщо налаштований вихідний формат Microsoft не спрацьовує, OpenClaw повторює спробу з MP3. -Формати виводу OpenAI/ElevenLabs фіксовані для кожного каналу (див. вище). +Вихідні формати OpenAI/ElevenLabs фіксовані для кожного каналу (див. вище). ## Поведінка автоматичного TTS -Коли цю функцію ввімкнено, OpenClaw: +Коли функцію ввімкнено, OpenClaw: - пропускає TTS, якщо відповідь уже містить медіа або директиву `MEDIA:`. - пропускає дуже короткі відповіді (< 10 символів). -- створює зведення для довгих відповідей, якщо це ввімкнено, за допомогою `agents.defaults.model.primary` (або `summaryModel`). +- підсумовує довгі відповіді, коли це ввімкнено, за допомогою `agents.defaults.model.primary` (або `summaryModel`). - додає згенероване аудіо до відповіді. -Якщо відповідь перевищує `maxLength`, а зведення вимкнене (або немає API-ключа для -моделі зведення), аудіо -пропускається і надсилається звичайна текстова відповідь. +Якщо відповідь перевищує `maxLength`, а підсумок вимкнено (або немає API-ключа для +моделі підсумку), аудіо +пропускається, і надсилається звичайна текстова відповідь. ## Схема потоку ``` -Reply -> TTS enabled? - no -> send text - yes -> has media / MEDIA: / short? - yes -> send text - no -> length > limit? - no -> TTS -> attach audio - yes -> summary enabled? - no -> send text - yes -> summarize (summaryModel or agents.defaults.model.primary) - -> TTS -> attach audio +Відповідь -> TTS увімкнено? + ні -> надіслати текст + так -> є медіа / MEDIA: / коротко? + так -> надіслати текст + ні -> довжина > ліміт? + ні -> TTS -> прикріпити аудіо + так -> підсумок увімкнено? + ні -> надіслати текст + так -> підсумувати (`summaryModel` або `agents.defaults.model.primary`) + -> TTS -> прикріпити аудіо ``` ## Використання команд зі слешем Є одна команда: `/tts`. -Докладніше про ввімкнення див. у [Командах зі слешем](/uk/tools/slash-commands). +Деталі ввімкнення див. у [Команди зі слешем](/uk/tools/slash-commands). -Примітка для Discord: `/tts` — це вбудована команда Discord, тому OpenClaw реєструє -там `/voice` як нативну команду. Текстовий формат `/tts ...` усе одно працює. +Примітка щодо Discord: `/tts` — це вбудована команда Discord, тому OpenClaw реєструє +там `/voice` як нативну команду. Текстова команда `/tts ...` усе одно працює. ``` /tts off @@ -565,28 +603,28 @@ Reply -> TTS enabled? Примітки: -- Команди вимагають авторизованого відправника (правила allowlist/owner усе ще застосовуються). +- Команди потребують авторизованого відправника (правила allowlist/owner також застосовуються). - Має бути ввімкнено `commands.text` або реєстрацію нативних команд. - Конфігурація `messages.tts.auto` приймає `off|always|inbound|tagged`. -- `/tts on` записує локальну перевагу TTS як `always`; `/tts off` записує її як `off`. -- Використовуйте конфігурацію, якщо вам потрібні типові значення `inbound` або `tagged`. -- `limit` і `summary` зберігаються в локальних налаштуваннях, а не в основній конфігурації. +- `/tts on` записує локальне налаштування TTS як `always`; `/tts off` записує його як `off`. +- Використовуйте конфігурацію, якщо потрібні типові значення `inbound` або `tagged`. +- `limit` і `summary` зберігаються в локальних prefs, а не в основній конфігурації. - `/tts audio` генерує одноразову аудіовідповідь (не вмикає TTS). -- `/tts status` містить інформацію про резервне перемикання для останньої спроби: +- `/tts status` містить видимість резервного перемикання для останньої спроби: - успішне резервне перемикання: `Fallback: -> ` плюс `Attempts: ...` - помилка: `Error: ...` плюс `Attempts: ...` - - докладна діагностика: `Attempt details: provider:outcome(reasonCode) latency` -- Збої API OpenAI та ElevenLabs тепер включають розібрані деталі помилки постачальника та ідентифікатор запиту (коли його повертає постачальник), що відображається в помилках/журналах TTS. + - детальна діагностика: `Attempt details: provider:outcome(reasonCode) latency` +- Збої API OpenAI і ElevenLabs тепер включають розібрані деталі помилки постачальника та request id (коли постачальник його повертає), які відображаються в помилках/журналах TTS. ## Інструмент агента -Інструмент `tts` перетворює текст на мовлення і повертає аудіовкладення для -доставки у відповіді. Коли канал — це Feishu, Matrix, Telegram або WhatsApp, -аудіо доставляється як голосове повідомлення, а не як вкладення файлу. -Feishu може перекодовувати не-Opus вивід TTS на цьому шляху, якщо доступний +Інструмент `tts` перетворює текст на мовлення та повертає аудіовкладення для +доставлення у відповіді. Коли каналом є Feishu, Matrix, Telegram або WhatsApp, +аудіо доставляється як голосове повідомлення, а не як файлове вкладення. +Feishu може перекодовувати не-Opus вихід TTS на цьому шляху, коли доступний `ffmpeg`. -Він приймає необов’язкові поля `channel` і `timeoutMs`; `timeoutMs` — -це тайм-аут запиту до постачальника для одного виклику в мілісекундах. +Він приймає необов’язкові поля `channel` і `timeoutMs`; `timeoutMs` — це +тайм-аут запиту до постачальника для окремого виклику в мілісекундах. ## Gateway RPC