Tools
Teks ke ucapan
OpenClaw dapat mengonversi balasan keluar menjadi audio di 14 penyedia ucapan dan mengirim pesan suara native di Feishu, Matrix, Telegram, dan WhatsApp, lampiran audio di tempat lain, serta stream PCM/Ulaw untuk teleponi dan Talk.
TTS adalah separuh keluaran-ucapan dari mode stt-tts Talk. Sesi Talk
realtime yang native penyedia menyintesis ucapan di dalam penyedia realtime,
bukan memanggil jalur TTS ini, sedangkan sesi transcription tidak menyintesis
respons suara asisten.
Mulai cepat
Pilih penyedia
OpenAI dan ElevenLabs adalah opsi hosted yang paling andal. Microsoft dan Local CLI berfungsi tanpa kunci API. Lihat matriks penyedia untuk daftar lengkap.
Atur kunci API
Ekspor env var untuk penyedia Anda (misalnya OPENAI_API_KEY,
ELEVENLABS_API_KEY). Microsoft dan Local CLI tidak memerlukan kunci.
Aktifkan di config
Atur messages.tts.auto: "always" dan messages.tts.provider:
{ messages: { tts: { auto: "always", provider: "elevenlabs", }, },}Coba di chat
/tts status menampilkan status saat ini. /tts audio Hello from OpenClaw
mengirim balasan audio sekali pakai.
Penyedia yang didukung
| Penyedia | Auth | Catatan |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (juga AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
Keluaran voice-note Ogg/Opus native dan teleponi. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS kompatibel OpenAI. Default ke hexgrad/Kokoro-82M. |
| ElevenLabs | ELEVENLABS_API_KEY atau XI_API_KEY |
Kloning suara, multibahasa, deterministik melalui seed; distream untuk pemutaran suara Discord. |
| Google Gemini | GEMINI_API_KEY atau GOOGLE_API_KEY |
TTS batch Gemini API; sadar persona melalui promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
Keluaran voice-note dan teleponi. |
| Inworld | INWORLD_API_KEY |
API TTS streaming. Voice-note Opus native dan teleponi PCM. |
| Local CLI | 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 Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. Default ke speech-2.8-hd. |
| OpenAI | OPENAI_API_KEY |
Juga digunakan untuk ringkasan otomatis; mendukung persona instructions. |
| OpenRouter | OPENROUTER_API_KEY (dapat menggunakan ulang models.providers.openrouter.apiKey) |
Model default hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY atau BYTEPLUS_SEED_SPEECH_API_KEY (AppID/token legacy: VOLCENGINE_TTS_APPID/_TOKEN) |
API HTTP BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
Penyedia gambar, video, dan ucapan bersama. |
| xAI | XAI_API_KEY |
TTS batch xAI. Voice-note Opus native tidak didukung. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS MiMo melalui penyelesaian chat Xiaomi. |
Jika beberapa penyedia dikonfigurasi, penyedia yang dipilih digunakan terlebih
dahulu dan yang lain menjadi opsi fallback. Ringkasan otomatis menggunakan
summaryModel (atau agents.defaults.model.primary), sehingga penyedia itu
juga harus diautentikasi jika Anda tetap mengaktifkan ringkasan.
Konfigurasi
Config TTS berada di bawah messages.tts dalam ~/.openclaw/openclaw.json. Pilih
preset dan sesuaikan blok penyedia:
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", // Optional natural-language style prompts: // audioProfile: "Speak in a calm, podcast-host tone.", // 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, }, },},},}Local CLI
{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 ke prompt desain suara. OpenClaw mengirim prompt tersebut sebagai pesan
user TTS 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 melakukan deep-merge di atas
messages.tts, sehingga kredensial penyedia dapat tetap berada di 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 mengunci persona per agen, atur agents.list[].tts.persona bersama konfigurasi
penyedia — ini menggantikan messages.tts.persona global hanya untuk agen tersebut.
Urutan presedensi 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 lokal
/ttsuntuk host ini - direktif inline
[[tts:...]]ketika penggantian model diaktifkan
Penggantian saluran dan akun menggunakan bentuk yang sama seperti messages.tts dan
melakukan deep-merge 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 yang stabil dan dapat diterapkan secara deterministik di berbagai penyedia. Persona dapat memilih satu penyedia, mendefinisikan intent prompt yang netral penyedia, dan membawa binding khusus penyedia untuk suara, model, template prompt, seed, dan pengaturan suara.
Persona minimal
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrator", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, }, },}Persona lengkap (prompt netral penyedia)
{ messages: { tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "Alfred", description: "Dry, warm British butler narrator.", provider: "google", fallbackPolicy: "preserve-persona", prompt: { profile: "A brilliant British butler. Dry, witty, warm, charming, emotionally expressive, never generic.", scene: "A quiet late-night study. Close-mic narration for a trusted operator.", sampleContext: "The speaker is answering a private technical request with concise confidence and dry warmth.", style: "Refined, understated, lightly amused.", accent: "British English.", pacing: "Measured, with short dramatic pauses.", constraints: ["Do not read configuration values aloud.", "Do not explain the 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 berjalan dengan yang eksplisit terlebih dahulu:
- Penggantian langsung (CLI, Gateway, Talk, direktif TTS yang diizinkan).
- Preferensi lokal
/tts provider <id>. providerdari persona aktif.messages.tts.provider.- Pemilihan otomatis registry.
Untuk setiap percobaan penyedia, OpenClaw menggabungkan konfigurasi dalam urutan ini:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- Penggantian permintaan tepercaya
- Penggantian direktif TTS yang dipancarkan model dan diizinkan
Cara penyedia menggunakan prompt persona
Bidang prompt persona (profile, scene, sampleContext, style, accent,
pacing, constraints) bersifat netral penyedia. Setiap penyedia memutuskan cara
menggunakannya:
Google Gemini
Membungkus bidang prompt persona dalam struktur prompt TTS Gemini hanya ketika
konfigurasi penyedia Google efektif mengatur promptTemplate: "audio-profile-v1"
atau personaPrompt. Bidang lama audioProfile dan speakerName masih
ditambahkan di awal sebagai teks prompt khusus Google. Tag audio inline seperti
[whispers] atau [laughs] di dalam blok [[tts:text]] dipertahankan
di dalam transkrip Gemini; OpenClaw tidak membuat tag ini.
OpenAI
Memetakan bidang prompt persona ke bidang permintaan instructions hanya ketika
tidak ada instructions OpenAI eksplisit yang dikonfigurasi. instructions
eksplisit selalu menang.
Penyedia lain
Hanya menggunakan binding persona khusus penyedia di bawah
personas.<id>.providers.<provider>. Bidang prompt persona diabaikan
kecuali penyedia mengimplementasikan pemetaan prompt persona sendiri.
Kebijakan fallback
fallbackPolicy mengontrol perilaku ketika persona tidak memiliki binding untuk
penyedia yang dicoba:
| Kebijakan | Perilaku |
|---|---|
preserve-persona |
Default. Bidang prompt netral penyedia tetap tersedia; penyedia dapat menggunakannya atau mengabaikannya. |
provider-defaults |
Persona dihilangkan dari 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 bersifat tercakup sesi. Klien Talk harus memilih
id penyedia, id model, id suara, dan lokal dari talk.catalog dan meneruskannya
melalui sesi Talk atau permintaan handoff. Membuka sesi suara tidak boleh
mengubah messages.tts atau default penyedia Talk global.
Direktif berbasis model
Secara default, asisten dapat memancarkan 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 di
audio:
Here you go. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](laughs) Read the song once more.[[/tts:text]]Ketika messages.tts.auto bernilai "tagged", direktif diperlukan untuk memicu
audio. Pengiriman blok streaming menghapus direktif dari teks yang terlihat sebelum
saluran melihatnya, bahkan ketika terpisah di beberapa blok yang bersebelahan.
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(pitch integer 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 perpindahan penyedia sambil tetap membuat knob lain dapat dikonfigurasi:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Perintah slash
Satu perintah /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 tercakup sesi untuk chat saat ini./tts persona <id>menulis preferensi persona lokal;/tts persona offmenghapusnya./tts latestmembaca balasan asisten terbaru dari transkrip sesi saat ini dan mengirimkannya sebagai audio sekali. Ini hanya menyimpan hash dari balasan tersebut pada entri sesi untuk menekan pengiriman suara duplikat./tts audiomembuat balasan audio sekali pakai (tidak mengaktifkan TTS).limitdansummarydisimpan di 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 endpoint kustom yang sudah disanitasi ketika TTS diaktifkan.
Preferensi per pengguna
Perintah slash menulis penggantian lokal ke prefsPath. Default-nya adalah
~/.openclaw/settings/tts.json; ganti dengan variabel env OPENCLAW_TTS_PREFS
atau messages.tts.prefsPath.
| Bidang tersimpan | Efek |
|---|---|
auto |
Penggantian TTS otomatis lokal (always, off, …) |
provider |
Penggantian penyedia utama lokal |
persona |
Penggantian persona lokal |
maxLength |
Ambang ringkasan (default 1500 karakter) |
summarize |
Toggle ringkasan (default true) |
Ini menggantikan konfigurasi efektif dari messages.tts ditambah blok
agents.list[].tts aktif untuk host tersebut.
Format output (tetap)
Pengiriman suara TTS digerakkan oleh kapabilitas saluran. Plugin saluran mengiklankan
apakah TTS bergaya suara harus meminta target voice-note native kepada penyedia atau
mempertahankan sintesis audio-file normal dan hanya menandai output yang kompatibel untuk pengiriman
suara.
- Kanal yang mendukung catatan suara: balasan catatan suara lebih memilih Opus (
opus_48000_64dari ElevenLabs,opusdari OpenAI).- 48kHz / 64kbps adalah kompromi pesan suara yang baik.
- Feishu / WhatsApp: ketika balasan catatan suara dibuat sebagai MP3/WebM/WAV/M4A
atau berkas audio lain yang mungkin, plugin kanal mentranskodenya ke 48kHz
Ogg/Opus dengan
ffmpegsebelum mengirim pesan suara native. WhatsApp mengirim hasilnya melalui payload Baileysaudiodenganptt: truedanaudio/ogg; codecs=opus. Jika konversi gagal, Feishu menerima berkas asli sebagai lampiran; pengiriman WhatsApp gagal alih-alih memposting payload PTT yang tidak kompatibel. - Kanal lain: MP3 (
mp3_44100_128dari ElevenLabs,mp3dari OpenAI).- 44,1kHz / 128kbps adalah keseimbangan default untuk kejernihan ucapan.
- MiniMax: MP3 (model
speech-2.8-hd, laju sampel 32kHz) untuk lampiran audio normal. Untuk target catatan suara yang diiklankan kanal, OpenClaw mentranskode MP3 MiniMax ke Opus 48kHz denganffmpegsebelum pengiriman ketika kanal mengiklankan transkoding. - Xiaomi MiMo: MP3 secara default, atau WAV saat dikonfigurasi. Untuk target catatan suara yang diiklankan kanal, OpenClaw mentranskode keluaran Xiaomi ke Opus 48kHz dengan
ffmpegsebelum pengiriman ketika kanal mengiklankan transkoding. - CLI lokal: menggunakan
outputFormatyang dikonfigurasi. Target catatan suara dikonversi ke Ogg/Opus dan keluaran telefoni dikonversi ke PCM mono mentah 16 kHz denganffmpeg. - Google Gemini: TTS Gemini API mengembalikan PCM mentah 24kHz. OpenClaw membungkusnya sebagai WAV untuk lampiran audio, mentranskodenya ke Opus 48kHz untuk target catatan suara, dan mengembalikan PCM langsung untuk Talk/telefoni.
- Gradium: WAV untuk lampiran audio, Opus untuk target catatan suara, dan
ulaw_8000pada 8 kHz untuk telefoni. - Inworld: MP3 untuk lampiran audio normal,
OGG_OPUSnative untuk target catatan suara, danPCMmentah pada 22050 Hz untuk Talk/telefoni. - xAI: MP3 secara default;
responseFormatdapat berupamp3,wav,pcm,mulaw, ataualaw. OpenClaw menggunakan endpoint TTS batch REST xAI dan mengembalikan lampiran audio lengkap; WebSocket TTS streaming xAI tidak digunakan oleh jalur penyedia ini. Format catatan suara Opus native tidak didukung oleh jalur ini. - Microsoft: menggunakan
microsoft.outputFormat(defaultaudio-24khz-48kbitrate-mono-mp3).- Transport yang dibundel menerima
outputFormat, tetapi tidak semua format tersedia dari layanan. - 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 lagi dengan MP3.
- Transport yang dibundel menerima
Format keluaran OpenAI/ElevenLabs ditetapkan per kanal (lihat di atas).
Perilaku Auto-TTS
Ketika messages.tts.auto diaktifkan, OpenClaw:
- Melewati TTS jika balasan sudah berisi media terstruktur.
- Melewati balasan yang sangat pendek (di bawah 10 karakter).
- Meringkas balasan panjang ketika ringkasan diaktifkan, menggunakan
summaryModel(atauagents.defaults.model.primary). - Melampirkan audio yang dihasilkan ke balasan.
- Dalam
mode: "final", tetap mengirim TTS hanya-audio untuk balasan final yang di-stream setelah stream teks selesai; media yang dihasilkan melewati normalisasi media kanal yang sama seperti lampiran balasan normal.
Jika balasan melebihi maxLength dan ringkasan nonaktif (atau tidak ada kunci API untuk
model ringkasan), audio dilewati dan balasan teks normal dikirim.
Reply -> TTS enabled? no -> send text yes -> has media / short? yes -> send text no -> length > limit? no -> TTS -> attach audio yes -> summary enabled? no -> send text yes -> summarize -> TTS -> attach audioFormat keluaran menurut kanal
| Target | Format |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | Balasan catatan suara lebih memilih 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). Default 44,1 kHz / 128 kbps untuk ucapan. |
| Talk / telefoni | PCM native penyedia (Inworld 22050 Hz, Google 24 kHz), atau ulaw_8000 dari Gradium untuk telefoni. |
Catatan per penyedia:
- Transkoding Feishu / WhatsApp: Ketika balasan catatan suara masuk sebagai MP3/WebM/WAV/M4A, plugin kanal mentranskode ke Ogg/Opus 48 kHz dengan
ffmpeg. WhatsApp mengirim melalui Baileys denganptt: truedanaudio/ogg; codecs=opus. Jika konversi gagal: Feishu fallback ke melampirkan berkas asli; pengiriman WhatsApp gagal alih-alih memposting payload PTT yang tidak kompatibel. - MiniMax / Xiaomi MiMo: MP3 default (32 kHz untuk MiniMax
speech-2.8-hd); ditranskode ke Opus 48 kHz untuk target catatan suara melaluiffmpeg. - CLI lokal: Menggunakan
outputFormatyang dikonfigurasi. Target catatan suara dikonversi ke Ogg/Opus dan keluaran telefoni ke PCM mono mentah 16 kHz. - Google Gemini: Mengembalikan PCM mentah 24 kHz. OpenClaw membungkus sebagai WAV untuk lampiran, mentranskode ke Opus 48 kHz untuk target catatan suara, mengembalikan PCM langsung untuk Talk/telefoni.
- Inworld: Lampiran MP3, catatan suara
OGG_OPUSnative,PCMmentah 22050 Hz untuk Talk/telefoni. - xAI: MP3 secara default;
responseFormatdapat berupamp3|wav|pcm|mulaw|alaw. Menggunakan endpoint batch REST xAI — TTS WebSocket streaming tidak digunakan. Format catatan suara Opus native tidak didukung. - Microsoft: Menggunakan
microsoft.outputFormat(defaultaudio-24khz-48kbitrate-mono-mp3). TelegramsendVoicemenerima OGG/MP3/M4A; gunakan OpenAI/ElevenLabs jika Anda memerlukan pesan suara Opus yang terjamin. Jika format Microsoft yang dikonfigurasi gagal, OpenClaw mencoba lagi dengan MP3.
Format keluaran OpenAI dan ElevenLabs ditetapkan per kanal seperti tercantum di atas.
Referensi bidang
Top-level messages.tts.*
auto"off" | "always" | "inbound" | "tagged"Mode Auto-TTS. inbound hanya mengirim audio setelah pesan suara masuk; tagged hanya mengirim audio ketika balasan menyertakan direktif [[tts:...]] atau blok [[tts:text]].
enabledbooleanToggle lama. openclaw doctor --fix memigrasikan ini ke auto.
mode"final" | "all"default: final"all" menyertakan balasan alat/blok selain balasan final.
providerstringId penyedia ucapan. Ketika tidak disetel, OpenClaw menggunakan penyedia pertama yang dikonfigurasi dalam urutan pemilihan otomatis registry. provider: "edge" lama ditulis ulang menjadi "microsoft" oleh openclaw doctor --fix.
personastringId persona aktif dari personas. Dinormalisasi ke 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; default ke agents.defaults.model.primary. Menerima provider/model atau alias model yang dikonfigurasi.
modelOverridesobjectIzinkan model mengeluarkan direktif TTS. enabled default ke true; allowProvider default ke false.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
Pengaturan milik penyedia yang diberi kunci 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>.
maxTextLengthnumberBatas keras untuk karakter masukan TTS. /tts audio gagal jika terlampaui.
timeoutMsnumberTimeout permintaan dalam milidetik.
prefsPathstringTimpa jalur JSON prefs lokal (penyedia/batas/ringkasan). Default ~/.openclaw/settings/tts.json.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, atau SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Region Azure Speech (misalnya eastus). Env: AZURE_SPEECH_REGION atau SPEECH_REGION.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
Override endpoint Azure Speech opsional (alias baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
ShortName suara Azure. Default en-US-JennyNeural. Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Kode bahasa SSML. Default en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure untuk audio standar. Default audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat Azure untuk keluaran catatan suara. Default ogg-24khz-16bit-mono-opus.
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Fallback ke ELEVENLABS_API_KEY atau XI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Id model (misalnya eleven_multilingual_v2, eleven_v3).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Id suara ElevenLabs. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, similarityBoost, style (masing-masing 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = normal).
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
Fallback ke GEMINI_API_KEY / GOOGLE_API_KEY. Jika dihilangkan, TTS dapat menggunakan kembali models.providers.google.apiKey sebelum fallback env.
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 siap pakai Gemini. Default Kore. Alias lama: voiceName, voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
Setel 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
Lingkungan: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Bawaan https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Bawaan Emma (YTpq7expH9539ERJ). Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Primer Inworld
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Bawaan https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
Bawaan 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
Bawaan Sarah. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
Suhu sampling 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
Local CLI (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. Bawaan mp3 untuk lampiran audio.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
Timeout perintah dalam milidetik. Bawaan 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenvRecord<string, string��-�ӯz��u�b� .����Microsoft (no API key)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nama suara neural Microsoft (mis. en-US-MichelleNeural). Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
Kode bahasa (mis. en-US).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Format keluaran Microsoft. Bawaan audio-24khz-48kbitrate-mono-mp3. Tidak semua format didukung oleh transport berbasis Edge yang dibundel.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
String persentase (mis. +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
Alias lama. Jalankan openclaw doctor --fix untuk menulis ulang config tersimpan ke providers.microsoft.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan fallback ke MINIMAX_API_KEY. 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
Bawaan https://api.minimax.io. Lingkungan: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Bawaan speech-2.8-hd. Lingkungan: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Bawaan English_expressive_narrator. Lingkungan: MINIMAX_TTS_VOICE_ID. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. Bawaan 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. Bawaan 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Integer -12..12. Bawaan 0. Nilai pecahan dipotong sebelum permintaan.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Menggunakan fallback ke OPENAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
ID model TTS OpenAI (mis. gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Nama suara (mis. alloy, cedar). Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
Kolom instructions OpenAI eksplisit. Saat diatur, kolom prompt persona tidak dipetakan otomatis.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Kolom JSON ekstra yang digabungkan ke body permintaan /audio/speech setelah kolom TTS OpenAI yang dihasilkan. Gunakan ini untuk endpoint yang kompatibel dengan OpenAI seperti Kokoro yang memerlukan kunci khusus penyedia seperti lang; kunci prototype yang tidak aman diabaikan.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringOverride endpoint TTS OpenAI. Urutan resolusi: config → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Nilai non-bawaan diperlakukan sebagai endpoint TTS yang kompatibel dengan OpenAI, sehingga nama model dan suara kustom diterima.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: OPENROUTER_API_KEY. Dapat menggunakan ulang models.providers.openrouter.apiKey.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Bawaan https://openrouter.ai/api/v1. https://openrouter.ai/v1 lama dinormalisasi.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Bawaan hexgrad/kokoro-82m. Alias: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Bawaan af_alloy. Alias lama: voice, voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
Bawaan mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: VOLCENGINE_TTS_API_KEY atau BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
Bawaan seed-tts-1.0. Lingkungan: VOLCENGINE_TTS_RESOURCE_ID. Gunakan seed-tts-2.0 saat proyek Anda memiliki hak TTS 2.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
Header kunci aplikasi. Bawaan aGjiRDfUWi. Lingkungan: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Override endpoint HTTP Seed Speech TTS. Lingkungan: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Jenis suara. Bawaan en_female_anna_mars_bigtts. Lingkungan: VOLCENGINE_TTS_VOICE. Alias lama: voice.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
Kolom Volcengine Speech Console lama. Lingkungan: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (bawaan volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Bawaan https://api.x.ai/v1. Lingkungan: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
Bawaan eve. Suara live: ara, eve, leo, rex, sal, una. Alias lama: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
Kode bahasa BCP-47 atau auto. Bawaan en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
Bawaan mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberXiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Lingkungan: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Bawaan https://api.xiaomimimo.com/v1. Lingkungan: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Bawaan mimo-v2.5-tts. Lingkungan: XIAOMI_TTS_MODEL. Juga mendukung mimo-v2-tts dan mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Bawaan mimo_default untuk model suara preset. Lingkungan: XIAOMI_TTS_VOICE. Alias lama: voice. Tidak dikirim untuk mimo-v2.5-tts-voicedesign.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
Bawaan mp3. Lingkungan: 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 bawaan saat dihilangkan.
OPENCLAW_DOCS_MARKER:paramClose:
Alat agen
Alat tts mengonversi teks menjadi speech dan mengembalikan lampiran audio untuk
pengiriman balasan. Di Feishu, Matrix, Telegram, dan WhatsApp, audio
dikirim sebagai pesan suara, bukan lampiran file. Feishu dan
WhatsApp dapat mentranskode keluaran TTS non-Opus di jalur ini saat ffmpeg
tersedia.
WhatsApp mengirim audio melalui Baileys sebagai catatan suara PTT (audio dengan
ptt: true) dan mengirim teks terlihat secara terpisah dari audio PTT karena
klien tidak secara konsisten merender caption pada catatan suara.
Alat ini menerima kolom channel dan timeoutMs opsional; timeoutMs adalah
timeout permintaan penyedia per panggilan dalam milidetik. Nilai per panggilan mengesampingkan
messages.tts.timeoutMs; timeout TTS yang dikonfigurasi mengesampingkan bawaan
penyedia apa pun yang ditulis Plugin.
RPC Gateway
| Metode | Tujuan |
|---|---|
tts.status |
Baca status TTS saat ini dan upaya terakhir. |
tts.enable |
Atur preferensi otomatis lokal ke always. |
tts.disable |
Atur preferensi otomatis lokal ke off. |
tts.convert |
Teks satu kali → audio. |
tts.setProvider |
Atur preferensi penyedia lokal. |
tts.setPersona |
Atur preferensi persona lokal. |
tts.providers |
Cantumkan penyedia yang dikonfigurasi dan statusnya. |
Tautan layanan
- Panduan text-to-speech OpenAI
- Referensi API Audio OpenAI
- Text-to-speech REST Azure Speech
- Penyedia Azure Speech
- Text to Speech ElevenLabs
- Autentikasi ElevenLabs
- Gradium
- API TTS Inworld
- API MiniMax T2A v2
- API HTTP TTS Volcengine
- Sintesis speech Xiaomi MiMo
- node-edge-tts
- Format keluaran Microsoft Speech
- Text to speech xAI