Tools
تبدیل متن به گفتار
OpenClaw میتواند پاسخهای خروجی را با استفاده از 14 ارائهدهندهٔ گفتار به صدا تبدیل کند و پیامهای صوتی بومی را در Feishu، Matrix، Telegram و WhatsApp، پیوستهای صوتی را در سایر جاها، و جریانهای PCM/Ulaw را برای تلفنی و Talk ارسال کند.
TTS نیمهٔ خروجی گفتار در حالت stt-tts متعلق به Talk است. نشستهای Talk از نوع
realtime بومیِ ارائهدهنده، گفتار را بهجای فراخوانی این مسیر TTS، درون ارائهدهندهٔ realtime
تولید میکنند، در حالی که نشستهای transcription پاسخ صوتی دستیار را تولید نمیکنند.
شروع سریع
Pick a provider
OpenAI و ElevenLabs قابلاعتمادترین گزینههای میزبانیشده هستند. Microsoft و Local CLI بدون کلید API کار میکنند. برای فهرست کامل، ماتریس ارائهدهندگان را ببینید.
Set the API key
متغیر محیطی ارائهدهندهٔ خود را export کنید (برای مثال 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 |
TTS سازگار با OpenAI. پیشفرض hexgrad/Kokoro-82M است. |
| ElevenLabs | ELEVENLABS_API_KEY یا XI_API_KEY |
شبیهسازی صدا، چندزبانه، قطعی از طریق seed؛ برای پخش صوتی Discord بهصورت جریانی. |
| Google Gemini | GEMINI_API_KEY یا GOOGLE_API_KEY |
TTS دستهای Gemini API؛ آگاه از پرسونا از طریق promptTemplate: "audio-profile-v1". |
| Gradium | GRADIUM_API_KEY |
خروجی پیام صوتی و تلفنی. |
| Inworld | INWORLD_API_KEY |
API جریانی TTS. پیام صوتی بومی Opus و تلفنی PCM. |
| Local CLI | ندارد | یک فرمان محلی پیکربندیشدهٔ TTS را اجرا میکند. |
| Microsoft | ندارد | TTS عصبی عمومی Edge از طریق node-edge-tts. بهترین تلاش، بدون SLA. |
| MiniMax | MINIMAX_API_KEY (یا Token Plan: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) |
API T2A v2. پیشفرض speech-2.8-hd است. |
| OpenAI | OPENAI_API_KEY |
همچنین برای خلاصهسازی خودکار استفاده میشود؛ از 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) |
API HTTP متعلق به BytePlus Seed Speech. |
| Vydra | VYDRA_API_KEY |
ارائهدهندهٔ مشترک تصویر، ویدئو، و گفتار. |
| xAI | XAI_API_KEY |
TTS دستهای xAI. پیام صوتی بومی Opus پشتیبانی نمیشود. |
| Xiaomi MiMo | XIAOMI_API_KEY |
TTS مربوط به MiMo از طریق تکمیلهای گفتوگوی Xiaomi. |
اگر چند ارائهدهنده پیکربندی شده باشند، ابتدا ارائهدهندهٔ انتخابشده استفاده میشود و
بقیه گزینههای جایگزین هستند. خلاصهسازی خودکار از summaryModel (یا
agents.defaults.model.primary) استفاده میکند، بنابراین اگر خلاصهسازی را فعال نگه میدارید،
آن ارائهدهنده نیز باید احراز هویت شده باشد.
پیکربندی
پیکربندی TTS زیر messages.tts در ~/.openclaw/openclaw.json قرار دارد. یک
preset انتخاب کنید و بلوک ارائهدهنده را سازگار کنید:
Azure Speech
{messages: {tts: { auto: "always", provider: "azure-speech", providers: { "azure-speech": { apiKey: "${AZURE_SPEECH_KEY}", region: "eastus", voice: "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", voiceId: "EXAVITQu4vr4xnSDxMaL", }, },},},}Google Gemini
{messages: {tts: { auto: "always", provider: "google", providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", voiceName: "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}", voiceId: "YTpq7expH9539ERJ", }, },},},}Inworld
{messages: {tts: { auto: "always", provider: "inworld", providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", voiceId: "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, voice: "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", voiceId: "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", voice: "alloy", }, elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", voiceId: "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", voice: "af_alloy", responseFormat: "mp3", }, },},},}Volcengine
{messages: {tts: { auto: "always", provider: "volcengine", providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", voice: "en_female_anna_mars_bigtts", }, },},},}xAI
{messages: {tts: { auto: "always", provider: "xai", providers: { xai: { apiKey: "${XAI_API_KEY}", voiceId: "eve", language: "en", responseFormat: "mp3", }, },},},}Xiaomi MiMo
{messages: {tts: { auto: "always", provider: "xiaomi", providers: { xiaomi: { apiKey: "${XIAOMI_API_KEY}", model: "mimo-v2.5-tts", voice: "mimo_default", format: "mp3", }, },},},}بازنویسیهای صدای هر agent
وقتی یک agent باید با ارائهدهنده، صدا، مدل، پرسونا، یا حالت Auto-TTS متفاوتی صحبت کند،
از agents.list[].tts استفاده کنید. بلوک agent بهصورت deep-merge روی
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: { voiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, }, ], },}برای تثبیت یک پرسونای مخصوص هر عامل، agents.list[].tts.persona را در کنار پیکربندی ارائهدهنده تنظیم کنید؛ این مقدار messages.tts.persona سراسری را فقط برای همان عامل بازنویسی میکند.
ترتیب تقدم برای پاسخهای خودکار، /tts audio، /tts status و ابزار عامل tts:
messages.ttsagents.list[].ttsفعال- بازنویسی کانال، وقتی کانال از
channels.<channel>.ttsپشتیبانی میکند - بازنویسی حساب، وقتی کانال
channels.<channel>.accounts.<id>.ttsرا عبور میدهد - ترجیحات محلی
/ttsبرای این میزبان - دستورهای درونخطی
[[tts:...]]وقتی لغوهای مدل فعال باشند
بازنویسیهای کانال و حساب همان شکل messages.tts را دارند و بهصورت عمیق روی لایههای قبلی ادغام میشوند؛ بنابراین اعتبارنامههای مشترک ارائهدهنده میتوانند در messages.tts بمانند، در حالی که یک کانال یا حساب ربات فقط صدا، مدل، پرسونا یا حالت خودکار را تغییر میدهد:
{ messages: { tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { voice: "shimmer" }, }, }, }, }, }, },}پرسوناها
پرسونا یک هویت گفتاری پایدار است که میتواند بهصورت قطعی در میان ارائهدهندهها اعمال شود. پرسونا میتواند یک ارائهدهنده را ترجیح دهد، نیت پرامپت مستقل از ارائهدهنده را تعریف کند، و اتصالهای اختصاصی هر ارائهدهنده برای صداها، مدلها، الگوهای پرامپت، seedها و تنظیمات صدا را همراه داشته باشد.
پرسونای حداقلی
{ messages: { tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "Narrator", provider: "elevenlabs", providers: { elevenlabs: { voiceId: "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", voiceName: "Algieba", promptTemplate: "audio-profile-v1", }, openai: { model: "gpt-4o-mini-tts", voice: "cedar" }, elevenlabs: { voiceId: "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، اگر تنظیم شده باشد.- بدون پرسونا.
انتخاب ارائهدهنده با تقدم موارد صریح اجرا میشود:
- بازنویسیهای مستقیم (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
فیلدهای پرامپت پرسونا را فقط وقتی پیکربندی مؤثر ارائهدهنده Google مقدار promptTemplate: "audio-profile-v1" یا personaPrompt را تنظیم کرده باشد، در ساختار پرامپت Gemini TTS میپیچد. فیلدهای قدیمیتر audioProfile و speakerName همچنان بهعنوان متن پرامپت اختصاصی Google در ابتدا افزوده میشوند. تگهای صوتی درونخطی مانند [whispers] یا [laughs] داخل یک بلوک [[tts:text]] در رونوشت Gemini حفظ میشوند؛ OpenClaw این تگها را تولید نمیکند.
OpenAI
فیلدهای پرامپت پرسونا را فقط وقتی هیچ instructions صریحی برای OpenAI پیکربندی نشده باشد، به فیلد درخواست instructions نگاشت میکند. instructions صریح همیشه مقدم است.
سایر ارائهدهندهها
فقط از اتصالهای اختصاصی ارائهدهنده برای پرسونا در personas.<id>.providers.<provider> استفاده میکنند. فیلدهای پرامپت پرسونا نادیده گرفته میشوند، مگر اینکه ارائهدهنده نگاشت پرامپت پرسونا مخصوص خود را پیادهسازی کند.
سیاست بازگشت
fallbackPolicy رفتار را وقتی یک پرسونا برای ارائهدهنده مورد تلاش هیچ اتصالی ندارد کنترل میکند:
| سیاست | رفتار |
|---|---|
preserve-persona |
پیشفرض. فیلدهای پرامپت مستقل از ارائهدهنده در دسترس میمانند؛ ارائهدهنده ممکن است از آنها استفاده کند یا آنها را نادیده بگیرد. |
provider-defaults |
پرسونا از آمادهسازی پرامپت برای آن تلاش حذف میشود؛ ارائهدهنده از پیشفرضهای خنثای خود استفاده میکند، در حالی که بازگشت به ارائهدهندههای دیگر ادامه مییابد. |
fail |
آن تلاش ارائهدهنده را با reasonCode: "not_configured" و personaBinding: "missing" رد میکند. ارائهدهندههای بازگشتی همچنان امتحان میشوند. |
کل درخواست TTS فقط وقتی ناموفق میشود که همه ارائهدهندههای امتحانشده رد شوند یا شکست بخورند.
انتخاب ارائهدهنده نشست Talk در محدوده همان نشست است. یک کارخواه Talk باید شناسههای ارائهدهنده، شناسههای مدل، شناسههای صدا و محلیسازیها را از talk.catalog انتخاب کند و آنها را از طریق نشست Talk یا درخواست handoff عبور دهد. باز کردن یک نشست صوتی نباید messages.tts یا پیشفرضهای سراسری ارائهدهنده Talk را تغییر دهد.
دستورهای هدایتشده توسط مدل
بهصورت پیشفرض، دستیار میتواند دستورهای [[tts:...]] را برای بازنویسی صدا، مدل یا سرعت برای یک پاسخ واحد تولید کند، همراه با یک بلوک اختیاری [[tts:text]]...[[/tts:text]] برای نشانههای بیانی که باید فقط در صوت ظاهر شوند:
Here you go. [[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](laughs) Read the song once more.[[/tts:text]]وقتی messages.tts.auto برابر "tagged" باشد، برای فعالسازی صوت دستورها الزامی هستند. تحویل بلوک جریانی، دستورها را پیش از دیده شدن توسط کانال از متن قابلمشاهده حذف میکند، حتی وقتی میان بلوکهای مجاور تقسیم شده باشند.
provider=... نادیده گرفته میشود مگر اینکه modelOverrides.allowProvider: true باشد. وقتی یک پاسخ provider=... را اعلام میکند، کلیدهای دیگر در آن دستور فقط توسط همان ارائهدهنده پردازش میشوند؛ کلیدهای پشتیبانینشده حذف میشوند و بهعنوان هشدارهای دستور TTS گزارش میشوند.
کلیدهای دستور در دسترس:
provider(شناسه ارائهدهنده ثبتشده؛ نیازمندallowProvider: true)voice/voiceName/voice_name/google_voice/voiceIdmodel/google_modelstability،similarityBoost،style،speed،useSpeakerBoostvol/volume(حجم صدای MiniMax، 0–10)pitch(زیر و بمی عدد صحیح MiniMax، −12 تا 12؛ مقادیر اعشاری بریده میشوند)emotion(تگ احساس Volcengine)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
غیرفعال کردن کامل لغوهای مدل:
{ messages: { tts: { modelOverrides: { enabled: false } } } }اجازه دادن به جابهجایی ارائهدهنده با قابلپیکربندی نگه داشتن سایر تنظیمات:
{ messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }دستورهای اسلش
دستور واحد /tts. در Discord، OpenClaw همچنین /voice را ثبت میکند، چون /tts یک دستور داخلی Discord است؛ متن /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یک بازنویسی auto-TTS در محدوده نشست برای گفتوگوی فعلی مینویسد./tts persona <id>ترجیح محلی پرسونا را مینویسد؛/tts persona offآن را پاک میکند./tts latestآخرین پاسخ دستیار را از رونوشت نشست فعلی میخواند و آن را یکبار بهصورت صوتی میفرستد. فقط یک هش از آن پاسخ را روی ورودی نشست ذخیره میکند تا ارسالهای صوتی تکراری سرکوب شوند./tts audioیک پاسخ صوتی یکباره تولید میکند (TTS را روشن نمیکند).limitوsummaryدر ترجیحات محلی ذخیره میشوند، نه در پیکربندی اصلی./tts statusشامل عیبیابی بازگشت برای آخرین تلاش است:Fallback: <primary> -> <used>،Attempts: ...، و جزئیات هر تلاش (provider:outcome(reasonCode) latency)./statusوقتی TTS فعال باشد، حالت فعال TTS بههمراه ارائهدهنده، مدل، صدا و فراداده پاکسازیشده endpoint سفارشی پیکربندیشده را نشان میدهد.
ترجیحات هر کاربر
دستورهای اسلش بازنویسیهای محلی را در prefsPath مینویسند. مقدار پیشفرض ~/.openclaw/settings/tts.json است؛ آن را با متغیر محیطی OPENCLAW_TTS_PREFS یا messages.tts.prefsPath بازنویسی کنید.
| فیلد ذخیرهشده | اثر |
|---|---|
auto |
بازنویسی محلی auto-TTS (always، off، …) |
provider |
بازنویسی ارائهدهنده اصلی محلی |
persona |
بازنویسی پرسونای محلی |
maxLength |
آستانه خلاصهسازی (پیشفرض 1500 نویسه) |
summarize |
کلید روشن/خاموش خلاصهسازی (پیشفرض true) |
این موارد پیکربندی مؤثر از messages.tts بهعلاوه بلوک فعال agents.list[].tts برای آن میزبان را بازنویسی میکنند.
قالبهای خروجی (ثابت)
تحویل صدای TTS توسط قابلیت کانال هدایت میشود. Pluginهای کانال اعلام میکنند که آیا TTS به سبک پیام صوتی باید از ارائهدهندهها هدف بومی voice-note را بخواهد یا سنتز عادی audio-file را حفظ کند و فقط خروجی سازگار را برای تحویل صوتی علامتگذاری کند.
- کانالهای دارای قابلیت یادداشت صوتی: پاسخهای یادداشت صوتی Opus را ترجیح میدهند (
opus_48000_64از ElevenLabs،opusاز OpenAI).- 48kHz / 64kbps مصالحهی خوبی برای پیام صوتی است.
- Feishu / WhatsApp: وقتی یک پاسخ یادداشت صوتی بهصورت MP3/WebM/WAV/M4A
یا فایل صوتی محتمل دیگری تولید شود، Plugin کانال پیش از ارسال پیام صوتی بومی،
آن را با
ffmpegبه Ogg/Opus با 48kHz تبدیل میکند. WhatsApp نتیجه را از طریق payload صوتی Baileys باptt: trueوaudio/ogg; codecs=opusارسال میکند. اگر تبدیل ناموفق باشد، Feishu فایل اصلی را بهعنوان پیوست دریافت میکند؛ ارسال WhatsApp بهجای ارسال payload ناسازگار PTT ناموفق میشود. - کانالهای دیگر: MP3 (
mp3_44100_128از ElevenLabs،mp3از OpenAI).- 44.1kHz / 128kbps توازن پیشفرض برای وضوح گفتار است.
- MiniMax: MP3 (مدل
speech-2.8-hd، نرخ نمونهبرداری 32kHz) برای پیوستهای صوتی معمولی. برای مقصدهای یادداشت صوتی اعلامشده از سوی کانال، وقتی کانال تبدیل را اعلام کند، OpenClaw پیش از تحویل، MP3 تولیدشده توسط MiniMax را باffmpegبه Opus با 48kHz تبدیل میکند. - Xiaomi MiMo: بهطور پیشفرض MP3، یا در صورت پیکربندی WAV. برای مقصدهای یادداشت صوتی اعلامشده از سوی کانال، وقتی کانال تبدیل را اعلام کند، OpenClaw پیش از تحویل، خروجی Xiaomi را با
ffmpegبه Opus با 48kHz تبدیل میکند. - CLI محلی: از
outputFormatپیکربندیشده استفاده میکند. مقصدهای یادداشت صوتی به Ogg/Opus تبدیل میشوند و خروجی تلفنی باffmpegبه PCM تککانالهی خام 16 kHz تبدیل میشود. - Google Gemini: TTS در Gemini API، PCM خام 24kHz برمیگرداند. OpenClaw آن را برای پیوستهای صوتی بهصورت WAV بستهبندی میکند، برای مقصدهای یادداشت صوتی به Opus با 48kHz تبدیل میکند، و برای Talk/تلفنی مستقیماً PCM برمیگرداند.
- Gradium: WAV برای پیوستهای صوتی، Opus برای مقصدهای یادداشت صوتی، و
ulaw_8000با 8 kHz برای تلفنی. - Inworld: MP3 برای پیوستهای صوتی معمولی،
OGG_OPUSبومی برای مقصدهای یادداشت صوتی، وPCMخام با 22050 Hz برای Talk/تلفنی. - xAI: بهطور پیشفرض MP3؛
responseFormatمیتواندmp3،wav،pcm،mulawیاalawباشد. OpenClaw از endpoint دستهای REST TTS در xAI استفاده میکند و یک پیوست صوتی کامل برمیگرداند؛ WebSocket مربوط به TTS جریانی xAI در این مسیر ارائهدهنده استفاده نمیشود. قالب بومی Opus برای یادداشت صوتی در این مسیر پشتیبانی نمیشود. - Microsoft: از
microsoft.outputFormatاستفاده میکند (پیشفرضaudio-24khz-48kbitrate-mono-mp3).- انتقال همراه، یک
outputFormatمیپذیرد، اما همهی قالبها از سرویس در دسترس نیستند. - مقادیر قالب خروجی از قالبهای خروجی Microsoft Speech پیروی میکنند (از جمله Ogg/WebM Opus).
sendVoiceدر Telegram قالبهای OGG/MP3/M4A را میپذیرد؛ اگر به پیامهای صوتی Opus تضمینشده نیاز دارید، از OpenAI/ElevenLabs استفاده کنید.- اگر قالب خروجی پیکربندیشدهی Microsoft ناموفق باشد، OpenClaw با MP3 دوباره تلاش میکند.
- انتقال همراه، یک
قالبهای خروجی OpenAI/ElevenLabs برای هر کانال ثابت هستند (بالا را ببینید).
رفتار Auto-TTS
وقتی messages.tts.auto فعال باشد، OpenClaw:
- اگر پاسخ از قبل شامل رسانه یا دستور
MEDIA:باشد، TTS را رد میکند. - پاسخهای بسیار کوتاه را رد میکند (کمتر از 10 نویسه).
- وقتی خلاصهها فعال باشند، پاسخهای طولانی را با استفاده از
summaryModel(یاagents.defaults.model.primary) خلاصه میکند. - صوت تولیدشده را به پاسخ پیوست میکند.
- در
mode: "final"، همچنان پس از کامل شدن جریان متن، TTS فقطصوتی را برای پاسخهای نهایی جریانی ارسال میکند؛ رسانهی تولیدشده از همان عادیسازی رسانهی کانال مانند پیوستهای پاسخ معمولی عبور میکند.
اگر پاسخ از maxLength فراتر برود و خلاصه خاموش باشد (یا کلید API برای
مدل خلاصه وجود نداشته باشد)، صوت رد میشود و پاسخ متنی معمولی ارسال میشود.
Reply -> TTS enabled? no -> send text yes -> has media / 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 (opus_48000_64 از ElevenLabs، opus از OpenAI) استفاده میکنند. 48 kHz / 64 kbps وضوح و حجم را متعادل میکند. |
| کانالهای دیگر | MP3 (mp3_44100_128 از ElevenLabs، mp3 از OpenAI). 44.1 kHz / 128 kbps پیشفرض برای گفتار است. |
| Talk / تلفنی | PCM بومیِ ارائهدهنده (Inworld 22050 Hz، Google 24 kHz)، یا ulaw_8000 از Gradium برای تلفنی. |
نکات هر ارائهدهنده:
- تبدیل Feishu / WhatsApp: وقتی پاسخ پیام صوتی بهصورت MP3/WebM/WAV/M4A وارد میشود، Plugin کانال آن را با
ffmpegبه Ogg/Opus با 48 kHz تبدیل میکند. WhatsApp از طریق Baileys باptt: trueوaudio/ogg; codecs=opusارسال میکند. اگر تبدیل ناموفق باشد: Feishu به پیوستکردن فایل اصلی بازمیگردد؛ ارسال WhatsApp بهجای انتشار یک بارِ PTT ناسازگار، ناموفق میشود. - MiniMax / Xiaomi MiMo: پیشفرض MP3 است (32 kHz برای MiniMax
speech-2.8-hd)؛ برای مقصدهای پیام صوتی از طریقffmpegبه Opus با 48 kHz تبدیل میشود. - CLI محلی: از
outputFormatپیکربندیشده استفاده میکند. مقصدهای پیام صوتی به Ogg/Opus و خروجی تلفنی به PCM خامِ تککاناله با 16 kHz تبدیل میشوند. - Google Gemini: PCM خام با 24 kHz برمیگرداند. OpenClaw برای پیوستها آن را بهصورت WAV بستهبندی میکند، برای مقصدهای پیام صوتی به Opus با 48 kHz تبدیل میکند، و برای Talk/تلفنی مستقیماً PCM برمیگرداند.
- Inworld: پیوستهای MP3، پیام صوتی بومی
OGG_OPUS، PCM خامPCMبا 22050 Hz برای Talk/تلفنی. - xAI: بهطور پیشفرض MP3؛
responseFormatمیتواندmp3|wav|pcm|mulaw|alawباشد. از نقطه پایانی REST دستهای xAI استفاده میکند - TTS جریانی WebSocket استفاده نمیشود. قالب بومی پیام صوتی Opus پشتیبانی نمیشود. - Microsoft: از
microsoft.outputFormatاستفاده میکند (پیشفرضaudio-24khz-48kbitrate-mono-mp3).sendVoiceدر Telegram قالبهای OGG/MP3/M4A را میپذیرد؛ اگر به پیامهای صوتی Opus تضمینشده نیاز دارید، از OpenAI/ElevenLabs استفاده کنید. اگر قالب پیکربندیشده Microsoft ناموفق باشد، OpenClaw با MP3 دوباره تلاش میکند.
قالبهای خروجی OpenAI و ElevenLabs برای هر کانال همانطور که در بالا فهرست شدهاند ثابت هستند.
مرجع فیلدها
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شناسه ارائهدهنده گفتار. وقتی تنظیم نشده باشد، OpenClaw نخستین ارائهدهنده پیکربندیشده را طبق ترتیب انتخاب خودکار رجیستری استفاده میکند. provider: "edge" قدیمی توسط openclaw doctor --fix به "microsoft" بازنویسی میشود.
personastringشناسه پرسونای فعال از personas. به حروف کوچک نرمالسازی میشود.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
هویت گفتاری پایدار. فیلدها: label، description، provider، fallbackPolicy، prompt، providers.<provider>. پرسوناها را ببینید.
summaryModelstringمدل ارزان برای خلاصهسازی خودکار؛ پیشفرض agents.defaults.model.primary است. provider/model یا نام مستعار مدل پیکربندیشده را میپذیرد.
modelOverridesobjectبه مدل اجازه میدهد دستورهای TTS تولید کند. enabled بهطور پیشفرض true است؛ allowProvider بهطور پیشفرض false است.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb3ZpZGVycy48aWQ
" type="object">
تنظیمات متعلق به ارائهدهنده که با شناسه ارائهدهنده گفتار کلیدگذاری شدهاند. بلوکهای مستقیم قدیمی (messages.tts.openai، .elevenlabs، .microsoft، .edge) توسط openclaw doctor --fix بازنویسی میشوند؛ فقط messages.tts.providers.<id> را commit کنید.
maxTextLengthnumberسقف سخت برای تعداد نویسههای ورودی TTS. اگر از آن فراتر رود، /tts audio ناموفق میشود.
timeoutMsnumberمهلت درخواست بر حسب میلیثانیه.
prefsPathstringمسیر JSON تنظیمات محلی را بازنویسی میکند (ارائهدهنده/محدودیت/خلاصه). پیشفرض ~/.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 (نام مستعار baseUrl).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
ShortName صدای Azure. پیشفرض en-US-JennyNeural.
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
شناسه مدل (مثلاً eleven_multilingual_v2، eleven_v3).
OPENCLAW_DOCS_MARKER:paramClose:
voiceIdstringvoiceSettingsobjectstability، similarityBoost، style (هرکدام 0..1)، useSpeakerBoost (true|false)، speed (0.5..2.0، 1.0 = عادی).
applyTextNormalization"auto" | "on" | "off"OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg
ISO 639-1 دوحرفی (مثلاً en، de).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI
عدد صحیح 0..4294967295 برای تعینپذیری در حد بهترین تلاش.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
به GEMINI_API_KEY / GOOGLE_API_KEY بازمیگردد. اگر حذف شود، TTS میتواند پیش از بازگشت به env، از models.providers.google.apiKey دوباره استفاده کند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
مدل TTS Gemini. پیشفرض gemini-3.1-flash-tts-preview.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTmFtZSIgdHlwZT0ic3RyaW5nIg
نام صدای ازپیشساخته Gemini. پیشفرض Kore. نام مستعار: voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
برای بستهبندی فیلدهای اعلان پرسونای فعال در ساختار اعلان TTS تعینپذیر Gemini، روی 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:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض Emma (YTpq7expH9539ERJ).
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:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض Sarah.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi
دمای نمونهبرداری 0..2.
OPENCLAW_DOCS_MARKER:paramClose:
CLI محلی (tts-local-cli)
commandstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFyZ3MiIHR5cGU9InN0cmluZ1tdIg
آرگومانهای فرمان. از جاینگهدارهای {{Text}}، {{OutputPath}}، {{OutputDir}}، {{OutputBase}} پشتیبانی میکند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0nIm1wMyIgfCAib3B1cyIgfCAid2F2Iic
قالب خروجی مورد انتظار CLI. پیشفرض mp3 برای پیوستهای صوتی.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRpbWVvdXRNcyIgdHlwZT0ibnVtYmVyIg
مهلت زمانی فرمان بر حسب میلیثانیه. پیشفرض 120000.
OPENCLAW_DOCS_MARKER:paramClose:
cwdstringenv"Record<string,Microsoft (بدون کلید API)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
نام صدای عصبی Microsoft (مثلاً en-US-MichelleNeural).
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. همه قالبها توسط انتقال همراه مبتنی بر Edge پشتیبانی نمیشوند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJhdGUgLyBwaXRjaCAvIHZvbHVtZSIgdHlwZT0ic3RyaW5nIg
رشتههای درصدی (مثلاً +10%، -5%).
OPENCLAW_DOCS_MARKER:paramClose:
saveSubtitlesbooleanproxystringtimeoutMsnumberOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk
نام مستعار قدیمی. openclaw doctor --fix را اجرا کنید تا پیکربندی ذخیرهشده به providers.microsoft بازنویسی شود.
OPENCLAW_DOCS_MARKER:paramClose:
MiniMax
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
به MINIMAX_API_KEY برمیگردد. احراز هویت Token Plan از طریق 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:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض English_expressive_narrator. محیط: MINIMAX_TTS_VOICE_ID.
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
عدد صحیح -12..12. پیشفرض 0. مقدارهای کسری پیش از درخواست قطع میشوند.
OPENCLAW_DOCS_MARKER:paramClose:
OpenAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
به OPENAI_API_KEY برمیگردد.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
شناسه مدل TTS در OpenAI (مثلاً gpt-4o-mini-tts).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
نام صدا (مثلاً alloy، cedar).
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
فیلد صریح instructions در OpenAI. وقتی تنظیم شود، فیلدهای پرامپت شخصیت بهصورت خودکار نگاشت نمیشوند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">فیلدهای JSON اضافی که پس از فیلدهای تولیدشده OpenAI TTS در بدنههای درخواست /audio/speech ادغام میشوند. از این برای نقاط پایانی سازگار با OpenAI مانند Kokoro که به کلیدهای ویژه ارائهدهنده مثل lang نیاز دارند استفاده کنید؛ کلیدهای ناامن prototype نادیده گرفته میشوند.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringنقطه پایانی OpenAI TTS را بازنویسی کنید. ترتیب تفکیک: پیکربندی → OPENAI_TTS_BASE_URL → https://api.openai.com/v1. مقدارهای غیرپیشفرض بهعنوان نقاط پایانی TTS سازگار با OpenAI در نظر گرفته میشوند، بنابراین نامهای مدل و صدای سفارشی پذیرفته میشوند.
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 نرمالسازی میشود.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
پیشفرض hexgrad/kokoro-82m. نام مستعار: modelId.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
پیشفرض af_alloy. نام مستعار: 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. وقتی پروژه شما مجوز TTS 2.0 دارد، از seed-tts-2.0 استفاده کنید.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
هدر کلید برنامه. پیشفرض aGjiRDfUWi. محیط: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
نقطه پایانی HTTP برای Seed Speech TTS را بازنویسی کنید. محیط: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
نوع صدا. پیشفرض en_female_anna_mars_bigtts. محیط: VOLCENGINE_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
فیلدهای قدیمی کنسول گفتار Volcengine. محیط: 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:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض eve. صداهای زنده: ara، eve، leo، rex، sal، una.
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 پشتیبانی میکند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
پیشفرض mimo_default. محیط: XIAOMI_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
پیشفرض mp3. محیط: XIAOMI_TTS_FORMAT.
OPENCLAW_DOCS_MARKER:paramClose:
stylestringابزار عامل
ابزار tts متن را به گفتار تبدیل میکند و یک پیوست صوتی برای
تحویل پاسخ برمیگرداند. در Feishu، Matrix، Telegram و WhatsApp، صدا
بهجای پیوست فایل، بهصورت پیام صوتی تحویل داده میشود. Feishu و
WhatsApp میتوانند در این مسیر، وقتی ffmpeg در دسترس باشد، خروجی TTS غیر Opus را ترنسکد کنند.
WhatsApp صدا را از طریق Baileys بهعنوان یادداشت صوتی PTT (audio با
ptt: true) ارسال میکند و متن قابل مشاهده را جداگانه از صدای PTT میفرستد، زیرا
کلاینتها کپشنها را روی یادداشتهای صوتی بهطور یکنواخت رندر نمیکنند.
این ابزار فیلدهای اختیاری channel و timeoutMs را میپذیرد؛ timeoutMs یک
مهلت زمانی درخواست ارائهدهنده برای هر فراخوانی، بر حسب میلیثانیه است.
RPC Gateway
| روش | هدف |
|---|---|
tts.status |
وضعیت فعلی TTS و آخرین تلاش را بخواند. |
tts.enable |
ترجیح خودکار محلی را روی always تنظیم کند. |
tts.disable |
ترجیح خودکار محلی را روی off تنظیم کند. |
tts.convert |
تبدیل یکباره متن → صدا. |
tts.setProvider |
ترجیح ارائهدهنده محلی را تنظیم کند. |
tts.setPersona |
ترجیح شخصیت محلی را تنظیم کند. |
tts.providers |
ارائهدهندگان پیکربندیشده و وضعیت را فهرست کند. |
پیوندهای سرویس
- راهنمای متنبهگفتار OpenAI
- مرجع API صوتی OpenAI
- متنبهگفتار REST برای Azure Speech
- ارائهدهنده Azure Speech
- متن به گفتار ElevenLabs
- احراز هویت ElevenLabs
- Gradium
- API Inworld TTS
- API MiniMax T2A v2
- API HTTP برای Volcengine TTS
- سنتز گفتار Xiaomi MiMo
- node-edge-tts
- قالبهای خروجی Microsoft Speech
- متن به گفتار xAI