Text-to-speech (TTS)
OpenClaw може перетворювати вихідні відповіді на аудіо за допомогою ElevenLabs, Microsoft, MiniMax або OpenAI. Це працює всюди, де OpenClaw може надсилати аудіо.Підтримувані сервіси
- ElevenLabs (основний або резервний провайдер)
- Microsoft (основний або резервний провайдер; поточна вбудована реалізація використовує
node-edge-tts) - MiniMax (основний або резервний провайдер; використовує API T2A v2)
- OpenAI (основний або резервний провайдер; також використовується для summary)
Примітки щодо мовлення Microsoft
Поточний вбудований провайдер мовлення Microsoft використовує онлайн-сервіс нейронного TTS Microsoft Edge через бібліотекуnode-edge-tts. Це хостований сервіс (не
локальний), який використовує кінцеві точки Microsoft і не потребує API key.
node-edge-tts надає параметри конфігурації мовлення та формати виводу, але
не всі параметри підтримуються сервісом. Застаріла конфігурація та вхід директив
із edge усе ще працюють і нормалізуються до microsoft.
Оскільки цей шлях використовує публічний вебсервіс без опублікованого SLA чи квоти,
розглядайте його як best-effort. Якщо вам потрібні гарантовані ліміти та підтримка, використовуйте OpenAI
або ElevenLabs.
Необов’язкові ключі
Якщо ви хочете використовувати OpenAI, ElevenLabs або MiniMax:ELEVENLABS_API_KEY(абоXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel (або agents.defaults.model.primary),
тому якщо ви вмикаєте summary, цей провайдер також має бути автентифікований.
Посилання на сервіси
- Посібник OpenAI Text-to-Speech
- Довідник OpenAI Audio API
- ElevenLabs Text to Speech
- Автентифікація ElevenLabs
- API MiniMax T2A v2
- node-edge-tts
- Формати виводу Microsoft Speech
Чи ввімкнено це типово?
Ні. Auto‑TTS вимкнено типово. Увімкніть його в конфігурації черезmessages.tts.auto або для окремої сесії через /tts always (псевдонім: /tts on).
Коли messages.tts.provider не задано, OpenClaw вибирає перший налаштований
провайдер мовлення в порядку auto-select реєстру.
Конфігурація
Конфігурація TTS міститься вmessages.tts у openclaw.json.
Повна схема наведена в Gateway configuration.
Мінімальна конфігурація (увімкнення + провайдер)
OpenAI як основний із резервним ElevenLabs
Microsoft як основний (без API key)
MiniMax як основний
Вимкнення мовлення Microsoft
Власні ліміти + шлях до prefs
Відповідати аудіо лише після вхідного голосового повідомлення
Вимкнення auto-summary для довгих відповідей
Примітки щодо полів
auto: режим auto‑TTS (off,always,inbound,tagged).inboundнадсилає аудіо лише після вхідного голосового повідомлення.taggedнадсилає аудіо лише тоді, коли відповідь містить теги[[tts]].
enabled: застарілий перемикач (doctor переносить його доauto).mode:"final"(типово) або"all"(включає відповіді інструментів/блоків).provider: id провайдера мовлення, наприклад"elevenlabs","microsoft","minimax"або"openai"(резервний варіант вибирається автоматично).- Якщо
providerне задано, OpenClaw використовує перший налаштований провайдер мовлення в порядку auto-select реєстру. - Застаріле
provider: "edge"усе ще працює й нормалізується доmicrosoft. summaryModel: необов’язкова дешева модель для auto-summary; типовоagents.defaults.model.primary.- Приймає
provider/modelабо налаштований псевдонім моделі.
- Приймає
modelOverrides: дозволяє моделі виводити директиви TTS (типово ввімкнено).allowProviderтипово дорівнюєfalse(перемикання провайдера вмикається окремо).
providers.<id>: налаштування конкретного провайдера за id провайдера мовлення.- Застарілі прямі блоки провайдерів (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) автоматично переносяться доmessages.tts.providers.<id>під час завантаження. maxTextLength: жорсткий ліміт для вхідного тексту TTS (символи)./tts audioзавершується помилкою, якщо його перевищено.timeoutMs: тайм-аут запиту (мс).prefsPath: перевизначає локальний шлях до JSON prefs (provider/limit/summary).- Значення
apiKeyрезервно беруться зі змінних середовища (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_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-compatible кінцеві точки TTS, тому дозволені власні назви моделей і голосів.
- Порядок визначення:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = звичайно)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: дволітерний 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).providers.microsoft.enabled: дозволяє використання мовлення Microsoft (типовоtrue; без API key).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.saveSubtitles: записує JSON-субтитри поруч з аудіофайлом.providers.microsoft.proxy: URL-адреса проксі для запитів мовлення Microsoft.providers.microsoft.timeoutMs: перевизначення тайм-ауту запиту (мс).edge.*: застарілий псевдонім для тих самих налаштувань Microsoft.
Перевизначення, керовані моделлю (типово ввімкнені)
Типово модель може виводити директиви TTS для однієї окремої відповіді. Колиmessages.tts.auto має значення tagged, ці директиви потрібні для запуску аудіо.
Коли це ввімкнено, модель може виводити директиви [[tts:...]] для перевизначення голосу
для однієї відповіді, а також необов’язковий блок [[tts:text]]...[[/tts:text]],
щоб додати виразні теги (сміх, підказки до співу тощо), які мають з’являтися лише в
аудіо.
Директиви provider=... ігноруються, якщо modelOverrides.allowProvider: true не ввімкнено.
Приклад payload відповіді:
provider(id зареєстрованого провайдера мовлення, наприкладopenai,elevenlabs,minimaxабоmicrosoft; потребуєallowProvider: true)voice(голос OpenAI) абоvoiceId(ElevenLabs / MiniMax)model(модель OpenAI TTS, id моделі ElevenLabs або модель MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(гучність MiniMax, 0-10)pitch(тон MiniMax, -12 до 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Налаштування для окремого користувача
Команди slash записують локальні перевизначення доprefsPath (типово:
~/.openclaw/settings/tts.json, можна перевизначити через OPENCLAW_TTS_PREFS або
messages.tts.prefsPath).
Поля, що зберігаються:
enabledprovidermaxLength(поріг для summary; типово 1500 символів)summarize(типовоtrue)
messages.tts.* для цього хоста.
Формати виводу (фіксовані)
- Feishu / Matrix / Telegram / WhatsApp: голосове повідомлення Opus (
opus_48000_64від ElevenLabs,opusвід OpenAI).- 48 кГц / 64 кбіт/с — хороший компроміс для голосових повідомлень.
- Інші канали: MP3 (
mp3_44100_128від ElevenLabs,mp3від OpenAI).- 44.1 кГц / 128 кбіт/с — типовий баланс для чіткості мовлення.
- MiniMax: MP3 (модель
speech-2.8-hd, частота дискретизації 32 кГц). Формат голосових нотаток нативно не підтримується; використовуйте OpenAI або ElevenLabs для гарантованих голосових повідомлень Opus. - Microsoft: використовує
microsoft.outputFormat(типовоaudio-24khz-48kbitrate-mono-mp3).- Вбудований транспорт приймає
outputFormat, але не всі формати доступні в сервісі. - Значення форматів виводу відповідають форматам виводу Microsoft Speech (включно з Ogg/WebM Opus).
sendVoiceу Telegram приймає OGG/MP3/M4A; використовуйте OpenAI/ElevenLabs, якщо вам потрібні гарантовані голосові повідомлення Opus.- Якщо налаштований формат виводу Microsoft не спрацьовує, OpenClaw повторює спробу з MP3.
- Вбудований транспорт приймає
Поведінка Auto-TTS
Коли це ввімкнено, OpenClaw:- пропускає TTS, якщо відповідь уже містить медіа або директиву
MEDIA:. - пропускає дуже короткі відповіді (< 10 символів).
- виконує summary довгих відповідей, якщо це ввімкнено, за допомогою
agents.defaults.model.primary(абоsummaryModel). - додає згенероване аудіо до відповіді.
maxLength, а summary вимкнено (або немає API key для
моделі summary), аудіо
пропускається, і надсилається звичайна текстова відповідь.
Діаграма потоку
Використання slash-команди
Є одна команда:/tts.
Подробиці ввімкнення див. у Slash commands.
Примітка для Discord: /tts — це вбудована команда Discord, тому OpenClaw реєструє там
/voice як нативну команду. Текстовий варіант /tts ... усе ще працює.
- Команди потребують авторизованого відправника (правила allowlist/owner усе ще застосовуються).
- Має бути ввімкнено
commands.textабо реєстрацію нативних команд. off|always|inbound|tagged— це перемикачі для окремої сесії (/tts onє псевдонімом для/tts always).limitіsummaryзберігаються в локальних prefs, а не в основній конфігурації./tts audioгенерує одноразову аудіовідповідь (не вмикає TTS постійно)./tts statusмістить видимість fallback для останньої спроби:- успішний fallback:
Fallback: <primary> -> <used>плюсAttempts: ... - помилка:
Error: ...плюсAttempts: ... - докладна діагностика:
Attempt details: provider:outcome(reasonCode) latency
- успішний fallback:
- Помилки API OpenAI та ElevenLabs тепер містять розібрані деталі помилки провайдера та id запиту (коли провайдер їх повертає), які відображаються в помилках/логах TTS.
Інструмент агента
Інструментtts перетворює текст на мовлення і повертає аудіовкладення для
доставки у відповіді. Коли каналом є Feishu, Matrix, Telegram або WhatsApp,
аудіо доставляється як голосове повідомлення, а не як файлове вкладення.
Gateway RPC
Методи Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers