Text-to-speech (TTS)
OpenClaw dapat mengubah balasan outbound menjadi audio menggunakan ElevenLabs, Microsoft, MiniMax, atau OpenAI. Ini berfungsi di mana pun OpenClaw dapat mengirim audio.Layanan yang didukung
- ElevenLabs (provider utama atau fallback)
- Microsoft (provider utama atau fallback; implementasi bundled saat ini menggunakan
node-edge-tts) - MiniMax (provider utama atau fallback; menggunakan API T2A v2)
- OpenAI (provider utama atau fallback; juga digunakan untuk ringkasan)
Catatan speech Microsoft
Provider speech Microsoft bundled saat ini menggunakan layanan TTS neural online Microsoft Edge melalui librarynode-edge-tts. Ini adalah layanan terhosting (bukan lokal), menggunakan endpoint Microsoft, dan tidak memerlukan API key.
node-edge-tts mengekspos opsi konfigurasi speech dan format output, tetapi
tidak semua opsi didukung oleh layanan. Input config dan directive legacy yang
menggunakan edge tetap berfungsi dan dinormalisasi menjadi microsoft.
Karena jalur ini adalah layanan web publik tanpa SLA atau kuota yang dipublikasikan,
perlakukan sebagai best-effort. Jika Anda memerlukan batas dan dukungan yang terjamin, gunakan OpenAI
atau ElevenLabs.
Key opsional
Jika Anda ingin OpenAI, ElevenLabs, atau MiniMax:ELEVENLABS_API_KEY(atauXI_API_KEY)MINIMAX_API_KEYOPENAI_API_KEY
summaryModel yang dikonfigurasi (atau agents.defaults.model.primary),
jadi provider tersebut juga harus diautentikasi jika Anda mengaktifkan ringkasan.
Tautan layanan
- Panduan OpenAI Text-to-Speech
- Referensi API Audio OpenAI
- ElevenLabs Text to Speech
- Autentikasi ElevenLabs
- API MiniMax T2A v2
- node-edge-tts
- Format output Microsoft Speech
Apakah ini aktif secara default?
Tidak. Auto‑TTS nonaktif secara default. Aktifkan di config denganmessages.tts.auto atau per sesi dengan /tts always (alias: /tts on).
Ketika messages.tts.provider tidak disetel, OpenClaw memilih provider
speech pertama yang dikonfigurasi dalam urutan auto-select registry.
Config
Config TTS berada di bawahmessages.tts di openclaw.json.
Skema lengkap ada di Konfigurasi Gateway.
Config minimal (aktifkan + provider)
OpenAI utama dengan fallback ElevenLabs
Microsoft utama (tanpa API key)
MiniMax utama
Nonaktifkan speech Microsoft
Batas kustom + path preferensi
Hanya balas dengan audio setelah pesan suara masuk
Nonaktifkan auto-summary untuk balasan panjang
Catatan tentang field
auto: mode auto‑TTS (off,always,inbound,tagged).inboundhanya mengirim audio setelah pesan suara masuk.taggedhanya mengirim audio saat balasan menyertakan tag[[tts]].
enabled: toggle legacy (doctor memigrasikan ini keauto).mode:"final"(default) atau"all"(termasuk balasan tool/block).provider: id provider speech seperti"elevenlabs","microsoft","minimax", atau"openai"(fallback otomatis).- Jika
providertidak disetel, OpenClaw menggunakan provider speech pertama yang dikonfigurasi dalam urutan auto-select registry. - Legacy
provider: "edge"tetap berfungsi dan dinormalisasi menjadimicrosoft. summaryModel: model murah opsional untuk auto-summary; default keagents.defaults.model.primary.- Menerima
provider/modelatau alias model yang dikonfigurasi.
- Menerima
modelOverrides: memungkinkan model mengeluarkan directive TTS (aktif secara default).allowProviderdefault kefalse(pergantian provider perlu opt-in).
providers.<id>: pengaturan milik provider yang diberi key menurut id provider speech.- Blok provider langsung legacy (
messages.tts.openai,messages.tts.elevenlabs,messages.tts.microsoft,messages.tts.edge) dimigrasikan otomatis kemessages.tts.providers.<id>saat load. maxTextLength: batas keras untuk input TTS (karakter)./tts audiogagal jika melebihi.timeoutMs: batas waktu request (ms).prefsPath: override path JSON preferensi lokal (provider/limit/summary).- Nilai
apiKeyfallback ke env vars (ELEVENLABS_API_KEY/XI_API_KEY,MINIMAX_API_KEY,OPENAI_API_KEY). providers.elevenlabs.baseUrl: override base URL API ElevenLabs.providers.openai.baseUrl: override endpoint TTS OpenAI.- Urutan resolusi:
messages.tts.providers.openai.baseUrl->OPENAI_TTS_BASE_URL->https://api.openai.com/v1 - Nilai non-default diperlakukan sebagai endpoint TTS yang kompatibel dengan OpenAI, sehingga nama model dan voice kustom diterima.
- Urutan resolusi:
providers.elevenlabs.voiceSettings:stability,similarityBoost,style:0..1useSpeakerBoost:true|falsespeed:0.5..2.0(1.0 = normal)
providers.elevenlabs.applyTextNormalization:auto|on|offproviders.elevenlabs.languageCode: ISO 639-1 2 huruf (mis.en,de)providers.elevenlabs.seed: integer0..4294967295(determinisme best-effort)providers.minimax.baseUrl: override base URL API MiniMax (defaulthttps://api.minimax.io, env:MINIMAX_API_HOST).providers.minimax.model: model TTS (defaultspeech-2.8-hd, env:MINIMAX_TTS_MODEL).providers.minimax.voiceId: pengenal voice (defaultEnglish_expressive_narrator, env:MINIMAX_TTS_VOICE_ID).providers.minimax.speed: kecepatan pemutaran0.5..2.0(default 1.0).providers.minimax.vol: volume(0, 10](default 1.0; harus lebih besar dari 0).providers.minimax.pitch: pergeseran pitch-12..12(default 0).providers.microsoft.enabled: izinkan penggunaan speech Microsoft (defaulttrue; tanpa API key).providers.microsoft.voice: nama voice neural Microsoft (mis.en-US-MichelleNeural).providers.microsoft.lang: kode bahasa (mis.en-US).providers.microsoft.outputFormat: format output Microsoft (mis.audio-24khz-48kbitrate-mono-mp3).- Lihat format output Microsoft Speech untuk nilai yang valid; tidak semua format didukung oleh transport bundled berbasis Edge.
providers.microsoft.rate/providers.microsoft.pitch/providers.microsoft.volume: string persen (mis.+10%,-5%).providers.microsoft.saveSubtitles: tulis subtitle JSON di samping file audio.providers.microsoft.proxy: URL proxy untuk request speech Microsoft.providers.microsoft.timeoutMs: override batas waktu request (ms).edge.*: alias legacy untuk pengaturan Microsoft yang sama.
Override berbasis model (aktif secara default)
Secara default, model dapat mengeluarkan directive TTS untuk satu balasan. Ketikamessages.tts.auto adalah tagged, directive ini diperlukan untuk memicu audio.
Saat diaktifkan, model dapat mengeluarkan directive [[tts:...]] untuk mengoverride voice
untuk satu balasan, ditambah blok [[tts:text]]...[[/tts:text]] opsional untuk
memberikan tag ekspresif (tawa, isyarat bernyanyi, dll.) yang seharusnya hanya muncul di
audio.
Directive provider=... diabaikan kecuali modelOverrides.allowProvider: true.
Contoh payload balasan:
provider(id provider speech terdaftar, misalnyaopenai,elevenlabs,minimax, ataumicrosoft; memerlukanallowProvider: true)voice(voice OpenAI) atauvoiceId(ElevenLabs / MiniMax)model(model TTS OpenAI, id model ElevenLabs, atau model MiniMax)stability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume MiniMax, 0-10)pitch(pitch MiniMax, -12 sampai 12)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Preferensi per pengguna
Slash command menulis override lokal keprefsPath (default:
~/.openclaw/settings/tts.json, override dengan OPENCLAW_TTS_PREFS atau
messages.tts.prefsPath).
Field yang disimpan:
enabledprovidermaxLength(ambang ringkasan; default 1500 karakter)summarize(defaulttrue)
messages.tts.* untuk host tersebut.
Format output (tetap)
- Feishu / Matrix / Telegram / WhatsApp: pesan suara Opus (
opus_48000_64dari ElevenLabs,opusdari OpenAI).- 48kHz / 64kbps adalah kompromi yang baik untuk pesan suara.
- Channel lain: MP3 (
mp3_44100_128dari ElevenLabs,mp3dari OpenAI).- 44.1kHz / 128kbps adalah keseimbangan default untuk kejernihan speech.
- MiniMax: MP3 (model
speech-2.8-hd, sample rate 32kHz). Format voice-note tidak didukung secara native; gunakan OpenAI atau ElevenLabs untuk pesan suara Opus yang terjamin. - Microsoft: menggunakan
microsoft.outputFormat(defaultaudio-24khz-48kbitrate-mono-mp3).- Transport bundled menerima
outputFormat, tetapi tidak semua format tersedia dari layanan. - Nilai format output mengikuti format output Microsoft Speech (termasuk Ogg/WebM Opus).
- Telegram
sendVoicemenerima OGG/MP3/M4A; gunakan OpenAI/ElevenLabs jika Anda memerlukan pesan suara Opus yang terjamin. - Jika format output Microsoft yang dikonfigurasi gagal, OpenClaw mencoba ulang dengan MP3.
- Transport bundled menerima
Perilaku auto-TTS
Saat diaktifkan, OpenClaw:- melewati TTS jika balasan sudah berisi media atau directive
MEDIA:. - melewati balasan yang sangat singkat (< 10 karakter).
- meringkas balasan panjang saat diaktifkan menggunakan
agents.defaults.model.primary(atausummaryModel). - melampirkan audio yang dihasilkan ke balasan.
maxLength dan ringkasan nonaktif (atau tidak ada API key untuk
model ringkasan), audio
dilewati dan balasan teks normal dikirim.
Diagram alur
Penggunaan slash command
Ada satu command:/tts.
Lihat Slash commands untuk detail pengaktifan.
Catatan Discord: /tts adalah command bawaan Discord, jadi OpenClaw mendaftarkan
/voice sebagai command native di sana. Teks /tts ... tetap berfungsi.
- Command memerlukan pengirim yang berwenang (aturan allowlist/owner tetap berlaku).
commands.textatau pendaftaran command native harus diaktifkan.off|always|inbound|taggedadalah toggle per sesi (/tts onadalah alias untuk/tts always).limitdansummarydisimpan dalam preferensi lokal, bukan config utama./tts audiomenghasilkan balasan audio satu kali (tidak mengaktifkan TTS)./tts statusmencakup visibilitas fallback untuk percobaan terbaru:- fallback berhasil:
Fallback: <primary> -> <used>plusAttempts: ... - gagal:
Error: ...plusAttempts: ... - diagnostik terperinci:
Attempt details: provider:outcome(reasonCode) latency
- fallback berhasil:
- Kegagalan API OpenAI dan ElevenLabs sekarang menyertakan detail error provider yang sudah diparse dan request id (jika dikembalikan oleh provider), yang ditampilkan dalam error/log TTS.
Tool agen
Tooltts mengubah teks menjadi speech dan mengembalikan lampiran audio untuk
pengiriman balasan. Ketika channel adalah Feishu, Matrix, Telegram, atau WhatsApp,
audio dikirim sebagai pesan suara, bukan lampiran file.
Gateway RPC
Method Gateway:tts.statustts.enabletts.disabletts.converttts.setProvidertts.providers