Tools
टेक्स्ट-टू-स्पीच
OpenClaw आउटबाउंड उत्तरों को 14 स्पीच प्रदाताओं में ऑडियो में बदल सकता है और Feishu, Matrix, Telegram, और WhatsApp पर नेटिव वॉइस संदेश, बाकी सभी जगह ऑडियो अटैचमेंट, और टेलीफोनी तथा Talk के लिए PCM/Ulaw स्ट्रीम डिलीवर कर सकता है।
TTS, Talk के stt-tts मोड का स्पीच-आउटपुट हिस्सा है। प्रदाता-नेटिव
realtime Talk सत्र इस TTS पथ को कॉल करने के बजाय रियलटाइम प्रदाता के अंदर
स्पीच सिंथेसाइज़ करते हैं, जबकि transcription सत्र सहायक की
वॉइस प्रतिक्रिया सिंथेसाइज़ नहीं करते।
त्वरित शुरुआत
Pick a provider
OpenAI और ElevenLabs सबसे भरोसेमंद होस्टेड विकल्प हैं। Microsoft और Local CLI बिना API कुंजी के काम करते हैं। पूरी सूची के लिए प्रदाता मैट्रिक्स देखें।
Set the API key
अपने प्रदाता के लिए env var निर्यात करें (उदाहरण के लिए OPENAI_API_KEY,
ELEVENLABS_API_KEY)। Microsoft और Local CLI को किसी कुंजी की ज़रूरत नहीं है।
Enable in config
messages.tts.auto: "always" और messages.tts.provider सेट करें:
{ messages: { tts: { auto: "always", provider: "elevenlabs", }, },}Try it in chat
/tts status वर्तमान स्थिति दिखाता है। /tts audio Hello from OpenClaw
एक बार का ऑडियो उत्तर भेजता है।
समर्थित प्रदाता
| प्रदाता | प्रमाणीकरण | नोट्स |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (साथ ही AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
नेटिव Ogg/Opus वॉइस-नोट आउटपुट और टेलीफोनी। |
| DeepInfra | DEEPINFRA_API_KEY |
OpenAI-संगत TTS। डिफ़ॉल्ट hexgrad/Kokoro-82M है। |
| ElevenLabs | ELEVENLABS_API_KEY या XI_API_KEY |
वॉइस क्लोनिंग, बहुभाषी, seed के माध्यम से निर्धारक; Discord वॉइस प्लेबैक के लिए स्ट्रीम किया गया। |
| Google Gemini | GEMINI_API_KEY या GOOGLE_API_KEY |
Gemini API बैच TTS; promptTemplate: "audio-profile-v1" के माध्यम से persona-aware। |
| Gradium | GRADIUM_API_KEY |
वॉइस-नोट और टेलीफोनी आउटपुट। |
| Inworld | INWORLD_API_KEY |
स्ट्रीमिंग TTS API। नेटिव Opus वॉइस-नोट और PCM टेलीफोनी। |
| Local CLI | कोई नहीं | कॉन्फ़िगर किया गया स्थानीय TTS कमांड चलाता है। |
| Microsoft | कोई नहीं | node-edge-tts के माध्यम से सार्वजनिक Edge न्यूरल TTS। सर्वोत्तम-प्रयास, कोई SLA नहीं। |
| MiniMax | MINIMAX_API_KEY (या Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
T2A v2 API। डिफ़ॉल्ट speech-2.8-hd है। |
| OpenAI | OPENAI_API_KEY |
ऑटो-सारांश के लिए भी उपयोग किया जाता है; persona instructions का समर्थन करता है। |
| OpenRouter | OPENROUTER_API_KEY (models.providers.openrouter.apiKey का पुनः उपयोग कर सकता है) |
डिफ़ॉल्ट मॉडल hexgrad/kokoro-82m। |
| Volcengine | VOLCENGINE_TTS_API_KEY या BYTEPLUS_SEED_SPEECH_API_KEY (लेगेसी AppID/token: VOLCENGINE_TTS_APPID/_TOKEN) |
BytePlus Seed Speech HTTP API। |
| Vydra | VYDRA_API_KEY |
साझा इमेज, वीडियो, और स्पीच प्रदाता। |
| xAI | XAI_API_KEY |
xAI बैच TTS। नेटिव Opus वॉइस-नोट समर्थित नहीं है। |
| Xiaomi MiMo | XIAOMI_API_KEY |
Xiaomi चैट completions के माध्यम से MiMo TTS। |
यदि कई प्रदाता कॉन्फ़िगर किए गए हैं, तो चयनित प्रदाता पहले उपयोग किया जाता है और
बाकी fallback विकल्प होते हैं। ऑटो-सारांश summaryModel (या
agents.defaults.model.primary) का उपयोग करता है, इसलिए यदि आप सारांश सक्षम रखते हैं
तो उस प्रदाता का भी प्रमाणीकरण होना चाहिए।
कॉन्फ़िगरेशन
TTS कॉन्फ़िग ~/.openclaw/openclaw.json में messages.tts के अंतर्गत रहता है। एक
preset चुनें और प्रदाता ब्लॉक को अनुकूलित करें:
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 (no key)
{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", }, },},},}Xiaomi mimo-v2.5-tts-voicedesign के लिए, speakerVoice छोड़ दें और style को
वॉइस-डिज़ाइन prompt पर सेट करें। OpenClaw उस prompt को TTS user संदेश के रूप में भेजता है
और voicedesign मॉडल के लिए audio.voice नहीं भेजता।
प्रति-एजेंट वॉइस ओवरराइड्स
जब एक एजेंट को अलग प्रदाता, आवाज़, मॉडल, पर्सोना, या ऑटो-TTS मोड के साथ बोलना चाहिए, तो agents.list[].tts का उपयोग करें। एजेंट ब्लॉक messages.tts के ऊपर डीप-मर्ज होता है, इसलिए प्रदाता क्रेडेंशियल वैश्विक प्रदाता कॉन्फिग में रह सकते हैं:
{ 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" }, }, }, }, ], },}प्रति-एजेंट पर्सोना पिन करने के लिए, प्रदाता कॉन्फिग के साथ agents.list[].tts.persona सेट करें — यह केवल उस एजेंट के लिए वैश्विक messages.tts.persona को ओवरराइड करता है।
स्वचालित उत्तरों, /tts audio, /tts status, और tts एजेंट टूल के लिए प्राथमिकता क्रम:
messages.tts- सक्रिय
agents.list[].tts - चैनल ओवरराइड, जब चैनल
channels.<channel>.ttsका समर्थन करता है - खाता ओवरराइड, जब चैनल
channels.<channel>.accounts.<id>.ttsपास करता है - इस होस्ट के लिए स्थानीय
/ttsप्राथमिकताएं - इनलाइन
[[tts:...]]निर्देश, जब मॉडल ओवरराइड सक्षम हों
चैनल और खाता ओवरराइड messages.tts जैसी ही संरचना का उपयोग करते हैं और पहले की परतों के ऊपर डीप-मर्ज होते हैं, इसलिए साझा प्रदाता क्रेडेंशियल messages.tts में रह सकते हैं, जबकि कोई चैनल या bot खाता केवल स्पीकर आवाज़, मॉडल, पर्सोना, या ऑटो मोड बदलता है:
{ messages: { tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { speakerVoice: "shimmer" }, }, }, }, }, }, },}पर्सोना
एक पर्सोना एक स्थिर बोली जाने वाली पहचान है जिसे प्रदाताओं में नियतात्मक रूप से लागू किया जा सकता है। यह एक प्रदाता को प्राथमिकता दे सकता है, प्रदाता-निरपेक्ष प्रॉम्प्ट आशय परिभाषित कर सकता है, और आवाज़ों, मॉडलों, प्रॉम्प्ट टेम्पलेटों, seeds, और voice settings के लिए प्रदाता-विशिष्ट bindings रख सकता है।
न्यूनतम पर्सोना
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrator", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, }, },}पूर्ण पर्सोना (प्रदाता-निरपेक्ष प्रॉम्प्ट)
{ 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, }, }, }, }, }, }, },}पर्सोना समाधान
सक्रिय पर्सोना नियतात्मक रूप से चुना जाता है:
/tts persona <id>स्थानीय प्राथमिकता, यदि सेट हो।messages.tts.persona, यदि सेट हो।- कोई पर्सोना नहीं।
प्रदाता चयन explicit-first चलता है:
- प्रत्यक्ष ओवरराइड (CLI, gateway, Talk, अनुमत TTS निर्देश)।
/tts provider <id>स्थानीय प्राथमिकता।- सक्रिय पर्सोना का
provider। messages.tts.provider।- रजिस्ट्री ऑटो-चयन।
हर प्रदाता प्रयास के लिए, OpenClaw इस क्रम में कॉन्फिग मर्ज करता है:
messages.tts.providers.<id>messages.tts.personas.<persona>.providers.<id>- विश्वसनीय अनुरोध ओवरराइड
- अनुमत मॉडल-उत्सर्जित TTS निर्देश ओवरराइड
प्रदाता पर्सोना प्रॉम्प्ट का उपयोग कैसे करते हैं
पर्सोना प्रॉम्प्ट फ़ील्ड (profile, scene, sampleContext, style, accent, pacing, constraints) प्रदाता-निरपेक्ष हैं। हर प्रदाता तय करता है कि उनका उपयोग कैसे करना है:
Google Gemini
पर्सोना प्रॉम्प्ट फ़ील्ड को Gemini TTS प्रॉम्प्ट संरचना में केवल तब लपेटता है जब प्रभावी Google प्रदाता कॉन्फिग promptTemplate: "audio-profile-v1" या personaPrompt सेट करता है। पुराने audioProfile और speakerName फ़ील्ड अब भी Google-विशिष्ट प्रॉम्प्ट टेक्स्ट के रूप में आगे जोड़े जाते हैं। [[tts:text]] ब्लॉक के अंदर [whispers] या [laughs] जैसे इनलाइन ऑडियो टैग Gemini transcript के अंदर संरक्षित रहते हैं; OpenClaw ये टैग जनरेट नहीं करता।
OpenAI
पर्सोना प्रॉम्प्ट फ़ील्ड को अनुरोध के instructions फ़ील्ड में केवल तब मैप करता है जब कोई स्पष्ट OpenAI instructions कॉन्फिग न किया गया हो। स्पष्ट instructions हमेशा प्राथमिक रहता है।
Other providers
केवल personas.<id>.providers.<provider> के अंतर्गत प्रदाता-विशिष्ट पर्सोना bindings का उपयोग करें। पर्सोना प्रॉम्प्ट फ़ील्ड तब तक अनदेखे किए जाते हैं जब तक प्रदाता अपना पर्सोना-प्रॉम्प्ट मैपिंग लागू न करे।
फ़ॉलबैक नीति
fallbackPolicy तब व्यवहार नियंत्रित करता है जब किसी पर्सोना के पास प्रयास किए गए प्रदाता के लिए कोई binding नहीं होता:
| नीति | व्यवहार |
|---|---|
preserve-persona |
डिफ़ॉल्ट। प्रदाता-निरपेक्ष प्रॉम्प्ट फ़ील्ड उपलब्ध रहते हैं; प्रदाता उनका उपयोग कर सकता है या उन्हें अनदेखा कर सकता है। |
provider-defaults |
उस प्रयास के लिए पर्सोना को प्रॉम्प्ट तैयारी से हटा दिया जाता है; अन्य प्रदाताओं पर फ़ॉलबैक जारी रहते हुए प्रदाता अपने neutral defaults उपयोग करता है। |
fail |
उस प्रदाता प्रयास को reasonCode: "not_configured" और personaBinding: "missing" के साथ छोड़ दें। फ़ॉलबैक प्रदाता अब भी आजमाए जाते हैं। |
पूरा TTS अनुरोध केवल तब विफल होता है जब हर प्रयास किया गया प्रदाता छोड़ा जाता है या विफल होता है।
Talk सत्र प्रदाता चयन सत्र-स्कोप्ड है। Talk क्लाइंट को talk.catalog से प्रदाता ids, मॉडल ids, voice ids, और locales चुनने चाहिए और उन्हें Talk सत्र या handoff अनुरोध के माध्यम से पास करना चाहिए। voice सत्र खोलने से messages.tts या वैश्विक Talk प्रदाता defaults बदलने नहीं चाहिए।
मॉडल-संचालित निर्देश
डिफ़ॉल्ट रूप से, सहायक एक ही उत्तर के लिए आवाज़, मॉडल, या गति ओवरराइड करने के लिए [[tts:...]] निर्देश उत्सर्जित कर सकता है, साथ ही expressive cues के लिए एक वैकल्पिक [[tts:text]]...[[/tts:text]] ब्लॉक, जो केवल ऑडियो में दिखाई देना चाहिए:
Here you go. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](laughs) Read the song once more.[[/tts:text]]जब messages.tts.auto "tagged" होता है, ऑडियो ट्रिगर करने के लिए निर्देश आवश्यक होते हैं। Streaming block delivery चैनल के देखने से पहले visible text से निर्देश हटा देता है, भले ही वे adjacent blocks में विभाजित हों।
provider=... तब तक अनदेखा किया जाता है जब तक modelOverrides.allowProvider: true न हो। जब कोई उत्तर provider=... घोषित करता है, तो उस निर्देश की अन्य keys केवल उसी प्रदाता द्वारा parse की जाती हैं; unsupported keys हटा दी जाती हैं और TTS निर्देश warnings के रूप में रिपोर्ट की जाती हैं।
उपलब्ध निर्देश keys:
provider(registered provider id;allowProvider: trueआवश्यक)speakerVoice/speakerVoiceId(legacy aliases:voice,voiceName,voice_name,google_voice,voiceId)model/google_modelstability,similarityBoost,style,speed,useSpeakerBoostvol/volume(MiniMax volume, 0–10)pitch(MiniMax integer pitch, −12 से 12; fractional values काटे जाते हैं)emotion(Volcengine emotion tag)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
मॉडल ओवरराइड पूरी तरह अक्षम करें:
{ messages: { tts: { modelOverrides: { enabled: false } } } }अन्य knobs configurable रखते हुए प्रदाता switching की अनुमति दें:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }Slash commands
एकल कमांड /tts। Discord पर, OpenClaw /voice भी register करता है क्योंकि /tts एक built-in Discord कमांड है — text /tts ... अब भी काम करता है।
/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>व्यवहार नोट्स:
/tts onस्थानीय TTS प्राथमिकता कोalwaysमें लिखता है;/tts offइसेoffमें लिखता है।/tts chat on|off|defaultवर्तमान chat के लिए session-scoped auto-TTS override लिखता है।/tts persona <id>स्थानीय पर्सोना प्राथमिकता लिखता है;/tts persona offइसे साफ़ करता है।/tts latestवर्तमान session transcript से नवीनतम assistant reply पढ़ता है और उसे एक बार audio के रूप में भेजता है। यह duplicate voice sends दबाने के लिए उस reply का केवल hash session entry पर store करता है।/tts audioएक one-off audio reply generate करता है (TTS को on नहीं करता)।limitऔरsummarylocal prefs में store होते हैं, main config में नहीं।/tts statusमें नवीनतम प्रयास के लिए fallback diagnostics शामिल होते हैं —Fallback: <primary> -> <used>,Attempts: ..., और प्रति-प्रयास detail (provider:outcome(reasonCode) latency)।/statusसक्रिय TTS mode के साथ configured provider, model, voice, और sanitized custom endpoint metadata दिखाता है जब TTS enabled हो।
प्रति-यूज़र प्राथमिकताएं
Slash commands स्थानीय ओवरराइड prefsPath में लिखते हैं। डिफ़ॉल्ट ~/.openclaw/settings/tts.json है; इसे OPENCLAW_TTS_PREFS env var या messages.tts.prefsPath से override करें।
| Stored field | प्रभाव |
|---|---|
auto |
स्थानीय auto-TTS override (always, off, …) |
provider |
स्थानीय primary provider override |
persona |
स्थानीय persona override |
maxLength |
Summary threshold (डिफ़ॉल्ट 1500 chars) |
summarize |
Summary toggle (डिफ़ॉल्ट true) |
ये उस host के लिए messages.tts और सक्रिय agents.list[].tts ब्लॉक से प्रभावी config को override करते हैं।
आउटपुट फ़ॉर्मैट (fixed)
TTS voice delivery channel-capability driven है। Channel plugins विज्ञापित करते हैं कि voice-style TTS को native voice-note target के लिए providers से पूछना चाहिए या सामान्य audio-file synthesis रखना चाहिए और केवल compatible output को voice delivery के लिए mark करना चाहिए।
- वॉइस-नोट सक्षम चैनल: वॉइस-नोट उत्तर Opus को प्राथमिकता देते हैं (ElevenLabs से
opus_48000_64, OpenAI सेopus)।- 48kHz / 64kbps वॉइस संदेश के लिए स्पष्टता और आकार का अच्छा संतुलन है।
- Feishu / WhatsApp: जब कोई वॉइस-नोट उत्तर MP3/WebM/WAV/M4A
या किसी अन्य संभावित ऑडियो फ़ाइल के रूप में बनता है, तो channel plugin नेटिव वॉइस संदेश भेजने से पहले
ffmpegके साथ उसे 48kHz Ogg/Opus में ट्रांसकोड करता है। WhatsApp परिणाम को Baileysaudioपेलोड के माध्यम सेptt: trueऔरaudio/ogg; codecs=opusके साथ भेजता है। यदि रूपांतरण विफल होता है, तो Feishu को मूल फ़ाइल अटैचमेंट के रूप में मिलती है; WhatsApp असंगत PTT पेलोड पोस्ट करने के बजाय भेजने में विफल होता है। - अन्य चैनल: MP3 (ElevenLabs से
mp3_44100_128, OpenAI सेmp3)।- 44.1kHz / 128kbps वाणी की स्पष्टता के लिए डिफ़ॉल्ट संतुलन है।
- MiniMax: सामान्य ऑडियो अटैचमेंट के लिए MP3 (
speech-2.8-hdमॉडल, 32kHz सैंपल दर)। चैनल-द्वारा-घोषित वॉइस-नोट लक्ष्यों के लिए, जब चैनल ट्रांसकोडिंग घोषित करता है, OpenClaw डिलीवरी से पहलेffmpegके साथ MiniMax MP3 को 48kHz Opus में ट्रांसकोड करता है। - Xiaomi MiMo: डिफ़ॉल्ट रूप से MP3, या कॉन्फ़िगर होने पर WAV। चैनल-द्वारा-घोषित वॉइस-नोट लक्ष्यों के लिए, जब चैनल ट्रांसकोडिंग घोषित करता है, OpenClaw डिलीवरी से पहले
ffmpegके साथ Xiaomi आउटपुट को 48kHz Opus में ट्रांसकोड करता है। - स्थानीय CLI: कॉन्फ़िगर किए गए
outputFormatका उपयोग करता है। वॉइस-नोट लक्ष्यों को Ogg/Opus में बदला जाता है और टेलीफोनी आउटपुट कोffmpegके साथ कच्चे 16 kHz मोनो PCM में बदला जाता है। - Google Gemini: Gemini API TTS कच्चा 24kHz PCM लौटाता है। OpenClaw उसे ऑडियो अटैचमेंट के लिए WAV के रूप में लपेटता है, वॉइस-नोट लक्ष्यों के लिए 48kHz Opus में ट्रांसकोड करता है, और Talk/टेलीफोनी के लिए सीधे PCM लौटाता है।
- Gradium: ऑडियो अटैचमेंट के लिए WAV, वॉइस-नोट लक्ष्यों के लिए Opus, और टेलीफोनी के लिए 8 kHz पर
ulaw_8000। - Inworld: सामान्य ऑडियो अटैचमेंट के लिए MP3, वॉइस-नोट लक्ष्यों के लिए नेटिव
OGG_OPUS, और Talk/टेलीफोनी के लिए 22050 Hz पर कच्चाPCM। - xAI: डिफ़ॉल्ट रूप से MP3;
responseFormatmp3,wav,pcm,mulaw, याalawहो सकता है। OpenClaw xAI के बैच REST TTS एंडपॉइंट का उपयोग करता है और पूरा ऑडियो अटैचमेंट लौटाता है; इस प्रदाता पथ द्वारा xAI का स्ट्रीमिंग TTS WebSocket उपयोग नहीं किया जाता। इस पथ द्वारा नेटिव Opus वॉइस-नोट फ़ॉर्मैट समर्थित नहीं है। - Microsoft:
microsoft.outputFormatका उपयोग करता है (डिफ़ॉल्टaudio-24khz-48kbitrate-mono-mp3)।- बंडल किया गया ट्रांसपोर्ट
outputFormatस्वीकार करता है, लेकिन सेवा से सभी फ़ॉर्मैट उपलब्ध नहीं होते। - आउटपुट फ़ॉर्मैट मान Microsoft Speech आउटपुट फ़ॉर्मैट का पालन करते हैं (Ogg/WebM Opus सहित)।
- Telegram
sendVoiceOGG/MP3/M4A स्वीकार करता है; यदि आपको सुनिश्चित Opus वॉइस संदेश चाहिए, तो OpenAI/ElevenLabs का उपयोग करें। - यदि कॉन्फ़िगर किया गया Microsoft आउटपुट फ़ॉर्मैट विफल होता है, तो OpenClaw MP3 के साथ पुनः प्रयास करता है।
- बंडल किया गया ट्रांसपोर्ट
OpenAI/ElevenLabs आउटपुट फ़ॉर्मैट प्रति चैनल निश्चित हैं (ऊपर देखें)।
ऑटो-TTS व्यवहार
जब messages.tts.auto सक्षम होता है, OpenClaw:
- यदि उत्तर में पहले से संरचित मीडिया है, तो TTS छोड़ देता है।
- बहुत छोटे उत्तर (10 वर्णों से कम) छोड़ देता है।
- जब सारांश सक्षम होते हैं, तो लंबे उत्तरों का सारांश बनाता है,
summaryModel(याagents.defaults.model.primary) का उपयोग करके। - उत्पन्न ऑडियो को उत्तर से अटैच करता है।
mode: "final"में, टेक्स्ट स्ट्रीम पूरी होने के बाद भी स्ट्रीम किए गए अंतिम उत्तरों के लिए केवल-ऑडियो TTS भेजता है; उत्पन्न मीडिया सामान्य उत्तर अटैचमेंट की तरह उसी चैनल मीडिया सामान्यीकरण से गुजरता है।
यदि उत्तर maxLength से अधिक है और सारांश बंद है (या
सारांश मॉडल के लिए कोई API कुंजी नहीं है), तो ऑडियो छोड़ दिया जाता है और सामान्य टेक्स्ट उत्तर भेजा जाता है।
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 audioचैनल के अनुसार आउटपुट फ़ॉर्मैट
| लक्ष्य | फ़ॉर्मैट |
|---|---|
| Feishu / Matrix / Telegram / WhatsApp | वॉइस-नोट उत्तर Opus को प्राथमिकता देते हैं (ElevenLabs से opus_48000_64, OpenAI से opus)। 48 kHz / 64 kbps स्पष्टता और आकार का संतुलन रखता है। |
| अन्य चैनल | MP3 (ElevenLabs से mp3_44100_128, OpenAI से mp3)। वाणी के लिए 44.1 kHz / 128 kbps डिफ़ॉल्ट। |
| Talk / टेलीफोनी | प्रदाता-नेटिव PCM (Inworld 22050 Hz, Google 24 kHz), या टेलीफोनी के लिए Gradium से ulaw_8000। |
प्रति-प्रदाता नोट्स:
- Feishu / WhatsApp ट्रांसकोडिंग: जब कोई वॉइस-नोट उत्तर MP3/WebM/WAV/M4A के रूप में आता है, तो channel plugin
ffmpegके साथ उसे 48 kHz Ogg/Opus में ट्रांसकोड करता है। WhatsApp Baileys के माध्यम सेptt: trueऔरaudio/ogg; codecs=opusके साथ भेजता है। यदि रूपांतरण विफल होता है: Feishu मूल फ़ाइल अटैच करने पर वापस जाता है; WhatsApp असंगत PTT पेलोड पोस्ट करने के बजाय भेजने में विफल होता है। - MiniMax / Xiaomi MiMo: डिफ़ॉल्ट MP3 (MiniMax
speech-2.8-hdके लिए 32 kHz);ffmpegके ज़रिए वॉइस-नोट लक्ष्यों के लिए 48 kHz Opus में ट्रांसकोड किया जाता है। - स्थानीय CLI: कॉन्फ़िगर किए गए
outputFormatका उपयोग करता है। वॉइस-नोट लक्ष्यों को Ogg/Opus में और टेलीफोनी आउटपुट को कच्चे 16 kHz मोनो PCM में बदला जाता है। - Google Gemini: कच्चा 24 kHz PCM लौटाता है। OpenClaw अटैचमेंट के लिए WAV के रूप में लपेटता है, वॉइस-नोट लक्ष्यों के लिए 48 kHz Opus में ट्रांसकोड करता है, Talk/टेलीफोनी के लिए सीधे PCM लौटाता है।
- Inworld: MP3 अटैचमेंट, नेटिव
OGG_OPUSवॉइस-नोट, Talk/टेलीफोनी के लिए कच्चाPCM22050 Hz। - xAI: डिफ़ॉल्ट रूप से MP3;
responseFormatmp3|wav|pcm|mulaw|alawहो सकता है। xAI के बैच REST एंडपॉइंट का उपयोग करता है — स्ट्रीमिंग WebSocket TTS का उपयोग नहीं किया जाता। नेटिव Opus वॉइस-नोट फ़ॉर्मैट समर्थित नहीं है। - Microsoft:
microsoft.outputFormatका उपयोग करता है (डिफ़ॉल्टaudio-24khz-48kbitrate-mono-mp3)। TelegramsendVoiceOGG/MP3/M4A स्वीकार करता है; यदि आपको सुनिश्चित Opus वॉइस संदेश चाहिए, तो OpenAI/ElevenLabs का उपयोग करें। यदि कॉन्फ़िगर किया गया Microsoft फ़ॉर्मैट विफल होता है, तो OpenClaw MP3 के साथ पुनः प्रयास करता है।
OpenAI और ElevenLabs आउटपुट फ़ॉर्मैट ऊपर सूचीबद्ध अनुसार प्रति चैनल निश्चित हैं।
फ़ील्ड संदर्भ
Top-level messages.tts.*
auto"off" | "always" | "inbound" | "tagged"ऑटो-TTS मोड। inbound केवल इनबाउंड वॉइस संदेश के बाद ऑडियो भेजता है; tagged केवल तब ऑडियो भेजता है जब उत्तर में [[tts:...]] निर्देश या [[tts:text]] ब्लॉक शामिल हो।
enabledbooleanलेगेसी टॉगल। openclaw doctor --fix इसे auto में माइग्रेट करता है।
mode"final" | "all"default: final"all" अंतिम उत्तरों के अतिरिक्त टूल/ब्लॉक उत्तर भी शामिल करता है।
providerstringस्पीच प्रदाता id। सेट न होने पर, OpenClaw रजिस्ट्री ऑटो-सेलेक्ट क्रम में पहले कॉन्फ़िगर किए गए प्रदाता का उपयोग करता है। लेगेसी provider: "edge" को openclaw doctor --fix द्वारा "microsoft" में फिर से लिखा जाता है।
personastringpersonas से सक्रिय persona id। लोअरकेस में सामान्यीकृत।
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
स्थिर बोली जाने वाली पहचान। फ़ील्ड: label, description, provider, fallbackPolicy, prompt, providers.<provider>। Personas देखें।
summaryModelstringऑटो-सारांश के लिए सस्ता मॉडल; डिफ़ॉल्ट agents.defaults.model.primary। provider/model या कॉन्फ़िगर किया गया मॉडल alias स्वीकार करता है।
modelOverridesobjectमॉडल को TTS निर्देश उत्सर्जित करने दें। enabled का डिफ़ॉल्ट true है; allowProvider का डिफ़ॉल्ट false है।
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
स्पीच प्रदाता id से keyed प्रदाता-स्वामित्व वाली सेटिंग्स। लेगेसी डायरेक्ट ब्लॉक (messages.tts.openai, .elevenlabs, .microsoft, .edge) openclaw doctor --fix द्वारा फिर से लिखे जाते हैं; केवल messages.tts.providers.<id> कमिट करें।
maxTextLengthnumberTTS इनपुट वर्णों के लिए कठोर सीमा। अधिक होने पर /tts audio विफल होता है।
timeoutMsnumberअनुरोध timeout मिलीसेकंड में।
prefsPathstringस्थानीय prefs JSON पथ (प्रदाता/सीमा/सारांश) को override करें। डिफ़ॉल्ट ~/.openclaw/settings/tts.json।
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: AZURE_SPEECH_KEY, AZURE_SPEECH_API_KEY, या SPEECH_KEY।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
Azure Speech क्षेत्र (जैसे eastus)। Env: AZURE_SPEECH_REGION या SPEECH_REGION।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVuZHBvaW50IiB0eXBlPSJzdHJpbmci
वैकल्पिक Azure Speech एंडपॉइंट override (alias baseUrl)।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Azure voice ShortName। डिफ़ॉल्ट en-US-JennyNeural। लेगेसी alias: voice।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
SSML भाषा कोड। डिफ़ॉल्ट en-US।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
मानक ऑडियो के लिए Azure X-Microsoft-OutputFormat। डिफ़ॉल्ट audio-24khz-48kbitrate-mono-mp3।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
वॉइस-नोट आउटपुट के लिए Azure X-Microsoft-OutputFormat। डिफ़ॉल्ट ogg-24khz-16bit-mono-opus।
OPENCLAW_DOCS_MARKER:paramClose:
ElevenLabs
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
ELEVENLABS_API_KEY या XI_API_KEY पर वापस जाता है।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
मॉडल id (जैसे eleven_multilingual_v2, eleven_v3)।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
ElevenLabs voice id। लेगेसी alias: voiceId।
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability, similarityBoost, style (प्रत्येक 0..1), useSpeakerBoost (true|false), speed (0.5..2.0, 1.0 = सामान्य)।
applyTextNormalization"auto" | "on" | "off"OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg
2-अक्षर ISO 639-1 (जैसे en, de)।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
best-effort determinism के लिए पूर्णांक 0..4294967295।
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
GEMINI_API_KEY / GOOGLE_API_KEY पर वापस जाता है। यदि छोड़ा गया है, तो TTS env fallback से पहले models.providers.google.apiKey का पुनः उपयोग कर सकता है।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
Gemini TTS मॉडल। डिफ़ॉल्ट gemini-3.1-flash-tts-preview।
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Gemini prebuilt voice नाम। डिफ़ॉल्ट Kore। लेगेसी aliases: voiceName, voice।
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
सक्रिय persona prompt फ़ील्ड को deterministic Gemini TTS prompt संरचना में लपेटने के लिए audio-profile-v1 पर सेट करें।
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
केवल https://generativelanguage.googleapis.com स्वीकार किया जाता है।
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: GRADIUM_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://api.gradium.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट Emma (YTpq7expH9539ERJ). पुराना उपनाम: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
Inworld
Inworld प्राथमिक
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: INWORLD_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://api.inworld.ai.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट inworld-tts-1.5-max. यह भी: inworld-tts-1.5-mini, inworld-tts-1-max, inworld-tts-1.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट Sarah. पुराना उपनाम: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
सैंपलिंग तापमान 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
Local CLI (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
कमांड arguments. {{Text}}, {{OutputPath}}, {{OutputDir}}, {{OutputBase}} placeholders का समर्थन करता है.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
अपेक्षित CLI आउटपुट फ़ॉर्मैट. ऑडियो attachments के लिए डिफ़ॉल्ट mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
कमांड timeout मिलीसेकंड में. डिफ़ॉल्ट 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,Microsoft (no API key)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Microsoft neural voice नाम (जैसे en-US-MichelleNeural). पुराना उपनाम: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
भाषा कोड (जैसे en-US).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
Microsoft आउटपुट फ़ॉर्मैट. डिफ़ॉल्ट audio-24khz-48kbitrate-mono-mp3. bundled Edge-backed transport सभी फ़ॉर्मैट का समर्थन नहीं करता.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
प्रतिशत strings (जैसे +10%, -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
पुराना उपनाम. persisted config को providers.microsoft में फिर से लिखने के लिए openclaw doctor --fix चलाएँ.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
MINIMAX_API_KEY पर fallback करता है. Token Plan auth MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, या MINIMAX_CODING_API_KEY के ज़रिए.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://api.minimax.io. पर्यावरण: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट speech-2.8-hd. पर्यावरण: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट English_expressive_narrator. पर्यावरण: MINIMAX_TTS_VOICE_ID. पुराना उपनाम: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
0.5..2.0. डिफ़ॉल्ट 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg
(0, 10]. डिफ़ॉल्ट 1.0.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi
Integer -12..12. डिफ़ॉल्ट 0. अनुरोध से पहले fractional values को truncate किया जाता है.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
OPENAI_API_KEY पर fallback करता है.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
OpenAI TTS model id (जैसे gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Voice नाम (जैसे alloy, cedar). पुराना उपनाम: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
स्पष्ट OpenAI instructions फ़ील्ड. सेट होने पर, persona prompt फ़ील्ड अपने-आप map नहीं किए जाते.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">Generated OpenAI TTS फ़ील्ड के बाद /audio/speech request bodies में merge किए जाने वाले अतिरिक्त JSON फ़ील्ड. इसका उपयोग Kokoro जैसे OpenAI-compatible endpoints के लिए करें जिन्हें lang जैसी provider-specific keys चाहिए; unsafe prototype keys को अनदेखा किया जाता है.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringOpenAI TTS endpoint override करें. Resolution order: config → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. Non-default values को OpenAI-compatible TTS endpoints माना जाता है, इसलिए custom model और voice names स्वीकार किए जाते हैं.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: OPENROUTER_API_KEY. models.providers.openrouter.apiKey को फिर से उपयोग कर सकता है.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://openrouter.ai/api/v1. पुराने https://openrouter.ai/v1 को normalize किया जाता है.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट hexgrad/kokoro-82m. उपनाम: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
डिफ़ॉल्ट af_alloy. पुराने उपनाम: voice, voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw
डिफ़ॉल्ट mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberVolcengine (BytePlus Seed Speech)
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: VOLCENGINE_TTS_API_KEY या BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट seed-tts-1.0. पर्यावरण: VOLCENGINE_TTS_RESOURCE_ID. जब आपके project के पास TTS 2.0 entitlement हो, तो seed-tts-2.0 का उपयोग करें.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
App key header. डिफ़ॉल्ट aGjiRDfUWi. पर्यावरण: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
Seed Speech TTS HTTP endpoint override करें. पर्यावरण: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
Voice type. डिफ़ॉल्ट en_female_anna_mars_bigtts. पर्यावरण: VOLCENGINE_TTS_VOICE. पुराना उपनाम: voice.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
पुराने Volcengine Speech Console फ़ील्ड. पर्यावरण: VOLCENGINE_TTS_APPID, VOLCENGINE_TTS_TOKEN, VOLCENGINE_TTS_CLUSTER (डिफ़ॉल्ट volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://api.x.ai/v1. पर्यावरण: XAI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट eve. Live voices: ara, eve, leo, rex, sal, una. पुराना उपनाम: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlIiB0eXBlPSJzdHJpbmci
BCP-47 भाषा कोड या auto. डिफ़ॉल्ट en.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJ3YXYiIHwgInBjbSIgfCAibXVsYXciIHwgImFsYXciJw
डिफ़ॉल्ट mp3.
OPENCLAW_DOCS_MARKER:paramClose:
speednumberXiaomi MiMo
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
पर्यावरण: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
डिफ़ॉल्ट https://api.xiaomimimo.com/v1. पर्यावरण: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
डिफ़ॉल्ट mimo-v2.5-tts. पर्यावरण: XIAOMI_TTS_MODEL. mimo-v2-tts और mimo-v2.5-tts-voicedesign का भी समर्थन करता है.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
preset-voice models के लिए डिफ़ॉल्ट mimo_default. पर्यावरण: XIAOMI_TTS_VOICE. पुराना उपनाम: voice. mimo-v2.5-tts-voicedesign के लिए नहीं भेजा जाता.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
डिफ़ॉल्ट mp3. पर्यावरण: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InN0eWxlIiB0eXBlPSJzdHJpbmci
User message के रूप में भेजा गया वैकल्पिक natural-language style instruction; बोला नहीं जाता. mimo-v2.5-tts-voicedesign के लिए, यह voice-design prompt है; छूटने पर OpenClaw डिफ़ॉल्ट देता है.
OPENCLAW_DOCS_MARKER:paramClose:
Agent tool
tts tool text को speech में बदलता है और reply delivery के लिए audio attachment लौटाता है. Feishu, Matrix, Telegram, और WhatsApp पर, audio को file attachment के बजाय voice message के रूप में deliver किया जाता है. इस path पर ffmpeg उपलब्ध होने पर Feishu और WhatsApp non-Opus TTS output को transcode कर सकते हैं.
WhatsApp, Baileys के ज़रिए audio को PTT voice note (audio with ptt: true) के रूप में भेजता है और visible text को PTT audio से अलग से भेजता है, क्योंकि clients voice notes पर captions को consistently render नहीं करते.
Tool वैकल्पिक channel और timeoutMs फ़ील्ड स्वीकार करता है; timeoutMs मिलीसेकंड में per-call provider request timeout है. Per-call values messages.tts.timeoutMs को override करती हैं; configured TTS timeouts किसी भी plugin-authored provider default को override करते हैं.
Gateway RPC
| विधि | उद्देश्य |
|---|---|
tts.status |
वर्तमान TTS state और पिछला attempt पढ़ें. |
tts.enable |
local auto preference को always पर सेट करें. |
tts.disable |
local auto preference को off पर सेट करें. |
tts.convert |
एकबारगी text → audio. |
tts.setProvider |
local provider preference सेट करें. |
tts.setPersona |
local persona preference सेट करें. |
tts.providers |
configured providers और status सूचीबद्ध करें. |
Service links
- OpenAI text-to-speech guide
- OpenAI Audio API reference
- Azure Speech REST text-to-speech
- Azure Speech provider
- ElevenLabs Text to Speech
- ElevenLabs Authentication
- Gradium
- Inworld TTS API
- MiniMax T2A v2 API
- Volcengine TTS HTTP API
- Xiaomi MiMo speech synthesis
- node-edge-tts
- Microsoft Speech output formats
- xAI text to speech