Tools
تبدیل متن به گفتار
OpenClaw میتواند پاسخهای خروجی را با ۱۴ ارائهدهنده گفتار به صوت تبدیل کند و پیامهای صوتی بومی را در Feishu، Matrix، Telegram و WhatsApp، پیوستهای صوتی را در سایر جاها، و جریانهای PCM/Ulaw را برای تلفنی و Talk تحویل دهد.
TTS نیمه خروجی گفتارِ حالت stt-tts در Talk است. نشستهای Talk با realtime
بومیِ ارائهدهنده، گفتار را داخل ارائهدهنده بلادرنگ تولید میکنند، بهجای اینکه
این مسیر TTS را فراخوانی کنند، در حالی که نشستهای transcription پاسخ صوتی
دستیار را تولید نمیکنند.
شروع سریع
یک ارائهدهنده انتخاب کنید
OpenAI و ElevenLabs قابلاعتمادترین گزینههای میزبانیشده هستند. Microsoft و CLI محلی بدون کلید API کار میکنند. برای فهرست کامل، ماتریس ارائهدهندگان را ببینید.
کلید API را تنظیم کنید
متغیر محیطی ارائهدهنده خود را export کنید (برای مثال OPENAI_API_KEY،
ELEVENLABS_API_KEY). Microsoft و CLI محلی به کلید نیاز ندارند.
در پیکربندی فعال کنید
messages.tts.auto: "always" و messages.tts.provider را تنظیم کنید:
{
messages: {
tts: {
auto: "always",
provider: "elevenlabs",
},
},
}
در چت امتحان کنید
/tts status وضعیت فعلی را نشان میدهد. /tts audio Hello from OpenClaw
یک پاسخ صوتی یکباره میفرستد.
ارائهدهندگان پشتیبانیشده
| ارائهدهنده | احراز هویت | یادداشتها |
|---|---|---|
| Azure Speech | AZURE_SPEECH_KEY + AZURE_SPEECH_REGION (also AZURE_SPEECH_API_KEY, SPEECH_KEY, SPEECH_REGION) |
خروجی یادداشت صوتی بومی Ogg/Opus و تلفنی. |
| DeepInfra | DEEPINFRA_API_KEY |
TTS سازگار با OpenAI. پیشفرض hexgrad/Kokoro-82M است. |
| ElevenLabs | ELEVENLABS_API_KEY or XI_API_KEY |
شبیهسازی صدا، چندزبانه، تعیینپذیر از طریق seed. |
| Google Gemini | GEMINI_API_KEY or 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 (or 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 (can reuse models.providers.openrouter.apiKey) |
مدل پیشفرض hexgrad/kokoro-82m. |
| Volcengine | VOLCENGINE_TTS_API_KEY or BYTEPLUS_SEED_SPEECH_API_KEY (legacy AppID/token: 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 زیر messages.tts در ~/.openclaw/openclaw.json قرار دارد. یک
پیشتنظیم انتخاب کنید و بلوک ارائهدهنده را تطبیق دهید:
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,
},
},
},
},
}
CLI محلی
{
messages: {
tts: {
auto: "always",
provider: "tts-local-cli",
providers: {
"tts-local-cli": {
command: "say",
args: ["-o", "{{OutputPath}}", "{{Text}}"],
outputFormat: "wav",
timeoutMs: 120000,
},
},
},
},
}
Microsoft (بدون کلید)
{
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",
},
},
},
},
}
بازنویسیهای صدای هر عامل
وقتی یک عامل باید با ارائهدهنده، صدا، مدل، شخصیت یا حالت 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: { 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
فیلدهای پرامپت پرسونا را در ساختار پرامپت TTS Gemini میپیچد فقط وقتی
پیکربندی مؤثر ارائهدهنده Google مقدار promptTemplate: "audio-profile-v1"
یا personaPrompt را تنظیم کرده باشد. فیلدهای قدیمیتر audioProfile و speakerName
همچنان بهعنوان متن پرامپت ویژه Google در ابتدا اضافه میشوند. برچسبهای صوتی درونخطی مانند
[whispers] یا [laughs] داخل یک بلوک [[tts:text]]
در رونوشت Gemini حفظ میشوند؛ OpenClaw این برچسبها را تولید نمیکند.
OpenAI
فیلدهای پرامپت پرسونا را به فیلد درخواست instructions نگاشت میکند فقط وقتی
هیچ instructions صریحی برای OpenAI پیکربندی نشده باشد. instructions
صریح همیشه اولویت دارد.
Other providers
فقط از اتصالهای پرسونای ویژه ارائهدهنده زیر
personas.<id>.providers.<provider> استفاده میکنند. فیلدهای پرامپت پرسونا نادیده گرفته میشوند
مگر اینکه ارائهدهنده نگاشت پرامپت پرسونا مخصوص خود را پیادهسازی کرده باشد.
سیاست fallback
fallbackPolicy رفتار را وقتی یک پرسونا برای ارائهدهنده
مورد تلاش هیچ اتصالی ندارد کنترل میکند:
| سیاست | رفتار |
|---|---|
preserve-persona |
پیشفرض. فیلدهای پرامپت مستقل از ارائهدهنده در دسترس میمانند؛ ارائهدهنده ممکن است از آنها استفاده کند یا نادیدهشان بگیرد. |
provider-defaults |
پرسونا برای آن تلاش از آمادهسازی پرامپت حذف میشود؛ ارائهدهنده از پیشفرضهای خنثای خود استفاده میکند، در حالی که fallback به ارائهدهندگان دیگر ادامه مییابد. |
fail |
آن تلاش ارائهدهنده را با reasonCode: "not_configured" و personaBinding: "missing" رد میکند. ارائهدهندگان fallback همچنان امتحان میشوند. |
کل درخواست TTS فقط وقتی شکست میخورد که همه ارائهدهندگان امتحانشده رد شوند یا شکست بخورند.
انتخاب ارائهدهنده نشست Talk در محدوده نشست است. یک کلاینت Talk باید
شناسههای ارائهدهنده، شناسههای مدل، شناسههای صدا و localeها را از 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(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 را روشن نمیکند).limitوsummaryدر ترجیحات محلی ذخیره میشوند، نه در پیکربندی اصلی./tts statusشامل عیبیابی fallback برای آخرین تلاش است —Fallback: <primary> -> <used>،Attempts: ...، و جزئیات هر تلاش (provider:outcome(reasonCode) latency)./statusوقتی TTS فعال باشد، حالت فعال TTS بههمراه ارائهدهنده، مدل، صدا و فراداده endpoint سفارشی پاکسازیشده پیکربندیشده را نشان میدهد.
ترجیحات هر کاربر
فرمانهای اسلش بازنویسیهای محلی را در prefsPath مینویسند. مقدار پیشفرض
~/.openclaw/settings/tts.json است؛ با متغیر محیطی OPENCLAW_TTS_PREFS
یا messages.tts.prefsPath آن را بازنویسی کنید.
| فیلد ذخیرهشده | اثر |
|---|---|
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 ناموفق میشود. - BlueBubbles: سنتز ارائهدهنده را در مسیر معمول فایل صوتی نگه میدارد؛ خروجیهای MP3 و CAF برای تحویل یادداشت صوتی iMessage علامتگذاری میشوند.
- کانالهای دیگر: 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 در API Gemini، PCM خام 24kHz برمیگرداند. OpenClaw آن را برای پیوستهای صوتی بهصورت WAV بستهبندی میکند، برای مقصدهای یادداشت صوتی به Opus با 48kHz تبدیل میکند، و برای گفتوگو/تلفنی مستقیما PCM برمیگرداند.
- Gradium: WAV برای پیوستهای صوتی، Opus برای مقصدهای یادداشت صوتی، و
ulaw_8000در 8 kHz برای تلفنی. - Inworld: MP3 برای پیوستهای صوتی معمولی،
OGG_OPUSبومی برای مقصدهای یادداشت صوتی، وPCMخام در 22050 Hz برای گفتوگو/تلفنی. - xAI: بهصورت پیشفرض MP3؛
responseFormatمیتواندmp3،wav،pcm،mulawیاalawباشد. OpenClaw از نقطه پایانی TTS دستهای REST متعلق به 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 برای هر کانال ثابت هستند (بالا را ببینید).
رفتار 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 بهجای انتشار یک payload ناسازگار 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خام 22050 Hz برای Talk/تلفنی. - xAI: بهطور پیشفرض MP3؛
responseFormatمیتواندmp3|wav|pcm|mulaw|alawباشد. از endpoint دستهای REST متعلق به xAI استفاده میکند — TTS استریمشونده WebSocket استفاده نمیشود. قالب بومی Opus برای یادداشت صوتی پشتیبانی نمیشود. - Microsoft: از
microsoft.outputFormatاستفاده میکند (پیشفرضaudio-24khz-48kbitrate-mono-mp3). TelegramsendVoice، OGG/MP3/M4A را میپذیرد؛ اگر به پیامهای صوتی Opus تضمینشده نیاز دارید، از OpenAI/ElevenLabs استفاده کنید. اگر قالب پیکربندیشده Microsoft ناموفق باشد، OpenClaw دوباره با MP3 تلاش میکند.
قالبهای خروجی OpenAI و ElevenLabs برای هر کانال مطابق فهرست بالا ثابت هستند.
مرجع فیلدها
پیامهای سطحبالا messages.tts.*
auto"off" | "always" | "inbound" | "tagged"حالت Auto-TTS. inbound فقط پس از یک پیام صوتی ورودی، صوت ارسال میکند؛ tagged فقط وقتی صوت ارسال میکند که پاسخ شامل دستورهای [[tts:...]] یا یک بلوک [[tts:text]] باشد.
enabledbooleanسوییچ قدیمی. openclaw doctor --fix این را به auto مهاجرت میدهد.
mode"final" | "all""all" علاوه بر پاسخهای نهایی، پاسخهای ابزار/بلوک را هم شامل میشود.
providerstringشناسه ارائهدهنده گفتار. وقتی تنظیم نشده باشد، OpenClaw از نخستین ارائهدهنده پیکربندیشده در ترتیب انتخاب خودکار registry استفاده میکند. مقدار قدیمی provider: "edge" توسط openclaw doctor --fix به "microsoft" بازنویسی میشود.
personastringشناسه persona فعال از personas. به حروف کوچک نرمالسازی میشود.
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBlcnNvbmFzLjxpZA
" type="object">
هویت گفتاری پایدار. فیلدها: label، description، provider، fallbackPolicy، prompt، providers.<provider>. Personas را ببینید.
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 ناموفق میشود.
timeoutMsnumbertimeout درخواست برحسب میلیثانیه.
prefsPathstringمسیر 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
override اختیاری endpoint 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 fallback میکند.
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 برای determinism در حد بهترین تلاش.
OPENCLAW_DOCS_MARKER:paramClose:
baseUrlstringGoogle Gemini
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
به GEMINI_API_KEY / GOOGLE_API_KEY fallback میکند. اگر حذف شود، TTS میتواند پیش از fallback به 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
روی audio-profile-v1 تنظیم کنید تا فیلدهای prompt مربوط به persona فعال در یک ساختار prompt قطعی Gemini TTS بستهبندی شوند.
OPENCLAW_DOCS_MARKER:paramClose:
personaPromptstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
فقط https://generativelanguage.googleapis.com پذیرفته میشود.
OPENCLAW_DOCS_MARKER:paramClose:
Gradium
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: 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
Env: 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)
enabledbooleanOPENCLAW_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
نام مستعار قدیمی. برای بازنویسی پیکربندی ذخیرهشده به 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. Env: MINIMAX_API_HOST.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
پیشفرض speech-2.8-hd. Env: MINIMAX_TTS_MODEL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض English_expressive_narrator. Env: 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 اضافی که پس از فیلدهای تولیدشده 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 در نظر گرفته میشوند، بنابراین نامهای سفارشی مدل و صدا پذیرفته میشوند.
OpenRouter
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: 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
Env: VOLCENGINE_TTS_API_KEY یا BYTEPLUS_SEED_SPEECH_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc291cmNlSWQiIHR5cGU9InN0cmluZyI
پیشفرض seed-tts-1.0. Env: VOLCENGINE_TTS_RESOURCE_ID. وقتی پروژه شما مجوز TTS 2.0 دارد، از seed-tts-2.0 استفاده کنید.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcEtleSIgdHlwZT0ic3RyaW5nIg
هدر کلید برنامه. پیشفرض aGjiRDfUWi. Env: VOLCENGINE_TTS_APP_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
نقطه پایانی HTTP مربوط به Seed Speech TTS را بازنویسی کنید. Env: VOLCENGINE_TTS_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
نوع صدا. پیشفرض en_female_anna_mars_bigtts. Env: VOLCENGINE_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
speedRationumberemotionstringOPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwcElkIC8gdG9rZW4gLyBjbHVzdGVyIiB0eXBlPSJzdHJpbmciIGRlcHJlY2F0ZWQ
فیلدهای قدیمی کنسول گفتار Volcengine. Env: VOLCENGINE_TTS_APPID، VOLCENGINE_TTS_TOKEN، VOLCENGINE_TTS_CLUSTER (پیشفرض volcano_tts).
OPENCLAW_DOCS_MARKER:paramClose:
xAI
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg
Env: XAI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
پیشفرض https://api.x.ai/v1. Env: 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
Env: XIAOMI_API_KEY.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI
پیشفرض https://api.xiaomimimo.com/v1. Env: XIAOMI_BASE_URL.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci
پیشفرض mimo-v2.5-tts. Env: XIAOMI_TTS_MODEL. از mimo-v2-tts نیز پشتیبانی میکند.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci
پیشفرض mimo_default. Env: XIAOMI_TTS_VOICE.
OPENCLAW_DOCS_MARKER:paramClose:
OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic
پیشفرض mp3. Env: 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
- تبدیل متن به گفتار Azure Speech REST
- ارائهدهنده Azure Speech
- تبدیل متن به گفتار ElevenLabs
- احراز هویت ElevenLabs
- Gradium
- API تبدیل متن به گفتار Inworld
- API MiniMax T2A v2
- API HTTP تبدیل متن به گفتار Volcengine
- همنهاد گفتار Xiaomi MiMo
- node-edge-tts
- قالبهای خروجی Microsoft Speech
- تبدیل متن به گفتار xAI