Tools
تبدیل متن به گفتار
OpenClaw پاسخهای خروجی را با استفاده از 14 ارائهدهنده گفتار به صوت تبدیل میکند: پیامهای صوتی بومی در Feishu، Matrix، Telegram و WhatsApp؛ پیوستهای صوتی در همهجای دیگر؛ و جریانهای PCM/Ulaw برای تلفن و Talk.
TTS بخش خروجی گفتار در حالت stt-ttsِ Talk است (talk.speak نیز از همین
مسیر سنتز استفاده میکند). نشستهای Talk بومیِ ارائهدهنده با realtime گفتار را
درون ارائهدهنده بلادرنگ سنتز میکنند؛ نشستهای transcription هرگز
پاسخ صوتی دستیار را سنتز نمیکنند.
شروع سریع
انتخاب ارائهدهنده
OpenAI و ElevenLabs مطمئنترین گزینههای میزبانیشده هستند. Microsoft و CLI محلی بدون کلید API کار میکنند. برای فهرست کامل، ماتریس ارائهدهندگان را ببینید.
تنظیم کلید API
متغیر محیطی ارائهدهنده خود را صادر کنید (برای نمونه OPENAI_API_KEY،
ELEVENLABS_API_KEY). Microsoft و CLI محلی به کلید نیاز ندارند.
فعالسازی در پیکربندی
tts.auto: "always" و tts.provider را تنظیم کنید:
{ tts: { auto: "always", provider: "elevenlabs", },}آزمایش در گفتوگو
/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. |
| CLI محلی | هیچکدام | یک فرمان محلی پیکربندیشده TTS را اجرا میکند. |
| Microsoft | هیچکدام | TTS عصبی عمومی Edge از طریق node-edge-tts. بهصورت بهترین تلاش، بدون SLA. |
| MiniMax | MINIMAX_API_KEY (یا طرح توکن: MINIMAX_OAUTH_TOKEN، MINIMAX_CODE_PLAN_KEY، MINIMAX_CODING_API_KEY) |
API نسخه 2 T2A. مقدار پیشفرض 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/توکن قدیمی: VOLCENGINE_TTS_APPID/_TOKEN) |
API HTTP گفتار BytePlus Seed. |
| 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 در ~/.openclaw/openclaw.json زیر tts قرار دارد. یک
پیشتنظیم انتخاب کنید و بلوک ارائهدهنده را تطبیق دهید. فیلدهای speakerVoice/speakerVoiceId
که در ادامه آمدهاند، فیلدهای معیار هستند؛ نام فیلدهای اختصاصی voice/voiceId/
voiceName هر ارائهدهنده همچنان بهعنوان نامهای مستعار قدیمی کار میکنند.
Azure Speech
{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
{tts: {auto: "always",provider: "elevenlabs",providers: { elevenlabs: { apiKey: "${ELEVENLABS_API_KEY}", model: "eleven_multilingual_v2", speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", },},},}Google Gemini
{tts: {auto: "always",provider: "google",providers: { google: { apiKey: "${GEMINI_API_KEY}", model: "gemini-3.1-flash-tts-preview", speakerVoice: "Kore", // درخواستهای اختیاری سبک به زبان طبیعی: // audioProfile: "با لحنی آرام و شبیه میزبان پادکست صحبت کن.", // speakerName: "Alex", },},},}Gradium
{tts: {auto: "always",provider: "gradium",providers: { gradium: { apiKey: "${GRADIUM_API_KEY}", speakerVoiceId: "YTpq7expH9539ERJ", },},},}Inworld
{tts: {auto: "always",provider: "inworld",providers: { inworld: { apiKey: "${INWORLD_API_KEY}", modelId: "inworld-tts-1.5-max", speakerVoiceId: "Sarah", temperature: 0.7, },},},}CLI محلی
{tts: {auto: "always",provider: "tts-local-cli",providers: { "tts-local-cli": { command: "say", args: ["-o", "{{OutputPath}}", "{{Text}}"], outputFormat: "wav", timeoutMs: 120000, },},},}Microsoft (بدون کلید)
{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
{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
{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
{tts: {auto: "always",provider: "openrouter",providers: { openrouter: { apiKey: "${OPENROUTER_API_KEY}", model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", },},},}Volcengine
{tts: {auto: "always",provider: "volcengine",providers: { volcengine: { apiKey: "${VOLCENGINE_TTS_API_KEY}", resourceId: "seed-tts-1.0", speakerVoice: "en_female_anna_mars_bigtts", },},},}xAI
{tts: {auto: "always",provider: "xai",providers: { xai: { apiKey: "${XAI_API_KEY}", speakerVoiceId: "eve", language: "en", responseFormat: "mp3", },},},}Xiaomi MiMo
{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 را روی
درخواست طراحی صدا تنظیم کنید. OpenClaw آن درخواست را بهعنوان پیام TTS با نقش user ارسال میکند
و برای مدل voicedesign، audio.voice را ارسال نمیکند.
بازنویسیهای صدا برای هر عامل
وقتی یک عامل باید با ارائهدهنده، صدا، مدل، پرسونا یا حالت TTS خودکار متفاوتی صحبت کند،
از agents.entries.*.tts استفاده کنید. بلوک عامل بهصورت ادغام عمیق روی
tts اعمال میشود؛ بنابراین اطلاعات احراز هویت ارائهدهنده میتوانند در پیکربندی سراسری ارائهدهنده باقی بمانند:
{ 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.entries.*.tts.persona را در کنار پیکربندی ارائهدهنده
تنظیم کنید — این مقدار فقط برای همان عامل، tts.persona سراسری را لغو میکند.
ترتیب تقدم برای پاسخهای خودکار، /tts audio، /tts status و ابزار عامل
tts:
ttsagents.entries.*.ttsفعال- بازنویسی کانال، وقتی کانال از
channels.<channel>.ttsپشتیبانی میکند - بازنویسی حساب، وقتی کانال
channels.<channel>.accounts.<id>.ttsرا ارسال میکند - ترجیحات محلی
/ttsبرای این میزبان - دستورالعملهای درونخطی
[[tts:...]]وقتی بازنویسیهای مبتنی بر مدل فعال باشند
بازنویسیهای کانال و حساب همان ساختار tts را دارند و بهصورت عمیق
روی لایههای پیشین ادغام میشوند؛ بنابراین اعتبارنامههای مشترک ارائهدهنده میتوانند در
tts باقی بمانند، درحالیکه یک کانال یا حساب ربات فقط صدای گوینده، مدل، پرسونا
یا حالت خودکار را تغییر میدهد:
{ tts: { provider: "openai", providers: { openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" }, }, }, channels: { feishu: { accounts: { english: { tts: { providers: { openai: { speakerVoice: "shimmer" }, }, }, }, }, }, },}پرسوناها
پرسونا یک هویت گفتاری پایدار است که میتوان آن را بهصورت قطعی در میان ارائهدهندگان اعمال کرد. پرسونا میتواند یک ارائهدهنده را ترجیح دهد، مقصود اعلان مستقل از ارائهدهنده را تعریف کند و اتصالهای ویژهٔ ارائهدهنده را برای صداها، مدلها، الگوهای اعلان، بذرها و تنظیمات صدا در خود نگه دارد.
پرسونای حداقلی
{ tts: { auto: "always", persona: "narrator", personas: { narrator: { label: "راوی", provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL", modelId: "eleven_multilingual_v2", }, }, }, }, },}پرسونای کامل (شکلدهی ویژهٔ ارائهدهنده)
{ tts: { auto: "always", persona: "alfred", personas: { alfred: { label: "آلفرد", description: "راوی پیشخدمت بریتانیایی با لحنی خشک و گرم.", provider: "google", fallbackPolicy: "preserve-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>، اگر تنظیم شده باشد. tts.persona، اگر تنظیم شده باشد.- بدون پرسونا.
انتخاب ارائهدهنده ابتدا موارد صریح را بررسی میکند:
- بازنویسیهای مستقیم (CLI، Gateway، Talk و دستورالعملهای مجاز TTS).
- ترجیح محلی
/tts provider <id>. providerپرسونای فعال.tts.provider.- انتخاب خودکار رجیستری.
برای هر تلاش ارائهدهنده، OpenClaw پیکربندیها را با این ترتیب ادغام میکند:
tts.providers.<id>tts.personas.<persona>.providers.<id>- بازنویسیهای درخواست مورداعتماد
- بازنویسیهای مجاز دستورالعمل TTS صادرشده از مدل
شکلدهی سفارشی پرسونا
پیکربندی مستقل از ارائهدهندهٔ personas.<id>.prompt.* بازنشسته شده است. Doctor آن
فیلدها را حذف میکند و به درگاه ارائهدهندهٔ گفتار اشاره میکند. تنظیمات ارائهدهندهٔ
داخلی را زیر personas.<id>.providers.<provider> قرار دهید (برای مثال
personaPrompt گوگل یا instructions OpenAI). برای شکلدهی سفارشی، یک
Plugin ارائهدهندهٔ گفتار با prepareSynthesis(ctx) پیادهسازی کنید و پیش از اجرای
synthesize()، متن تنظیمشده، پیکربندی ارائهدهنده یا بازنویسیها را برگردانید. این کار ساخت
اعلان بیانی را در کد ارائهدهنده نگه میدارد؛ جایی که معناشناسی درخواست مشخص است.
سیاست بازگشت جایگزین
fallbackPolicy رفتار را هنگامی کنترل میکند که پرسونا برای ارائهدهندهٔ
مورد تلاش هیچ اتصالی ندارد:
| سیاست | رفتار |
|---|---|
preserve-persona |
پیشفرض. فیلدهای اعلان مستقل از ارائهدهنده در دسترس میمانند؛ ارائهدهنده میتواند از آنها استفاده کند یا نادیدهشان بگیرد. |
provider-defaults |
پرسونا برای آن تلاش از آمادهسازی اعلان کنار گذاشته میشود؛ ارائهدهنده از پیشفرضهای خنثی خود استفاده میکند، درحالیکه بازگشت به ارائهدهندگان دیگر ادامه مییابد. |
fail |
تلاش آن ارائهدهنده را با reasonCode: "not_configured" و personaBinding: "missing" رد کنید. ارائهدهندگان جایگزین همچنان امتحان میشوند. |
کل درخواست TTS فقط زمانی ناموفق میشود که همهٔ ارائهدهندگان مورد تلاش رد شوند یا شکست بخورند.
انتخاب ارائهدهندهٔ نشست Talk در محدودهٔ همان نشست است. کلاینت Talk باید شناسههای
ارائهدهنده، مدل و صدا و همچنین محلیها را از talk.catalog انتخاب کند و آنها را
از طریق درخواست نشست Talk یا تحویل ارسال کند. باز کردن یک نشست صوتی نباید
tts یا پیشفرضهای سراسری ارائهدهندهٔ Talk را تغییر دهد.
دستورالعملهای مبتنی بر مدل
بهطور پیشفرض، دستیار میتواند دستورالعملهای [[tts:...]] را برای بازنویسی
صدا، مدل یا سرعت در یک پاسخ واحد صادر کند؛ همچنین میتواند یک بلوک اختیاری
[[tts:text]]...[[/tts:text]] برای نشانههای بیانی داشته باشد که باید فقط در
صدا ظاهر شوند:
بفرمایید. [[tts:speakerVoiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]][[tts:text]](میخندد) ترانه را یک بار دیگر بخوان.[[/tts:text]]وقتی tts.auto برابر با "tagged" باشد، برای فعالکردن
صدا وجود دستورالعملها الزامی است. تحویل جریانی بلوک، دستورالعملها را پیش از آنکه
کانال متن قابلمشاهده را دریافت کند حذف میکند، حتی اگر میان بلوکهای مجاور تقسیم شده باشند.
provider=... نادیده گرفته میشود، مگر اینکه modelOverrides.allowProvider: true. وقتی یک
پاسخ provider=... را اعلام میکند، کلیدهای دیگر آن دستورالعمل فقط توسط
همان ارائهدهنده تجزیه میشوند؛ کلیدهای پشتیبانینشده حذف و بهعنوان هشدارهای
دستورالعمل TTS گزارش میشوند.
کلیدهای دستورالعمل موجود:
provider(شناسهٔ ارائهدهندهٔ ثبتشده؛ نیازمندallowProvider: true)speakerVoice/speakerVoiceId(نامهای مستعار قدیمی:voice،voiceName،voice_name،google_voice،voiceId)model/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یک بازنویسی خودکار TTS در محدودهٔ نشست برای گفتوگوی جاری مینویسد./tts persona <id>ترجیح محلی پرسونا را مینویسد؛/tts persona offآن را پاک میکند./tts latestآخرین پاسخ دستیار را از رونوشت نشست جاری میخواند و یک بار آن را بهصورت صدا ارسال میکند. برای جلوگیری از ارسالهای صوتی تکراری، فقط هش آن پاسخ را در ورودی نشست ذخیره میکند./tts audioیک پاسخ صوتی یکباره تولید میکند (TTS را فعال نمیکند)./tts limit <chars>مقادیر 100–4096 را میپذیرد (4096 حداکثر زیرنویس/پیام Telegram است)؛ مقادیر خارج از این بازه رد میشوند.limitوsummaryدر ترجیحات محلی ذخیره میشوند، نه در پیکربندی اصلی./tts statusشامل جزئیات تشخیصی بازگشت جایگزین برای آخرین تلاش است —Fallback: <primary> -> <used>،Attempts: ...و جزئیات هر تلاش (provider:outcome(reasonCode) latency)./statusحالت فعال TTS و نیز ارائهدهنده، مدل، صدا و فرادادهٔ پالایششدهٔ نقطهٔ پایانی سفارشی را هنگام فعالبودن TTS نمایش میدهد.
ترجیحات هر کاربر
فرمانهای اسلش، بازنویسیهای محلی را در مسیر ترجیحات TTS مینویسند. مقدار پیشفرض
~/.openclaw/settings/tts.json است؛ آن را با OPENCLAW_TTS_PREFS بازنویسی کنید. Doctor
مقدار سراسری بازنشستهشدهٔ tts.prefsPath را به وضعیت مشترک دستگاه منتقل میکند.
راهاندازیهای پیشرفتهٔ چندعاملی همچنان میتوانند agents.entries.<id>.tts.prefsPath را تنظیم کنند،
وقتی عاملها عمداً از مخازن ترجیحات جداگانه استفاده میکنند.
| فیلد ذخیرهشده | اثر |
|---|---|
auto |
بازنویسی محلی TTS خودکار (always، off، …) |
provider |
بازنویسی محلی ارائهدهندهٔ اصلی |
persona |
بازنویسی محلی پرسونا |
maxLength |
آستانهٔ خلاصهسازی/کوتاهسازی (پیشفرض 1500 نویسه، بازهٔ /tts limit برابر با 100–4096) |
summarize |
کلید تغییر وضعیت خلاصهسازی (پیشفرض true) |
این موارد، پیکربندی مؤثر حاصل از tts بهاضافهٔ بلوک فعال
agents.entries.*.tts را برای آن میزبان بازنویسی میکنند.
قالبهای خروجی
تحویل صدای TTS بر اساس قابلیتهای کانال انجام میشود. Pluginهای کانال اعلام میکنند
که آیا TTS با سبک صوتی باید از ارائهدهندگان یک هدف بومی voice-note درخواست کند یا
سنتز عادی audio-file را نگه دارد، و آیا کانال خروجی
غیربومی را پیش از ارسال تبدیل کدگذاری میکند.
| مقصد | قالب |
|---|---|
| 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 تعادل پیشفرض برای گفتار است. |
| مکالمه / تلفن | PCM بومی ارائهدهنده (Inworld با 22050 Hz، Google با 24 kHz)، یا ulaw_8000 از Gradium برای تلفن. |
نکات مربوط به هر ارائهدهنده:
- تبدیل کدگذاری Feishu / WhatsApp: وقتی پاسخ پیام صوتی بهصورت MP3/WebM/WAV/M4A یا فایل صوتی محتمل دیگری دریافت شود، Plugin کانال پیش از ارسال پیام صوتی بومی، آن را با
ffmpeg(libopus، 64 kbps) به Ogg/Opus با نرخ 48 kHz تبدیل میکند. WhatsApp نتیجه را از طریق محموله Baileys با نامaudioهمراه باptt: trueوaudio/ogg; codecs=opusارسال میکند. در صورت شکست تبدیل کدگذاری: Feishu خطا را مدیریت میکند و به ارسال فایل اصلی بهصورت پیوست معمولی برمیگردد؛ WhatsApp راهکار جایگزینی ندارد، بنابراین خود ارسال ناموفق میشود و محموله PTT ناسازگار منتشر نمیشود. - MiniMax: برای پیوستهای صوتی معمولی، MP3 (مدل
speech-2.8-hd، نرخ نمونهبرداری 32 kHz)؛ برای مقصدهای پیام صوتی اعلامشده توسط کانال، باffmpegبه Opus با نرخ 48 kHz تبدیل میشود. - Xiaomi MiMo: بهطور پیشفرض MP3، یا در صورت پیکربندی WAV؛ برای مقصدهای پیام صوتی اعلامشده توسط کانال، با
ffmpegبه Opus با نرخ 48 kHz تبدیل میشود. - CLI محلی: از
outputFormatپیکربندیشده استفاده میکند. مقصدهای پیام صوتی به Ogg/Opus تبدیل میشوند و خروجی تلفن باffmpegبه PCM خام تککاناله 16 kHz تبدیل میشود. - Google Gemini: PCM خام 24 kHz برمیگرداند. OpenClaw آن را برای پیوستهای صوتی در قالب WAV قرار میدهد، برای مقصدهای پیام صوتی به Opus با نرخ 48 kHz تبدیل میکند و برای مکالمه/تلفن، PCM را مستقیماً برمیگرداند.
- Gradium: WAV برای پیوستهای صوتی، Opus برای مقصدهای پیام صوتی و
ulaw_8000با نرخ 8 kHz برای تلفن. - Inworld: MP3 برای پیوستهای صوتی معمولی،
OGG_OPUSبومی برای مقصدهای پیام صوتی وPCMخام با نرخ 22050 Hz برای مکالمه/تلفن. - xAI: بهطور پیشفرض MP3؛ ساخت فایل صوتی ممکن است برای خروجی بافرشده و جریانی از
mp3،wav،pcm،mulawیاalawاستفاده کند. مقصدهای پیام صوتی برای حالت جریانی و جایگزین بافرشده از MP3 استفاده میکنند، زیرا خروجیهایpcm،mulawوalawدر xAI صوت خام بدون سربرگ هستند. ساخت بافرشده از نقطه پایانی دستهای REST در xAI با نام/v1/ttsاستفاده میکند؛textToSpeechStreamازwss://api.x.ai/v1/ttsبومی استفاده میکند. این قرارداد صوتی بلادرنگ نیست. قالب بومی پیام صوتی Opus پشتیبانی نمیشود. - Microsoft: از
microsoft.outputFormatاستفاده میکند (پیشفرضaudio-24khz-48kbitrate-mono-mp3).- انتقالدهنده همراه، یک
outputFormatرا میپذیرد، اما همه قالبها از طریق سرویس در دسترس نیستند. - مقادیر قالب خروجی از قالبهای خروجی Microsoft Speech پیروی میکنند (از جمله Ogg/WebM Opus).
- Telegram
sendVoice، قالبهای OGG/MP3/M4A را میپذیرد؛ اگر به پیامهای صوتی Opus تضمینشده نیاز دارید، از OpenAI/ElevenLabs استفاده کنید. - اگر قالب خروجی پیکربندیشده Microsoft ناموفق باشد، OpenClaw دوباره با MP3 تلاش میکند.
- وقتی جایگزین صریحی برای صدا تنظیم نشده باشد و صدای پیشفرض انگلیسی استفاده شود، اگر متن پاسخ عمدتاً CJK باشد، OpenClaw بهطور خودکار به یک صدای عصبی چینی (
zh-CN-XiaoxiaoNeural، منطقه زبانیzh-CN) تغییر میکند.
- انتقالدهنده همراه، یک
قالبهای خروجی OpenAI و ElevenLabs برای هر کانال مطابق فهرست بالا ثابت هستند.
رفتار TTS خودکار
وقتی tts.auto فعال باشد، OpenClaw:
- اگر پاسخ از قبل شامل رسانه ساختیافته باشد، TTS را نادیده میگیرد.
- پاسخهای بسیار کوتاه (کمتر از 10 نویسه) را نادیده میگیرد.
- هنگامی که خلاصهها فعال باشند، پاسخهای طولانی را با استفاده از
summaryModel(یاagents.defaults.model.primary) خلاصه میکند. - صدای تولیدشده را به پاسخ پیوست میکند.
- در
mode: "final"، پس از تکمیل جریان متن، همچنان TTS فقطصوتی را برای پاسخهای نهایی جریانی ارسال میکند؛ رسانه تولیدشده همان فرایند عادیسازی رسانه کانال را طی میکند که پیوستهای معمولی پاسخ طی میکنند.
اگر پاسخ از maxLength فراتر رود، OpenClaw هرگز صدا را بهطور کامل نادیده نمیگیرد:
- خلاصهسازی روشن (پیشفرض) و یک مدل خلاصهسازی در دسترس است: متن را
تقریباً به
maxLengthنویسه خلاصه میکند، سپس خلاصه را به گفتار تبدیل میکند. - خلاصهسازی خاموش، خلاصهسازی ناموفق است، یا هیچ کلید API برای
مدل خلاصهسازی در دسترس نیست: متن را به
maxLengthنویسه کوتاه میکند و متن کوتاهشده را به گفتار تبدیل میکند.
پاسخ -> TTS فعال است؟ خیر -> ارسال متن بله -> دارای رسانه است / کوتاه است؟ بله -> ارسال متن خیر -> طول > محدودیت؟ خیر -> TTS -> پیوستکردن صدا بله -> خلاصهسازی فعال و در دسترس است؟ خیر -> کوتاهکردن -> TTS -> پیوستکردن صدا بله -> خلاصهکردن -> TTS -> پیوستکردن صدامرجع فیلدها
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">
تنظیمات متعلق به ارائهدهنده که بر اساس شناسه ارائهدهنده گفتار کلیدگذاری شدهاند. بلوکهای مستقیم قدیمی (tts.openai، .elevenlabs، .microsoft، .edge) بهوسیله openclaw doctor --fix بازنویسی میشوند؛ فقط tts.providers.<id> را ثبت کنید.
maxTextLengthnumberdefault: 4096سقف قطعی نویسههای ورودی TTS. /tts audio، tts.convert و tts.speak در صورت عبور از آن ناموفق میشوند.
timeoutMsnumberdefault: 30000مهلت زمانی درخواست برحسب میلیثانیه. اگر timeoutMs مختص هر فراخوانی (ابزار عامل، Gateway) تنظیم شده باشد، اولویت دارد؛ در غیر این صورت، tts.timeoutMs که بهصراحت پیکربندی شده باشد بر هر مقدار پیشفرض ارائهدهنده که Plugin تعیین کرده است اولویت دارد.
فیلدهای apiKey ارائهدهنده میتوانند رشتههای خام یا SecretRef باشند. هنگام راهاندازی سرد Gateway،
یک SecretRef ناموجود برای TTS، قابلیت داخلی TTS را بهجای متوقفکردن Gateway
بهعنوان پیکربندیشده-ناموجود علامتگذاری میکند. سپس tts.speak
مقدار UNAVAILABLE را با دلیل SECRET_SURFACE_UNAVAILABLE برمیگرداند و هیچ درخواستی برای
ارائهدهنده ارسال نمیشود. وضعیت و doctor مالک تنزلیافته TTS و مسیرهای پیکربندی آن را فهرست میکنند.
ارجاعهای صریح در اسنپشات زمان اجرا باقی میمانند، بنابراین اعتبارنامههای محیط یا پروفایل
نمیتوانند بدون اعلام، حساب دیگری را انتخاب کنند. بارگذاریهای مجدد و پیشبررسی نوشتن پیکربندی،
سیاست تنزل آگاه از مالک را اعمال میکنند: یک مالک واجد شرایط و بدون تغییر TTS
میتواند آخرین اعتبارنامههای سالم خود را بهصورت کهنه حفظ کند، درحالیکه یک خرابی جدید یا تغییریافته
بدون مسدودکردن مالکان سالم به حالت سرد درمیآید. ارجاعهای نامعتبر از نظر ساختاری
و مقادیر حلشده همچنان باعث شکست راهاندازی یا رد بهروزرسانی میشوند.
Azure Speech
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
محیط: AZURE_SPEECH_KEY، AZURE_SPEECH_API_KEY یا SPEECH_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlZ2lvbiIgdHlwZT0ic3RyaW5nIg
منطقه Azure Speech (برای نمونه eastus). محیط: 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:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
ShortName صدای Azure. مقدار پیشفرض en-US-JennyNeural. نام مستعار قدیمی: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImxhbmciIHR5cGU9InN0cmluZyI
کد زبان SSML. مقدار پیشفرض en-US.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat در Azure برای صدای استاندارد. مقدار پیشفرض audio-24khz-48kbitrate-mono-mp3.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlTm90ZU91dHB1dEZvcm1hdCIgdHlwZT0ic3RyaW5nIg
X-Microsoft-OutputFormat در Azure برای خروجی یادداشت صوتی. مقدار پیشفرض 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_turbo_v2_5/eleven_turbo_v2 به مدل متناظر flash نرمالسازی میشوند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZUlkIiB0eXBlPSJzdHJpbmci
شناسه صدای ElevenLabs. مقدار پیشفرض pMsXgVXv3BLzUgSXRplE. نام مستعار قدیمی: voiceId.
OPENCLAW_DOCS_MARKER:paramClose:
voiceSettingsobjectstability، similarityBoost، style (هرکدام 0..1، با مقادیر پیشفرض 0.5/0.75/0)؛ useSpeakerBoost (true|false، مقدار پیشفرض true)؛ 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 میتواند پیش از رجوع به متغیر محیطی، از 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:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
نام صدای ازپیشساختهشده Gemini. پیشفرض Kore. نامهای مستعار قدیمی: voiceName، voice.
OPENCLAW_DOCS_MARKER:paramClose:
audioProfilestringspeakerNamestringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn
روی audio-profile-v1 تنظیم کنید تا فیلدهای فعال درخواست شخصیت در یک ساختار قطعی درخواست TTS سرویس Gemini قرار گیرند.
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 روی api.gradium.ai. پیشفرض 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 (بهاستثنای 0).
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,خروجی استاندارد فرمان و صوت تولیدشده یا تبدیلشده به 50 MiB محدود هستند. خروجی خطای تشخیصی به 1 MiB محدود است. اگر هرکدام از این محدودیتها رد شود، OpenClaw فرمان را خاتمه میدهد و ترکیب گفتار ناموفق میشود.
Microsoft (بدون کلید API)
enabledbooleandefault: trueOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
نام صدای عصبی Microsoft (برای مثال en-US-MichelleNeural). نام مستعار قدیمی: voice. اگر صدای پیشفرض انگلیسی فعال باشد و متن پاسخ عمدتاً CJK باشد، OpenClaw بهطور خودکار به zh-CN-XiaoxiaoNeural تغییر میکند.
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
نام مستعار قدیمی. برای بازنویسی پیکربندی ذخیرهشده به providers.microsoft، دستور openclaw doctor --fix را اجرا کنید.
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: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
عدد صحیح -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:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
نام صدا (برای مثال alloy، cedar). پیشفرض coral. نام مستعار قدیمی: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imluc3RydWN0aW9ucyIgdHlwZT0ic3RyaW5nIg
فیلد صریح instructions سرویس OpenAI. وقتی تنظیم شود، فیلدهای درخواست شخصیت بهطور خودکار نگاشت نمیشوند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24
">فیلدهای اضافی JSON که پس از فیلدهای تولیدشده TTS سرویس OpenAI در بدنه درخواستهای /audio/speech ادغام میشوند. از این گزینه برای نقاط پایانی سازگار با OpenAI مانند Kokoro استفاده کنید که به کلیدهای ویژه ارائهدهنده مانند lang نیاز دارند؛ کلیدهای ناامن prototype نادیده گرفته میشوند.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringنقطه پایانی TTS سرویس OpenAI را بازنویسی کنید. ترتیب تفکیک: پیکربندی ← OPENAI_TTS_BASE_URL ← https://api.openai.com/v1. مقادیر غیرازپیشفرض بهعنوان نقاط پایانی TTS سازگار با OpenAI در نظر گرفته میشوند؛ بنابراین نامهای سفارشی مدل و صدا پذیرفته میشوند و speed بررسی بازه 0.25..4.0 خود را از دست میدهد.
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: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. وقتی پروژه شما مجوز 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:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
نوع صدا. پیشفرض en_female_anna_mars_bigtts. متغیر محیطی: VOLCENGINE_TTS_VOICE. نام مستعار قدیمی: voice.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkUmF0aW8iIHR5cGU9Im51bWJlciI
نسبت سرعت بومی ارائهدهنده، 0.2..3.
OPENCLAW_DOCS_MARKER:paramClose:
emotionstringOPENCLAW_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. با احراز هویت، openclaw infer tts voices --provider xai کاتالوگ داخلی فعلی را دریافت میکند؛ بدون احراز هویت، جایگزینهای آفلاین ara، eve، leo، rex و sal را فهرست میکند. شناسههای صدای سفارشی حساب حتی در صورت نبودن در فهرست داخلی ارسال میشوند. نام مستعار قدیمی: 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:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi
بازنویسی سرعت بومی ارائهدهنده، 0.7..1.5.
OPENCLAW_DOCS_MARKER:paramClose:
Xiaomi 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.5-tts-voicedesign نیز پشتیبانی میکند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWFrZXJWb2ljZSIgdHlwZT0ic3RyaW5nIg
پیشفرض 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
دستور اختیاری سبک به زبان طبیعی که بهصورت پیام کاربر ارسال میشود و خوانده نمیشود. برای mimo-v2.5-tts-voicedesign، این همان درخواست طراحی صدا است؛ اگر حذف شود، OpenClaw مقداری پیشفرض ارائه میکند.
OPENCLAW_DOCS_MARKER:paramClose:
ابزار عامل
ابزار tts متن را به گفتار تبدیل میکند و برای تحویل پاسخ، یک پیوست صوتی برمیگرداند. در Feishu، Matrix، Telegram و WhatsApp، صوت بهجای پیوست فایل بهصورت پیام صوتی تحویل داده میشود. در این مسیر، وقتی ffmpeg در دسترس باشد، Feishu و WhatsApp میتوانند خروجی TTS غیر Opus را تبدیل قالب کنند.
WhatsApp صوت را از طریق Baileys بهصورت یادداشت صوتی PTT (audio با ptt: true) ارسال میکند و متن قابلمشاهده را جداگانه از صوت PTT میفرستد، زیرا کلاینتها زیرنویس یادداشتهای صوتی را بهطور یکسان نمایش نمیدهند.
این ابزار فیلدهای اختیاری channel و timeoutMs را میپذیرد؛ timeoutMs مهلت زمانی درخواست ارائهدهنده برای هر فراخوانی برحسب میلیثانیه است. مقادیر هر فراخوانی، tts.timeoutMs را بازنویسی میکنند؛ مهلتهای زمانی پیکربندیشده TTS هر مقدار پیشفرض ارائهدهنده را که Plugin تعیین کرده باشد، بازنویسی میکنند.
RPC سرویس Gateway
| روش | هدف |
|---|---|
tts.status |
خواندن وضعیت فعلی TTS و آخرین تلاش. |
tts.enable |
تنظیم ترجیح خودکار محلی روی always. |
tts.disable |
تنظیم ترجیح خودکار محلی روی off. |
tts.convert |
تبدیل یکبارهٔ متن به صدا. |
tts.setProvider |
تنظیم ترجیح ارائهدهندهٔ محلی. |
tts.personas |
فهرستکردن شخصیتهای پیکربندیشده و شخصیت فعال. |
tts.setPersona |
تنظیم ترجیح شخصیت محلی. |
tts.providers |
فهرستکردن ارائهدهندگان پیکربندیشده و وضعیت آنها. |
پیوندهای سرویس
- راهنمای تبدیل متن به گفتار OpenAI
- مرجع Audio API در OpenAI
- تبدیل متن به گفتار با REST در Azure Speech
- ارائهدهندهٔ Azure Speech
- تبدیل متن به گفتار ElevenLabs
- احراز هویت ElevenLabs
- Gradium
- API تبدیل متن به گفتار Inworld
- API مدل MiniMax T2A v2
- API مبتنی بر HTTP برای TTS در Volcengine
- ترکیب گفتار Xiaomi MiMo
- node-edge-tts
- قالبهای خروجی گفتار Microsoft
- تبدیل متن به گفتار xAI