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 را تنظیم کنید:

    json5
    {  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

    json5
    {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

    json5
    {tts: {auto: "always",provider: "elevenlabs",providers: {  elevenlabs: {    apiKey: "${ELEVENLABS_API_KEY}",    model: "eleven_multilingual_v2",    speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",  },},},}

    Google Gemini

    json5
    {tts: {auto: "always",provider: "google",providers: {  google: {    apiKey: "${GEMINI_API_KEY}",    model: "gemini-3.1-flash-tts-preview",    speakerVoice: "Kore",    // درخواست‌های اختیاری سبک به زبان طبیعی:    // audioProfile: "با لحنی آرام و شبیه میزبان پادکست صحبت کن.",    // speakerName: "Alex",  },},},}

    Gradium

    json5
    {tts: {auto: "always",provider: "gradium",providers: {  gradium: {    apiKey: "${GRADIUM_API_KEY}",    speakerVoiceId: "YTpq7expH9539ERJ",  },},},}

    Inworld

    json5
    {tts: {auto: "always",provider: "inworld",providers: {  inworld: {    apiKey: "${INWORLD_API_KEY}",    modelId: "inworld-tts-1.5-max",    speakerVoiceId: "Sarah",    temperature: 0.7,  },},},}

    CLI محلی

    json5
    {tts: {auto: "always",provider: "tts-local-cli",providers: {  "tts-local-cli": {    command: "say",    args: ["-o", "{{OutputPath}}", "{{Text}}"],    outputFormat: "wav",    timeoutMs: 120000,  },},},}

    Microsoft (بدون کلید)

    json5
    {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

    json5
    {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

    json5
    {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

    json5
    {tts: {auto: "always",provider: "openrouter",providers: {  openrouter: {    apiKey: "${OPENROUTER_API_KEY}",    model: "hexgrad/kokoro-82m",    speakerVoice: "af_alloy",    responseFormat: "mp3",  },},},}

    Volcengine

    json5
    {tts: {auto: "always",provider: "volcengine",providers: {  volcengine: {    apiKey: "${VOLCENGINE_TTS_API_KEY}",    resourceId: "seed-tts-1.0",    speakerVoice: "en_female_anna_mars_bigtts",  },},},}

    xAI

    json5
    {tts: {auto: "always",provider: "xai",providers: {  xai: {    apiKey: "${XAI_API_KEY}",    speakerVoiceId: "eve",    language: "en",    responseFormat: "mp3",  },},},}

    Xiaomi MiMo

    json5
    {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 اعمال می‌شود؛ بنابراین اطلاعات احراز هویت ارائه‌دهنده می‌توانند در پیکربندی سراسری ارائه‌دهنده باقی بمانند:

    json5
    {  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:

    1. tts
    2. agents.entries.*.tts فعال
    3. بازنویسی کانال، وقتی کانال از channels.<channel>.tts پشتیبانی می‌کند
    4. بازنویسی حساب، وقتی کانال channels.<channel>.accounts.<id>.tts را ارسال می‌کند
    5. ترجیحات محلی /tts برای این میزبان
    6. دستورالعمل‌های درون‌خطی [[tts:...]] وقتی بازنویسی‌های مبتنی بر مدل فعال باشند

    بازنویسی‌های کانال و حساب همان ساختار tts را دارند و به‌صورت عمیق روی لایه‌های پیشین ادغام می‌شوند؛ بنابراین اعتبارنامه‌های مشترک ارائه‌دهنده می‌توانند در tts باقی بمانند، درحالی‌که یک کانال یا حساب ربات فقط صدای گوینده، مدل، پرسونا یا حالت خودکار را تغییر می‌دهد:

    json5
    {  tts: {    provider: "openai",    providers: {      openai: { apiKey: "${OPENAI_API_KEY}", model: "gpt-4o-mini-tts" },    },  },  channels: {    feishu: {      accounts: {        english: {          tts: {            providers: {              openai: { speakerVoice: "shimmer" },            },          },        },      },    },  },}

    پرسوناها

    پرسونا یک هویت گفتاری پایدار است که می‌توان آن را به‌صورت قطعی در میان ارائه‌دهندگان اعمال کرد. پرسونا می‌تواند یک ارائه‌دهنده را ترجیح دهد، مقصود اعلان مستقل از ارائه‌دهنده را تعریف کند و اتصال‌های ویژهٔ ارائه‌دهنده را برای صداها، مدل‌ها، الگوهای اعلان، بذرها و تنظیمات صدا در خود نگه دارد.

    پرسونای حداقلی

    json5
    {  tts: {    auto: "always",    persona: "narrator",    personas: {      narrator: {        label: "راوی",        provider: "elevenlabs",        providers: {          elevenlabs: {            speakerVoiceId: "EXAVITQu4vr4xnSDxMaL",            modelId: "eleven_multilingual_v2",          },        },      },    },  },}

    پرسونای کامل (شکل‌دهی ویژهٔ ارائه‌دهنده)

    json5
    {  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,            },          },        },      },    },  },}

    تفکیک پرسونا

    پرسونای فعال به‌صورت قطعی انتخاب می‌شود:

    1. ترجیح محلی /tts persona <id>، اگر تنظیم شده باشد.
    2. tts.persona، اگر تنظیم شده باشد.
    3. بدون پرسونا.

    انتخاب ارائه‌دهنده ابتدا موارد صریح را بررسی می‌کند:

    1. بازنویسی‌های مستقیم (CLI، Gateway، Talk و دستورالعمل‌های مجاز TTS).
    2. ترجیح محلی /tts provider <id>.
    3. provider پرسونای فعال.
    4. tts.provider.
    5. انتخاب خودکار رجیستری.

    برای هر تلاش ارائه‌دهنده، OpenClaw پیکربندی‌ها را با این ترتیب ادغام می‌کند:

    1. tts.providers.<id>
    2. tts.personas.<persona>.providers.<id>
    3. بازنویسی‌های درخواست مورداعتماد
    4. بازنویسی‌های مجاز دستورالعمل 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]] برای نشانه‌های بیانی داشته باشد که باید فقط در صدا ظاهر شوند:

    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_model
    • stability، similarityBoost، style، speed، useSpeakerBoost
    • vol / volume (بلندی صدای MiniMax، (0, 10])
    • pitch (زیر و بمی عدد صحیح MiniMax، از −12 تا 12؛ مقادیر اعشاری بریده می‌شوند)
    • emotion (برچسب احساس Volcengine)
    • applyTextNormalization (auto|on|off)
    • languageCode (ISO 639-1)
    • seed

    بازنویسی‌های مدل را کاملاً غیرفعال کنید:

    json5
    { messages: { tts: { modelOverrides: { enabled: false } } } }

    تغییر ارائه‌دهنده را مجاز کنید و سایر کنترل‌ها را قابل‌پیکربندی نگه دارید:

    json5
    { messages: { tts: { modelOverrides: { enabled: true, allowProvider: true, allowSeed: false } } } }

    فرمان‌های اسلش

    فرمان واحد /tts. در Discord،‏ OpenClaw همچنین /voice را ثبت می‌کند، زیرا /tts یک فرمان داخلی Discord است — متن /tts ... همچنان کار می‌کند.

    text
    /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 نویسه کوتاه می‌کند و متن کوتاه‌شده را به گفتار تبدیل می‌کند.
    text
    پاسخ -> 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. به حروف کوچک نرمال‌سازی می‌شود.

    personas.<id>object

    هویت گفتاری پایدار. فیلدها: label، description، provider، fallbackPolicy، prompt، providers.<provider>. به پرسوناها مراجعه کنید.

    summaryModelstring

    مدل کم‌هزینه برای خلاصه‌سازی خودکار؛ مقدار پیش‌فرض agents.defaults.model.primary است. provider/model یا نام مستعار یک مدل پیکربندی‌شده را می‌پذیرد.

    modelOverridesobject

    به مدل اجازه می‌دهد دستورهای TTS را تولید کند. مقدار پیش‌فرض enabled برابر true است؛ مقدار پیش‌فرض allowProvider برابر false است.

    providers.<id>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
    apiKeystring

    محیط: AZURE_SPEECH_KEY، AZURE_SPEECH_API_KEY یا SPEECH_KEY.

    regionstring

    منطقه Azure Speech (برای نمونه eastus). محیط: AZURE_SPEECH_REGION یا SPEECH_REGION.

    endpointstring

    بازنویسی اختیاری نقطه پایانی Azure Speech (نام مستعار baseUrl).

    speakerVoicestring

    ShortName صدای Azure. مقدار پیش‌فرض en-US-JennyNeural. نام مستعار قدیمی: voice.

    langstring

    کد زبان SSML. مقدار پیش‌فرض en-US.

    outputFormatstring

    X-Microsoft-OutputFormat در Azure برای صدای استاندارد. مقدار پیش‌فرض audio-24khz-48kbitrate-mono-mp3.

    voiceNoteOutputFormatstring

    X-Microsoft-OutputFormat در Azure برای خروجی یادداشت صوتی. مقدار پیش‌فرض ogg-24khz-16bit-mono-opus.

    ElevenLabs
    apiKeystring

    در صورت نیاز از ELEVENLABS_API_KEY یا XI_API_KEY استفاده می‌کند.

    modelstring

    شناسه مدل. مقدار پیش‌فرض eleven_multilingual_v2. شناسه‌های قدیمی eleven_turbo_v2_5/eleven_turbo_v2 به مدل متناظر flash نرمال‌سازی می‌شوند.

    speakerVoiceIdstring

    شناسه صدای ElevenLabs. مقدار پیش‌فرض pMsXgVXv3BLzUgSXRplE. نام مستعار قدیمی: voiceId.

    voiceSettingsobject

    stability، similarityBoost، style (هرکدام 0..1، با مقادیر پیش‌فرض 0.5/0.75/0useSpeakerBoost (true|false، مقدار پیش‌فرض truespeed (0.5..2.0، مقدار پیش‌فرض 1.0).

    applyTextNormalization"auto" | "on" | "off"

    حالت نرمال‌سازی متن.

    languageCodestring

    کد ۲ حرفی ISO 639-1 (برای نمونه en، de).

    seednumber

    عدد صحیح 0..4294967295 برای قطعی‌بودن در حد بهترین تلاش.

    baseUrlstring

    بازنویسی URL پایه API در ElevenLabs.

    Google Gemini
    apiKeystring

    در صورت نبود، از GEMINI_API_KEY / GOOGLE_API_KEY استفاده می‌شود. اگر حذف شود، TTS می‌تواند پیش از رجوع به متغیر محیطی، از models.providers.google.apiKey دوباره استفاده کند.

    modelstring

    مدل TTS سرویس Gemini. پیش‌فرض gemini-3.1-flash-tts-preview.

    speakerVoicestring

    نام صدای ازپیش‌ساخته‌شده Gemini. پیش‌فرض Kore. نام‌های مستعار قدیمی: voiceName، voice.

    audioProfilestring

    درخواست سبک به زبان طبیعی که پیش از متن گفتاری افزوده می‌شود.

    speakerNamestring

    برچسب اختیاری گوینده که وقتی درخواست شما از گوینده‌ای نام‌گذاری‌شده استفاده می‌کند، پیش از متن گفتاری افزوده می‌شود.

    promptTemplate"audio-profile-v1"

    روی audio-profile-v1 تنظیم کنید تا فیلدهای فعال درخواست شخصیت در یک ساختار قطعی درخواست TTS سرویس Gemini قرار گیرند.

    personaPromptstring

    متن اضافی درخواست شخصیت ویژه Google که به یادداشت‌های کارگردان الگو افزوده می‌شود.

    baseUrlstring

    فقط https://generativelanguage.googleapis.com پذیرفته می‌شود.

    Gradium
    apiKeystring

    متغیر محیطی: GRADIUM_API_KEY.

    baseUrlstring

    نشانی HTTPS رابط API سرویس Gradium روی api.gradium.ai. پیش‌فرض https://api.gradium.ai.

    speakerVoiceIdstring

    پیش‌فرض Emma ‏(YTpq7expH9539ERJ). نام مستعار قدیمی: voiceId.

    Inworld

    Inworld اصلی

    apiKeystring

    متغیر محیطی: INWORLD_API_KEY.

    baseUrlstring

    پیش‌فرض https://api.inworld.ai.

    modelIdstring

    پیش‌فرض inworld-tts-1.5-max. همچنین: inworld-tts-1.5-mini، inworld-tts-1-max، inworld-tts-1.

    speakerVoiceIdstring

    پیش‌فرض Sarah. نام مستعار قدیمی: voiceId.

    temperaturenumber

    دمای نمونه‌برداری 0..2 (به‌استثنای 0).

    CLI محلی (tts-local-cli)
    commandstring

    فایل اجرایی محلی یا رشته فرمان برای TTS مبتنی بر CLI.

    argsstring[]

    آرگومان‌های فرمان. از جای‌نگهدارهای {{Text}}، {{OutputPath}}، {{OutputDir}}، {{OutputBase}} پشتیبانی می‌کند.

    outputFormat"mp3" | "opus" | "wav"

    قالب خروجی مورد انتظار CLI. پیش‌فرض mp3 برای پیوست‌های صوتی.

    timeoutMsnumber

    مهلت زمانی فرمان برحسب میلی‌ثانیه. پیش‌فرض 120000.

    cwdstring

    دایرکتوری کاری اختیاری فرمان.

    envRecord<string, string>

    مقادیر بازنویسی اختیاری محیط برای فرمان.

    خروجی استاندارد فرمان و صوت تولیدشده یا تبدیل‌شده به 50 MiB محدود هستند. خروجی خطای تشخیصی به 1 MiB محدود است. اگر هرکدام از این محدودیت‌ها رد شود، OpenClaw فرمان را خاتمه می‌دهد و ترکیب گفتار ناموفق می‌شود.

    Microsoft (بدون کلید API)
    enabledbooleandefault: true

    اجازه استفاده از گفتار Microsoft.

    speakerVoicestring

    نام صدای عصبی Microsoft (برای مثال en-US-MichelleNeural). نام مستعار قدیمی: voice. اگر صدای پیش‌فرض انگلیسی فعال باشد و متن پاسخ عمدتاً CJK باشد، OpenClaw به‌طور خودکار به zh-CN-XiaoxiaoNeural تغییر می‌کند.

    langstring

    کد زبان (برای مثال en-US).

    outputFormatstring

    قالب خروجی Microsoft. پیش‌فرض audio-24khz-48kbitrate-mono-mp3. انتقال مبتنی بر Edge همراه از همه قالب‌ها پشتیبانی نمی‌کند.

    rate / pitch / volumestring

    رشته‌های درصدی (برای مثال +10%، -5%).

    saveSubtitlesboolean

    زیرنویس‌های JSON را در کنار فایل صوتی بنویسید.

    proxystring

    نشانی پراکسی برای درخواست‌های گفتار Microsoft.

    timeoutMsnumber

    بازنویسی مهلت زمانی درخواست (ms).

    edge.*object

    نام مستعار قدیمی. برای بازنویسی پیکربندی ذخیره‌شده به providers.microsoft، دستور openclaw doctor --fix را اجرا کنید.

    MiniMax
    apiKeystring

    در صورت نبود، از MINIMAX_API_KEY استفاده می‌شود. احراز هویت Token Plan از طریق MINIMAX_OAUTH_TOKEN، MINIMAX_CODE_PLAN_KEY یا MINIMAX_CODING_API_KEY.

    baseUrlstring

    پیش‌فرض https://api.minimax.io. متغیر محیطی: MINIMAX_API_HOST.

    modelstring

    پیش‌فرض speech-2.8-hd. متغیر محیطی: MINIMAX_TTS_MODEL.

    speakerVoiceIdstring

    پیش‌فرض English_expressive_narrator. متغیر محیطی: MINIMAX_TTS_VOICE_ID. نام مستعار قدیمی: voiceId.

    speednumber

    0.5..2.0. پیش‌فرض 1.0.

    volnumber

    (0, 10]. پیش‌فرض 1.0.

    pitchnumber

    عدد صحیح -12..12. پیش‌فرض 0. مقادیر اعشاری پیش از درخواست بریده می‌شوند.

    OpenAI
    apiKeystring

    در صورت نبود، از OPENAI_API_KEY استفاده می‌شود.

    modelstring

    شناسه مدل TTS سرویس OpenAI. پیش‌فرض gpt-4o-mini-tts.

    speakerVoicestring

    نام صدا (برای مثال alloy، cedar). پیش‌فرض coral. نام مستعار قدیمی: voice.

    instructionsstring

    فیلد صریح instructions سرویس OpenAI. وقتی تنظیم شود، فیلدهای درخواست شخصیت به‌طور خودکار نگاشت نمی‌شوند.

    extraBody / extra_bodyRecord<string, unknown>

    فیلدهای اضافی JSON که پس از فیلدهای تولیدشده TTS سرویس OpenAI در بدنه درخواست‌های /audio/speech ادغام می‌شوند. از این گزینه برای نقاط پایانی سازگار با OpenAI مانند Kokoro استفاده کنید که به کلیدهای ویژه ارائه‌دهنده مانند lang نیاز دارند؛ کلیدهای ناامن prototype نادیده گرفته می‌شوند.

    baseUrlstring

    نقطه پایانی TTS سرویس OpenAI را بازنویسی کنید. ترتیب تفکیک: پیکربندی ← OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. مقادیر غیرازپیش‌فرض به‌عنوان نقاط پایانی TTS سازگار با OpenAI در نظر گرفته می‌شوند؛ بنابراین نام‌های سفارشی مدل و صدا پذیرفته می‌شوند و speed بررسی بازه 0.25..4.0 خود را از دست می‌دهد.

    OpenRouter
    apiKeystring

    متغیر محیطی: OPENROUTER_API_KEY. می‌تواند از models.providers.openrouter.apiKey دوباره استفاده کند.

    baseUrlstring

    پیش‌فرض https://openrouter.ai/api/v1. مقدار قدیمی https://openrouter.ai/v1 نرمال‌سازی می‌شود.

    modelstring

    پیش‌فرض hexgrad/kokoro-82m. نام مستعار: modelId.

    speakerVoicestring

    پیش‌فرض af_alloy. نام‌های مستعار قدیمی: voice، voiceId.

    responseFormat"mp3" | "pcm"

    پیش‌فرض mp3.

    speednumber

    بازنویسی سرعت بومی ارائه‌دهنده.

    Volcengine (BytePlus Seed Speech)
    apiKeystring

    متغیر محیطی: VOLCENGINE_TTS_API_KEY یا BYTEPLUS_SEED_SPEECH_API_KEY.

    resourceIdstring

    پیش‌فرض seed-tts-1.0. متغیر محیطی: VOLCENGINE_TTS_RESOURCE_ID. وقتی پروژه شما مجوز TTS 2.0 دارد، از seed-tts-2.0 استفاده کنید.

    appKeystring

    سرآیند کلید برنامه. پیش‌فرض aGjiRDfUWi. متغیر محیطی: VOLCENGINE_TTS_APP_KEY.

    baseUrlstring

    نقطه پایانی HTTP سرویس Seed Speech TTS را بازنویسی کنید. متغیر محیطی: VOLCENGINE_TTS_BASE_URL.

    speakerVoicestring

    نوع صدا. پیش‌فرض en_female_anna_mars_bigtts. متغیر محیطی: VOLCENGINE_TTS_VOICE. نام مستعار قدیمی: voice.

    speedRationumber

    نسبت سرعت بومی ارائه‌دهنده، 0.2..3.

    emotionstring

    برچسب احساس بومی ارائه‌دهنده.

    appId / token / clusterstring

    فیلدهای قدیمی Volcengine Speech Console. متغیرهای محیطی: VOLCENGINE_TTS_APPID، VOLCENGINE_TTS_TOKEN، VOLCENGINE_TTS_CLUSTER (پیش‌فرض volcano_tts).

    xAI
    apiKeystring

    متغیر محیطی: XAI_API_KEY.

    baseUrlstring

    پیش‌فرض https://api.x.ai/v1. متغیر محیطی: XAI_BASE_URL.

    speakerVoiceIdstring

    پیش‌فرض eve. با احراز هویت، openclaw infer tts voices --provider xai کاتالوگ داخلی فعلی را دریافت می‌کند؛ بدون احراز هویت، جایگزین‌های آفلاین ara، eve، leo، rex و sal را فهرست می‌کند. شناسه‌های صدای سفارشی حساب حتی در صورت نبودن در فهرست داخلی ارسال می‌شوند. نام مستعار قدیمی: voiceId.

    languagestring

    کد زبان BCP-47 یا auto. پیش‌فرض en.

    responseFormat"mp3" | "wav" | "pcm" | "mulaw" | "alaw"

    پیش‌فرض mp3.

    speednumber

    بازنویسی سرعت بومی ارائه‌دهنده، 0.7..1.5.

    Xiaomi MiMo
    apiKeystring

    متغیر محیطی: XIAOMI_API_KEY.

    baseUrlstring

    پیش‌فرض https://api.xiaomimimo.com/v1. متغیر محیطی: XIAOMI_BASE_URL.

    modelstring

    پیش‌فرض mimo-v2.5-tts. متغیر محیطی: XIAOMI_TTS_MODEL. از mimo-v2.5-tts-voicedesign نیز پشتیبانی می‌کند.

    speakerVoicestring

    پیش‌فرض mimo_default برای مدل‌های صدای ازپیش‌تنظیم‌شده. متغیر محیطی: XIAOMI_TTS_VOICE. نام مستعار قدیمی: voice. برای mimo-v2.5-tts-voicedesign ارسال نمی‌شود.

    format"mp3" | "wav"

    پیش‌فرض mp3. متغیر محیطی: XIAOMI_TTS_FORMAT.

    stylestring

    دستور اختیاری سبک به زبان طبیعی که به‌صورت پیام کاربر ارسال می‌شود و خوانده نمی‌شود. برای mimo-v2.5-tts-voicedesign، این همان درخواست طراحی صدا است؛ اگر حذف شود، OpenClaw مقداری پیش‌فرض ارائه می‌کند.

    ابزار عامل

    ابزار 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 فهرست‌کردن ارائه‌دهندگان پیکربندی‌شده و وضعیت آن‌ها.

    پیوندهای سرویس

    مرتبط

    Was this useful?
    در این صفحه

    در این صفحه