Tools
Teks-ke-ucapan
OpenClaw mengonversi balasan keluar menjadi audio melalui 14 penyedia ucapan: pesan suara native di Feishu, Matrix, Telegram, dan WhatsApp; lampiran audio di tempat lain; serta stream PCM/Ulaw untuk telefoni dan Talk.
TTS adalah bagian keluaran ucapan dari mode stt-tts Talk (talk.speak menggunakan
jalur sintesis yang sama). Sesi Talk realtime yang native dari penyedia menyintesis
ucapan di dalam penyedia waktu nyata; sesi transcription tidak pernah
menyintesis balasan suara asisten.
Mulai cepat
Pilih penyedia
OpenAI dan ElevenLabs adalah opsi terkelola yang paling andal. Microsoft dan CLI Lokal berfungsi tanpa kunci API. Lihat matriks penyedia untuk daftar lengkap.
Atur kunci API
Ekspor variabel lingkungan untuk penyedia Anda (misalnya OPENAI_API_KEY,
ELEVENLABS_API_KEY). Microsoft dan CLI Lokal tidak memerlukan kunci.
Aktifkan dalam konfigurasi
Atur messages.tts.auto: "always" dan messages.tts.provider:
{ messages: { tts: { auto: "always", provider: "elevenlabs", }, },}Coba dalam obrolan
/tts status menampilkan status saat ini. /tts audio Hello from OpenClaw
mengirim balasan audio satu kali.
Penyedia yang didukung
| Penyedia | Autentikasi | Catatan |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (juga AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
Keluaran catatan suara Ogg/Opus native dan telefoni. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS yang kompatibel dengan OpenAI. Defaultnya hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY atau XI_API_KEY |
Kloning suara, multibahasa, deterministik melalui seed; dialirkan untuk pemutaran suara Discord. |
| Google Gemini | GEMINI_API_KEY atau GOOGLE_API_KEY |
TTS batch Gemini API; memahami persona melalui promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Keluaran catatan suara dan telefoni. |
| Inworld | INWORLD_API_KEY |
API TTS streaming. Catatan suara Opus native dan telefoni PCM. |
| CLI Lokal | tidak ada | Menjalankan perintah TTS lokal yang dikonfigurasi. |
| Microsoft | tidak ada | TTS neural Edge publik melalui node-edge-tts. Upaya terbaik, tanpa SLA. |
| MiniMax | MINIMAX_API_KEY (atau Paket Token: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. Defaultnya speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
Juga digunakan untuk ringkasan otomatis; mendukung persona instructions. |
| OpenRouter | OPENROUTER_API_KEY (dapat menggunakan kembali models.providers.openrouter.apiKey) |
Model default hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY atau BYTEPLUS_SEED_SPEECH_API_KEY (AppID/token lama: VOLCENGINE_TTS_APPID/_TOKEN) |
API HTTP BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Penyedia bersama untuk gambar, video, dan ucapan. |
| xAI | XAI_API_KEY |
TTS batch xAI. Catatan suara Opus native tidak didukung. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS MiMo melalui penyelesaian obrolan Xiaomi. |
Jika beberapa penyedia dikonfigurasi, penyedia yang dipilih digunakan terlebih dahulu dan
penyedia lainnya menjadi opsi fallback. Ringkasan otomatis menggunakan summaryModel (atau
agents.defaults.model.primary), sehingga penyedia tersebut juga harus diautentikasi
jika ringkasan tetap diaktifkan.
Konfigurasi
Konfigurasi TTS berada di bawah messages.tts dalam ~/.openclaw/openclaw.json. Pilih
preset dan sesuaikan blok penyedia. Kolom speakerVoice/speakerVoiceId
yang ditampilkan di bawah bersifat kanonis; nama kolom voice/voiceId/
voiceName milik setiap penyedia tetap berfungsi sebagai alias lama.
Azure Speech
{messages: {tts: { auto: "always", provider: "azure-speech", providers: { "azure-speech": { apiKey: "${AZURE_SPEECH_KEY}", region: "eastus", speakerVoice: "en-US-JennyNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", voiceNoteOutputFormat: "ogg-24khz-16bit-mono-opus", }, },},},}ElevenLabs
{messages: {tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{messages: {tts: { auto: "always", provider: "google", providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", speakerVoice: "Kore", // Perintah gaya bahasa alami opsional: // audioProfile: "Bicaralah dengan nada tenang seperti pembawa acara podcast.", // speakerName: "Alex", }, },},},}Gradium
{messages: {tts: { auto: "always", provider: "gradium", providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{messages: {tts: { auto: "always", provider: "inworld", providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", speakerVoiceId: "Sarah", temperature: 0.7, }, },},},}CLI Lokal
{messages: {tts: { auto: "always", provider: "tts-local-cli", providers: { "tts-local-cli": { command: "say", args: ["-o", "{{OutputPath}}", "{{Text}}"], outputFormat: "wav", timeoutMs: 120000, }, },},},}Microsoft (tanpa kunci)
{messages: {tts: { auto: "always", provider: "microsoft", providers: { microsoft: { enabled: true, speakerVoice: "en-US-MichelleNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", rate: "+0%", pitch: "+0%", }, },},},}MiniMax
{messages: {tts: { auto: "always", provider: "minimax", providers: { minimax: { apiKey: "${MINIMAX_API_KEY}", model: "speech-2.8-hd", speakerVoiceId: "English_expressive_narrator", speed: 1.0, vol: 1.0, pitch: 0, }, },},},}OpenAI + ElevenLabs
{messages: {tts: { auto: "always", provider: "openai", summaryModel: "openai/gpt-4.1-mini", modelOverrides: { enabled: true }, providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts", speakerVoice: "alloy", }, elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0 }, applyTextNormalization: "auto", languageCode: "en", }, },},},}OpenRouter
{messages: {tts: { auto: "always", provider: "openrouter", providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{messages: {tts: { auto: "always", provider: "volcengine", providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", speakerVoice: "en_female_anna_mars_bigtts", }, },},},}xAI
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{messages: {tts: { auto: "always", provider: "xiaomi", providers: { xiaomi: { apiKey: "${XIAOMI_API_KEY}", model: "mimo-v2.5-tts", speakerVoice: "mimo_default", format: "mp3", }, },},},}Untuk Xiaomi mimo-v2.5-tts-voicedesign, hilangkan speakerVoice dan atur style menjadi
perintah desain suara. OpenClaw mengirim perintah tersebut sebagai pesan TTS user
dan tidak mengirim audio.voice untuk model voicedesign.
Penggantian suara per agen
Gunakan agents.list[].tts ketika satu agen harus berbicara dengan penyedia,
suara, model, persona, atau mode TTS otomatis yang berbeda. Blok agen digabungkan secara mendalam di atas
messages.tts, sehingga kredensial penyedia dapat tetap berada dalam konfigurasi penyedia global:
{ messages: { tts: { auto: "always", provider: "elevenlabs", providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2" }, }, }, }, agents: { list: [ { id: "reader", tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, }, ], },}Untuk menetapkan persona per agen, atur agents.list[].tts.persona bersama konfigurasi
penyedia — pengaturan ini menggantikan messages.tts.persona global hanya untuk agen tersebut.
Urutan prioritas untuk balasan otomatis, /tts audio, /tts status, dan
alat agen tts:
messages.ttsagents.list[].ttsaktif- penggantian saluran, ketika saluran mendukung
channels.<channel>.tts - penggantian akun, ketika saluran meneruskan
channels.<channel>.accounts.<id>.tts - preferensi
/ttslokal untuk host ini - direktif
[[tts:...]]sebaris ketika penggantian model diaktifkan
Penggantian saluran dan akun menggunakan bentuk yang sama dengan messages.tts dan
digabungkan secara mendalam di atas lapisan sebelumnya, sehingga kredensial penyedia bersama dapat tetap berada di
messages.tts, sementara saluran atau akun bot hanya mengubah suara pembicara, model, persona,
atau mode otomatis:
{ messages: { tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { speakerVoice: "shimmer" }, }, }, }, }, }, },}Persona
Persona adalah identitas suara stabil yang dapat diterapkan secara deterministik di berbagai penyedia. Persona dapat memprioritaskan satu penyedia, menentukan maksud prompt yang netral terhadap penyedia, dan membawa pengikatan khusus penyedia untuk suara, model, templat prompt, seed, dan pengaturan suara.
Persona minimal
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narator", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, }, },}Persona lengkap (prompt netral terhadap penyedia)
{ messages: { tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "Alfred", description: "Narator kepala pelayan Inggris yang tenang, hangat, dan jenaka.", provider: "google", fallbackPolicy: "preserve-persona", prompt: { profile: "Kepala pelayan Inggris yang cerdas. Tenang, jenaka, hangat, menawan, ekspresif secara emosional, dan tidak pernah generik.", scene: "Ruang kerja yang tenang pada larut malam. Narasi dengan mikrofon dekat untuk operator tepercaya.", sampleContext: "Pembicara menjawab permintaan teknis pribadi dengan keyakinan yang ringkas dan kehangatan yang jenaka.", style: "Berkelas, bersahaja, sedikit geli.", accent: "Bahasa Inggris Britania.", pacing: "Terukur, dengan jeda dramatis singkat.", constraints: ["Jangan bacakan nilai konfigurasi.", "Jangan jelaskan persona."], }, providers: { google: { model: "gemini-3.1-flash-tts-preview", speakerVoice: "Algieba", promptTemplate: "audio-profile-v1", }, openai: { model: "gpt-4o-mini-tts", speakerVoice: "cedar" }, elevenlabs: { speakerVoiceId: "voice_id", modelId: "eleven_multilingual_v2", seed: 42, voiceSettings: { stability: 0.65, similarityBoost: 0.8, style: 0.25, useSpeakerBoost: true, speed: 0.95, }, }, }, }, }, }, },}Resolusi persona
Persona aktif dipilih secara deterministik:
- Preferensi lokal
/tts persona <id>, jika diatur. messages.tts.persona, jika diatur.- Tanpa persona.
Pemilihan penyedia mendahulukan pengaturan eksplisit:
- Penggantian langsung (CLI, Gateway, Talk, direktif TTS yang diizinkan).
- Preferensi lokal
/tts provider <id>. providermilik persona aktif.messages.tts.provider.- Pemilihan otomatis dari registri.
Untuk setiap percobaan penyedia, OpenClaw menggabungkan konfigurasi dalam urutan berikut:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Penggantian permintaan tepercaya
- Penggantian direktif TTS yang dihasilkan model dan diizinkan
Cara penyedia menggunakan prompt persona
Bidang prompt persona (profile, scene, sampleContext, style, accent,
pacing, constraints) bersifat netral terhadap penyedia. Setiap penyedia menentukan cara
menggunakannya:
Google Gemini
Membungkus bidang prompt persona dalam struktur prompt TTS Gemini hanya ketika
konfigurasi efektif penyedia Google menetapkan promptTemplate: "audio-profile-v1"
atau personaPrompt. Bidang lama audioProfile dan speakerName
tetap ditambahkan di awal sebagai teks prompt khusus Google. Tag audio sebaris seperti
[whispers] atau [laughs] di dalam blok [[tts:text]] dipertahankan
dalam transkrip Gemini; OpenClaw tidak menghasilkan tag tersebut.
OpenAI
Memetakan bidang prompt persona ke bidang permintaan instructions hanya ketika
tidak ada instructions OpenAI eksplisit yang dikonfigurasi. instructions eksplisit
selalu diutamakan.
Penyedia lain
Hanya menggunakan pengikatan persona khusus penyedia di bawah
personas.<id>.providers.<provider>. Bidang prompt persona diabaikan
kecuali penyedia menerapkan pemetaan prompt personanya sendiri.
Kebijakan fallback
fallbackPolicy mengontrol perilaku ketika persona tidak memiliki pengikatan untuk
penyedia yang dicoba:
| Kebijakan | Perilaku |
|---|---|
preserve-persona |
Default. Bidang prompt netral terhadap penyedia tetap tersedia; penyedia dapat menggunakan atau mengabaikannya. |
provider-defaults |
Persona tidak disertakan dalam persiapan prompt untuk percobaan tersebut; penyedia menggunakan default netralnya sementara fallback ke penyedia lain berlanjut. |
fail |
Lewati percobaan penyedia tersebut dengan reasonCode: "not_configured" dan personaBinding: "missing". Penyedia fallback tetap dicoba. |
Seluruh permintaan TTS hanya gagal ketika setiap penyedia yang dicoba dilewati atau gagal.
Pemilihan penyedia sesi Talk memiliki cakupan sesi. Klien Talk harus memilih
ID penyedia, ID model, ID suara, dan lokal dari talk.catalog, lalu meneruskannya
melalui permintaan sesi atau serah terima Talk. Membuka sesi suara tidak boleh
mengubah messages.tts atau default penyedia Talk global.
Direktif yang digerakkan model
Secara default, asisten dapat menghasilkan direktif [[tts:...]] untuk mengganti
suara, model, atau kecepatan untuk satu balasan, ditambah blok opsional
[[tts:text]]...[[/tts:text]] untuk isyarat ekspresif yang hanya boleh muncul dalam
audio:
Ini dia. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](tertawa) Bacakan lagu itu sekali lagi.[[/tts:text]]Ketika messages.tts.auto adalah "tagged", direktif diwajibkan untuk memicu
audio. Pengiriman blok streaming menghapus direktif dari teks yang terlihat sebelum
saluran menerimanya, bahkan ketika direktif terbagi di antara blok yang berdekatan.
provider=... diabaikan kecuali modelOverrides.allowProvider: true. Ketika sebuah
balasan mendeklarasikan provider=..., kunci lain dalam direktif tersebut diurai
hanya oleh penyedia itu; kunci yang tidak didukung dihapus dan dilaporkan sebagai
peringatan direktif TTS.
Kunci direktif yang tersedia:
provider(ID penyedia terdaftar; memerlukanallowProvider: true)speakerVoice/speakerVoiceId(alias lama:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(volume MiniMax,(0, 10])pitch(nada bilangan bulat MiniMax, −12 hingga 12; nilai pecahan dipotong)emotion(tag emosi Volcengine)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
Nonaktifkan penggantian model sepenuhnya:
{ messages: { tts: { modelOverrides: { enabled: false } } } }Izinkan peralihan penyedia sambil mempertahankan konfigurabilitas pengaturan lain:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Perintah garis miring
Perintah tunggal /tts. Di Discord, OpenClaw juga mendaftarkan /voice karena
/tts adalah perintah bawaan Discord — teks /tts ... tetap berfungsi.
/tts off | on | status/tts chat on | off | default/tts latest/tts provider <id>/tts persona <id> | off/tts limit <chars>/tts summary off/tts audio <text>Catatan perilaku:
/tts onmenulis preferensi TTS lokal kealways;/tts offmenulisnya keoff./tts chat on|off|defaultmenulis penggantian TTS otomatis dengan cakupan sesi untuk percakapan saat ini./tts persona <id>menulis preferensi persona lokal;/tts persona offmenghapusnya./tts latestmembaca balasan asisten terbaru dari transkrip sesi saat ini dan mengirimkannya satu kali sebagai audio. Perintah ini hanya menyimpan hash balasan tersebut pada entri sesi untuk mencegah pengiriman suara duplikat./tts audiomenghasilkan balasan audio satu kali (dan tidak mengaktifkan TTS)./tts limit <chars>menerima 100–4096 (4096 adalah batas maksimum keterangan/pesan Telegram); nilai di luar rentang tersebut ditolak.limitdansummarydisimpan dalam preferensi lokal, bukan konfigurasi utama./tts statusmenyertakan diagnostik fallback untuk percobaan terbaru —Fallback: <primary> -> <used>,Attempts: ..., dan detail per percobaan (provider:outcome(reasonCode) latency)./statusmenampilkan mode TTS aktif beserta penyedia, model, suara, dan metadata titik akhir khusus yang telah disanitasi saat TTS diaktifkan.
Preferensi per pengguna
Perintah garis miring menulis penggantian lokal ke prefsPath. Default-nya adalah
~/.openclaw/settings/tts.json; ganti dengan variabel lingkungan OPENCLAW_TTS_PREFS
atau messages.tts.prefsPath.
| Bidang tersimpan | Efek |
|---|---|
auto |
Penggantian otomatis TTS lokal (always, off, …) |
provider |
Penggantian penyedia utama lokal |
persona |
Penggantian persona lokal |
maxLength |
Ambang batas ringkasan/pemotongan (bawaan 1500 karakter, rentang /tts limit 100–4096) |
summarize |
Tombol ringkasan (bawaan true) |
Ini menggantikan konfigurasi efektif dari messages.tts beserta blok
agents.list[].tts aktif untuk host tersebut.
Format keluaran
Pengiriman suara TTS ditentukan oleh kemampuan kanal. Plugin kanal mengiklankan
apakah TTS bergaya suara harus meminta target voice-note native dari penyedia atau
mempertahankan sintesis audio-file normal, serta apakah kanal mentranskode
keluaran non-native sebelum mengirimkannya.
| Target | Format |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Balasan pesan suara mengutamakan Opus (opus_48000_64 dari ElevenLabs, opus dari OpenAI). 48 kHz / 64 kbps menyeimbangkan kejernihan dan ukuran. |
| Kanal lain | MP3 (mp3_44100_128 dari ElevenLabs, mp3 dari OpenAI). 44.1 kHz / 128 kbps adalah keseimbangan bawaan untuk ucapan. |
| Percakapan / telefoni | PCM native penyedia (Inworld 22050 Hz, Google 24 kHz), atau ulaw_8000 dari Gradium untuk telefoni. |
Catatan per penyedia:
- Transkode Feishu / WhatsApp: ketika balasan pesan suara diterima sebagai MP3/WebM/WAV/M4A atau berkas audio lain yang mungkin, Plugin kanal mentranskodenya menjadi Ogg/Opus 48 kHz dengan
ffmpeg(libopus, 64 kbps) sebelum mengirim pesan suara native. WhatsApp mengirim hasilnya melalui payloadaudioBaileys denganptt: truedanaudio/ogg; codecs=opus. Jika transkode gagal: Feishu menangkap galat dan kembali mengirimkan berkas asli sebagai lampiran biasa; WhatsApp tidak memiliki fallback, sehingga pengiriman itu sendiri gagal alih-alih memposting payload PTT yang tidak kompatibel. - MiniMax: MP3 (model
speech-2.8-hd, laju sampel 32 kHz) untuk lampiran audio normal; ditranskode menjadi Opus 48 kHz denganffmpeguntuk target pesan suara yang diiklankan kanal. - Xiaomi MiMo: MP3 secara bawaan, atau WAV jika dikonfigurasi; ditranskode menjadi Opus 48 kHz dengan
ffmpeguntuk target pesan suara yang diiklankan kanal. - CLI lokal: menggunakan
outputFormatyang dikonfigurasi. Target pesan suara dikonversi menjadi Ogg/Opus dan keluaran telefoni dikonversi menjadi PCM mono mentah 16 kHz denganffmpeg. - Google Gemini: mengembalikan PCM mentah 24 kHz. OpenClaw membungkusnya sebagai WAV untuk lampiran audio, mentranskodenya menjadi Opus 48 kHz untuk target pesan suara, dan mengembalikan PCM secara langsung untuk Percakapan/telefoni.
- Gradium: WAV untuk lampiran audio, Opus untuk target pesan suara, dan
ulaw_8000pada 8 kHz untuk telefoni. - Inworld: MP3 untuk lampiran audio normal,
OGG_OPUSnative untuk target pesan suara, danPCMmentah pada 22050 Hz untuk Percakapan/telefoni. - xAI: MP3 secara bawaan; sintesis berkas audio dapat menggunakan
mp3,wav,pcm,mulaw, ataualawuntuk keluaran dengan buffering maupun streaming. Target pesan suara menggunakan MP3 untuk streaming dan fallback dengan buffering karena keluaranpcm,mulaw, danalawxAI merupakan audio mentah tanpa header. Sintesis dengan buffering menggunakan endpoint/v1/ttsREST batch xAI;textToSpeechStreammenggunakanwss://api.x.ai/v1/ttsnative. Ini bukan kontrak suara waktu nyata. Format pesan suara Opus native tidak didukung. - Microsoft: menggunakan
microsoft.outputFormat(bawaanaudio-24khz-48kbitrate-mono-mp3).- Transport terpaket menerima
outputFormat, tetapi tidak semua format tersedia dari layanan tersebut. - Nilai format keluaran mengikuti format keluaran Microsoft Speech (termasuk Ogg/WebM Opus).
- Telegram
sendVoicemenerima OGG/MP3/M4A; gunakan OpenAI/ElevenLabs jika Anda memerlukan pesan suara Opus yang terjamin. - Jika format keluaran Microsoft yang dikonfigurasi gagal, OpenClaw mencoba kembali dengan MP3.
- Jika tidak ada penggantian suara eksplisit yang ditetapkan dan suara bahasa Inggris bawaan digunakan, OpenClaw otomatis beralih ke suara neural bahasa Tionghoa (
zh-CN-XiaoxiaoNeural, lokalzh-CN) jika teks balasan didominasi CJK.
- Transport terpaket menerima
Format keluaran OpenAI dan ElevenLabs ditetapkan per kanal seperti tercantum di atas.
Perilaku TTS otomatis
Saat messages.tts.auto diaktifkan, OpenClaw:
- Melewati TTS jika balasan sudah berisi media terstruktur.
- Melewati balasan yang sangat singkat (di bawah 10 karakter).
- Meringkas balasan panjang jika ringkasan diaktifkan, menggunakan
summaryModel(atauagents.defaults.model.primary). - Melampirkan audio yang dihasilkan ke balasan.
- Dalam
mode: "final", tetap mengirim TTS hanya-audio untuk balasan akhir yang dialirkan setelah aliran teks selesai; media yang dihasilkan melalui normalisasi media kanal yang sama seperti lampiran balasan normal.
Jika balasan melebihi maxLength, OpenClaw tidak pernah melewati audio sepenuhnya:
- Ringkasan aktif (bawaan) dan model ringkasan tersedia: meringkas
teks menjadi sekitar
maxLengthkarakter, lalu menyintesis ringkasan tersebut. - Ringkasan nonaktif, peringkasan gagal, atau tidak tersedia kunci API untuk
model ringkasan: memotong teks menjadi
maxLengthkarakter dan menyintesis teks yang telah dipotong.
Balasan -> TTS diaktifkan? tidak -> kirim teks ya -> memiliki media / singkat? ya -> kirim teks tidak -> panjang > batas? tidak -> TTS -> lampirkan audio ya -> ringkasan diaktifkan dan tersedia? tidak -> potong -> TTS -> lampirkan audio ya -> ringkas -> TTS -> lampirkan audioReferensi bidang
messages.tts.* tingkat teratas
auto"off" | "always" | "inbound" | "tagged"Mode TTS otomatis. inbound hanya mengirim audio setelah pesan suara masuk; tagged hanya mengirim audio saat balasan menyertakan direktif [[tts:...]] atau blok [[tts:text]].
enabledbooleanTombol lama. openclaw doctor --fix memigrasikan ini ke auto.
mode"final" | "all"default: final"all" menyertakan balasan alat/blok selain balasan akhir.
providerstringID penyedia ucapan. Jika tidak ditetapkan, OpenClaw menggunakan penyedia terkonfigurasi pertama dalam urutan pemilihan otomatis registri. provider: "edge" lama ditulis ulang menjadi "microsoft" oleh openclaw doctor --fix.
personastringID persona aktif dari personas. Dinormalisasi menjadi huruf kecil.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
Identitas lisan yang stabil. Bidang: label, description, provider, fallbackPolicy, prompt, providers.<provider>. Lihat Persona.
summaryModelstringModel murah untuk ringkasan otomatis; bawaan ke agents.defaults.model.primary. Menerima provider/model atau alias model yang dikonfigurasi.
modelOverridesobjectMengizinkan model menghasilkan direktif TTS. enabled secara bawaan bernilai true; allowProvider secara bawaan bernilai false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Pengaturan milik penyedia yang dikunci berdasarkan ID penyedia ucapan. Blok langsung lama (messages.tts.openai, .elevenlabs, .microsoft, .edge) ditulis ulang oleh openclaw doctor --fix; commit hanya messages.tts.providers.<id>.
maxTextLengthnumberdefault: 4096Batas maksimum karakter masukan TTS. /tts audio, tts.convert, dan tts.speak gagal jika terlampaui.
timeoutMsnumberdefault: 30000Batas waktu permintaan dalam milidetik. timeoutMs per panggilan (alat agen, Gateway) berlaku jika ditetapkan; jika tidak, messages.tts.timeoutMs yang dikonfigurasi secara eksplisit berlaku atas bawaan penyedia apa pun yang dibuat Plugin.
prefsPathstringMengganti jalur JSON preferensi lokal (penyedia/batas/ringkasan). Bawaan ~/.openclaw/settings/tts.json.
Bidang apiKey penyedia dapat berupa string mentah atau SecretRef. Selama startup dingin Gateway,
SecretRef TTS yang tidak tersedia menandai kemampuan TTS bawaan sebagai
dikonfigurasi-tidak-tersedia alih-alih menghentikan Gateway. tts.speak kemudian mengembalikan
UNAVAILABLE dengan alasan SECRET_SURFACE_UNAVAILABLE, dan tidak ada permintaan penyedia yang
dikirim. Status dan doctor mencantumkan pemilik TTS yang terdegradasi beserta jalur konfigurasinya. Referensi
eksplisit tetap berada dalam snapshot runtime, sehingga kredensial lingkungan atau profil
tidak dapat secara diam-diam memilih akun lain. Pemuatan ulang dan pra-pemeriksaan penulisan konfigurasi
menerapkan kebijakan degradasi yang menyadari pemilik: pemilik TTS yang memenuhi syarat dan tidak berubah
dapat mempertahankan kredensial terakhir-yang-diketahui-baik sebagai usang, sementara kegagalan baru atau yang berubah
menjadi dingin tanpa memblokir pemilik yang sehat. Referensi yang secara struktural tidak valid
dan nilai yang telah diselesaikan tetap menggagalkan startup atau menolak pembaruan.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, atau SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Wilayah Azure Speech (misalnya eastus). Lingkungan: AZURE_SPEECH_REGION atau SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Penggantian endpoint Azure Speech opsional (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
ShortName suara Azure. Bawaan en-US-JennyNeural. Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Kode bahasa SSML. Bawaan en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure untuk audio standar. Bawaan audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure untuk keluaran pesan suara. Bawaan ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan ELEVENLABS_API_KEY atau XI_API_KEY sebagai fallback.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
ID model. Default eleven_multilingual_v2. ID lama eleven_turbo_v2_5/eleven_turbo_v2 dinormalisasi ke model flash yang sesuai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
ID suara ElevenLabs. Default pMsXgVXv3BLzUgSXRplE. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, similarityBoost, style (masing-masing 0..1, default 0.5/0.75/0), useSpeakerBoost (true|false, default true), speed (0.5..2.0, default 1.0).
applyTextNormalization"auto" | "on" | "off"OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg
ISO 639-1 2 huruf (misalnya en, de).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
Bilangan bulat 0..4294967295 untuk determinisme upaya terbaik.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan GEMINI_API_KEY / GOOGLE_API_KEY sebagai fallback. Jika dihilangkan, TTS dapat menggunakan kembali models.providers.google.apiKey sebelum fallback ke variabel lingkungan.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Model TTS Gemini. Default gemini-3.1-flash-tts-preview.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nama suara bawaan Gemini. Default Kore. Alias lama: voiceName, voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Atur ke audio-profile-v1 untuk membungkus bidang prompt persona aktif dalam struktur prompt TTS Gemini yang deterministik.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Hanya https://generativelanguage.googleapis.com yang diterima.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variabel lingkungan: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
URL API Gradium HTTPS di api.gradium.ai. Default https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Default Emma (YTpq7expH9539ERJ). Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Inworld utama
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variabel lingkungan: INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Default https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
Default inworld-tts-1.5-max. Juga: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Default Sarah. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Suhu pengambilan sampel 0..2 (tidak termasuk 0).
OPENCLAW_DOCS_MARKER:paramClose:
CLI Lokal (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
Argumen perintah. Mendukung placeholder {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}}.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
Format keluaran CLI yang diharapkan. Default mp3 untuk lampiran audio.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
Batas waktu perintah dalam milidetik. Default 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,Keluaran standar perintah serta audio yang dihasilkan atau dikonversi dibatasi hingga 50 MiB. Keluaran kesalahan diagnostik dibatasi hingga 1 MiB. OpenClaw menghentikan perintah dan menggagalkan sintesis ketika salah satu batas terlampaui.
Microsoft (tanpa kunci API)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nama suara neural Microsoft (misalnya en-US-MichelleNeural). Alias lama: voice. Jika suara bahasa Inggris default sedang digunakan dan teks balasan didominasi CJK, OpenClaw otomatis beralih ke zh-CN-XiaoxiaoNeural.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Kode bahasa (misalnya en-US).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Format keluaran Microsoft. Default audio-24khz-48kbitrate-mono-mp3. Tidak semua format didukung oleh transport berbasis Edge yang disertakan.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
String persentase (misalnya +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
Alias lama. Jalankan openclaw doctor --fix untuk menulis ulang konfigurasi tersimpan menjadi providers.microsoft.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan MINIMAX_API_KEY sebagai fallback. Autentikasi Token Plan melalui MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, atau MINIMAX_CODING_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Default https://api.minimax.io. Variabel lingkungan: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Default speech-2.8-hd. Variabel lingkungan: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Default English_expressive_narrator. Variabel lingkungan: MINIMAX_TTS_VOICE_ID. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. Default 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. Default 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Bilangan bulat -12..12. Default 0. Nilai pecahan dipotong sebelum permintaan.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan OPENAI_API_KEY sebagai fallback.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
ID model TTS OpenAI. Default gpt-4o-mini-tts.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nama suara (misalnya alloy, cedar). Default coral. Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Bidang instructions OpenAI yang eksplisit. Saat diatur, bidang prompt persona tidak dipetakan secara otomatis.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Bidang JSON tambahan yang digabungkan ke isi permintaan /audio/speech setelah bidang TTS OpenAI yang dihasilkan. Gunakan ini untuk endpoint yang kompatibel dengan OpenAI, seperti Kokoro, yang memerlukan kunci khusus penyedia seperti lang; kunci prototipe yang tidak aman diabaikan.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringMengganti endpoint TTS OpenAI. Urutan resolusi: konfigurasi → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Nilai non-default diperlakukan sebagai endpoint TTS yang kompatibel dengan OpenAI, sehingga nama model dan suara khusus diterima, dan speed tidak lagi diperiksa terhadap rentang 0.25..4.0.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variabel lingkungan: OPENROUTER_API_KEY. Dapat menggunakan kembali models.providers.openrouter.apiKey.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Default https://openrouter.ai/api/v1. https://openrouter.ai/v1 lama dinormalisasi.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Default hexgrad/kokoro-82m. Alias: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Default af_alloy. Alias lama: voice, voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
Default mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variabel lingkungan: VOLCENGINE_TTS_API_KEY atau BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
Default seed-tts-1.0. Variabel lingkungan: VOLCENGINE_TTS_RESOURCE_ID. Gunakan seed-tts-2.0 jika proyek Anda memiliki hak akses TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Header kunci aplikasi. Default aGjiRDfUWi. Variabel lingkungan: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Mengganti endpoint HTTP TTS Seed Speech. Variabel lingkungan: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Jenis suara. Default en_female_anna_mars_bigtts. Variabel lingkungan: VOLCENGINE_TTS_VOICE. Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI
Rasio kecepatan bawaan penyedia, 0.2..3.
OPENCLAW_DOCS_MARKER:paramClose:
emotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Bidang lama Volcengine Speech Console. Variabel lingkungan: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (default volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Variabel lingkungan: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Default https://api.x.ai/v1. Variabel lingkungan: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Default eve. Dengan autentikasi, openclaw infer tts voices --provider xai mengambil katalog bawaan saat ini; tanpa autentikasi, perintah tersebut mencantumkan fallback luring ara, eve, leo, rex, dan sal. ID suara khusus akun diteruskan meskipun tidak ada dalam daftar bawaan. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
Kode bahasa BCP-47 atau auto. Default en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
Default mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
Penggantian kecepatan bawaan penyedia, 0.7..1.5.
OPENCLAW_DOCS_MARKER:paramClose:
Xiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Default https://api.xiaomimimo.com/v1. Env: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Default mimo-v2.5-tts. Env: XIAOMI_TTS_MODEL. Juga mendukung mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Default mimo_default untuk model suara preset. Env: XIAOMI_TTS_VOICE. Alias lama: voice. Tidak dikirim untuk mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Default mp3. Env: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci
Instruksi gaya bahasa alami opsional yang dikirim sebagai pesan pengguna; tidak diucapkan. Untuk mimo-v2.5-tts-voicedesign, ini adalah prompt desain suara; OpenClaw menyediakan nilai default jika dihilangkan.
OPENCLAW_DOCS_MARKER:paramClose:
Alat agen
Alat tts mengonversi teks menjadi ucapan dan mengembalikan lampiran audio untuk
pengiriman balasan. Di Feishu, Matrix, Telegram, dan WhatsApp, audio
dikirim sebagai pesan suara, bukan sebagai lampiran file. Feishu dan
WhatsApp dapat mentranskode keluaran TTS non-Opus pada jalur ini ketika ffmpeg
tersedia.
WhatsApp mengirim audio melalui Baileys sebagai pesan suara PTT (audio dengan
ptt: true) dan mengirim teks yang terlihat secara terpisah dari audio PTT karena
klien tidak secara konsisten menampilkan keterangan pada pesan suara.
Alat ini menerima kolom opsional channel dan timeoutMs; timeoutMs adalah
batas waktu permintaan penyedia per panggilan dalam milidetik. Nilai per panggilan menggantikan
messages.tts.timeoutMs; batas waktu TTS yang dikonfigurasi menggantikan nilai default penyedia
yang ditentukan oleh plugin.
RPC Gateway
| Metode | Tujuan |
|---|---|
tts.status |
Membaca status TTS saat ini dan upaya terakhir. |
tts.enable |
Mengatur preferensi otomatis lokal ke always. |
tts.disable |
Mengatur preferensi otomatis lokal ke off. |
tts.convert |
Teks sekali pakai → audio. |
tts.setProvider |
Mengatur preferensi penyedia lokal. |
tts.personas |
Mencantumkan persona yang dikonfigurasi dan persona aktif. |
tts.setPersona |
Mengatur preferensi persona lokal. |
tts.providers |
Mencantumkan penyedia yang dikonfigurasi dan statusnya. |
Tautan layanan
- Panduan teks ke ucapan OpenAI
- Referensi API Audio OpenAI
- Teks ke ucapan REST Azure Speech
- Penyedia Azure Speech
- Teks ke Ucapan ElevenLabs
- Autentikasi ElevenLabs
- Gradium
- API TTS Inworld
- API MiniMax T2A v2
- API HTTP TTS Volcengine
- Sintesis ucapan Xiaomi MiMo
- node-edge-tts
- Format keluaran Microsoft Speech
- Teks ke ucapan xAI