Tools

تحويل النص إلى كلام

يمكن لـ OpenClaw تحويل الردود الصادرة إلى صوت عبر 14 مزود كلام وتسليم رسائل صوتية أصلية على Feishu وMatrix وTelegram وWhatsApp، ومرفقات صوتية في كل مكان آخر، وتدفقات PCM/Ulaw للاتصالات الهاتفية وTalk.

TTS هو نصف إخراج الكلام في وضع stt-tts الخاص بـ Talk. جلسات Talk realtime الأصلية للمزود تولد الكلام داخل مزود الوقت الحقيقي بدلا من استدعاء مسار TTS هذا، بينما لا تولد جلسات transcription ردا صوتيا للمساعد.

البدء السريع

  • اختر مزودا

    OpenAI وElevenLabs هما الخياران المستضافان الأكثر موثوقية. يعمل Microsoft و Local CLI دون مفتاح API. راجع مصفوفة المزودين للاطلاع على القائمة الكاملة.

  • عيّن مفتاح API

    صدّر متغير البيئة الخاص بمزودك (على سبيل المثال OPENAI_API_KEY، ELEVENLABS_API_KEY). لا يحتاج Microsoft وLocal 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 (أيضا 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.
    Google Gemini GEMINI_API_KEY أو GOOGLE_API_KEY TTS عبر Gemini API؛ واع بالشخصية عبر promptTemplate: "audio-profile-v1".
    Gradium GRADIUM_API_KEY إخراج ملاحظات صوتية واتصالات هاتفية.
    Inworld INWORLD_API_KEY واجهة TTS API للبث. ملاحظات صوتية Opus أصلية واتصالات هاتفية PCM.
    Local CLI لا شيء يشغل أمر TTS محليا مكوّنا.
    Microsoft لا شيء TTS عصبي عام من Edge عبر node-edge-tts. أفضل جهد، بلا SLA.
    MiniMax MINIMAX_API_KEY (أو خطة Token: MINIMAX_OAUTH_TOKEN, MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY) واجهة T2A v2 API. الافتراضي هو speech-2.8-hd.
    OpenAI OPENAI_API_KEY يستخدم أيضا للتلخيص التلقائي؛ يدعم instructions للشخصية.
    OpenRouter OPENROUTER_API_KEY (يمكن إعادة استخدام models.providers.openrouter.apiKey) النموذج الافتراضي hexgrad/kokoro-82m.
    Volcengine VOLCENGINE_TTS_API_KEY أو BYTEPLUS_SEED_SPEECH_API_KEY (AppID/token القديمة: VOLCENGINE_TTS_APPID/_TOKEN) واجهة BytePlus Seed Speech HTTP API.
    Vydra VYDRA_API_KEY مزود مشترك للصور والفيديو والكلام.
    xAI XAI_API_KEY TTS دفعي من xAI. الملاحظات الصوتية Opus الأصلية غير مدعومة.
    Xiaomi MiMo XIAOMI_API_KEY MiMo TTS عبر إكمالات محادثة 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,
        },
      },
    },
    },
    }
    

    Local CLI

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

    Microsoft (بلا مفتاح)

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

    تجاوزات الصوت لكل وكيل

    استخدم agents.list[].tts عندما ينبغي لوكيل واحد أن يتحدث بمزود أو صوت أو نموذج أو شخصية أو وضع Auto-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:

    1. messages.tts
    2. agents.list[].tts النشط
    3. تجاوز القناة، عندما تدعم القناة channels.<channel>.tts
    4. تجاوز الحساب، عندما تمرر القناة channels.<channel>.accounts.<id>.tts
    5. تفضيلات /tts المحلية لهذا المضيف
    6. توجيهات [[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" },
                },
              },
            },
          },
        },
      },
    }
    

    الشخصيات

    الشخصية هي هوية نطق ثابتة يمكن تطبيقها بشكل حتمي عبر المزوّدين. يمكنها تفضيل مزوّد واحد، وتعريف نية مطالبة محايدة بين المزوّدين، وحمل ارتباطات خاصة بالمزوّد للأصوات والنماذج وقوالب المطالبات والبذور وإعدادات الصوت.

    شخصية بسيطة

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

    حلّ الشخصية

    يتم اختيار الشخصية النشطة بشكل حتمي:

    1. تفضيل /tts persona <id> المحلي، إذا كان مضبوطًا.
    2. messages.tts.persona، إذا كان مضبوطًا.
    3. لا توجد شخصية.

    يعمل اختيار المزوّد وفق نهج الصريح أولًا:

    1. التجاوزات المباشرة (CLI، وGateway، وTalk، وتوجيهات TTS المسموح بها).
    2. تفضيل /tts provider <id> المحلي.
    3. provider الخاص بالشخصية النشطة.
    4. messages.tts.provider.
    5. الاختيار التلقائي من السجل.

    لكل محاولة مزوّد، يدمج OpenClaw الإعدادات بهذا الترتيب:

    1. messages.tts.providers.<id>
    2. messages.tts.personas.<persona>.providers.<id>
    3. تجاوزات الطلب الموثوقة
    4. تجاوزات توجيهات TTS الصادرة من النموذج والمسموح بها

    كيف تستخدم المزوّدات مطالبات الشخصية

    حقول مطالبة الشخصية (profile، وscene، وsampleContext، وstyle، وaccent، وpacing، وconstraints) محايدة بين المزوّدين. يقرر كل مزوّد كيف يستخدمها:

    Google Gemini

    يلف حقول مطالبة الشخصية في بنية مطالبة Gemini TTS فقط عندما يضبط تكوين مزوّد Google الفعلي promptTemplate: "audio-profile-v1" أو personaPrompt. لا تزال الحقول الأقدم audioProfile وspeakerName تُضاف في البداية كنص مطالبة خاص بـ Google. تُحفظ وسوم الصوت المضمنة مثل [whispers] أو [laughs] داخل كتلة [[tts:text]] داخل نص Gemini؛ لا يولد OpenClaw هذه الوسوم.

    OpenAI

    يربط حقول مطالبة الشخصية بحقل الطلب instructions فقط عندما لا تكون هناك instructions صريحة مكوّنة لـ OpenAI. تفوز instructions الصريحة دائمًا.

    المزوّدون الآخرون

    يستخدمون فقط ارتباطات الشخصية الخاصة بالمزوّد تحت personas.<id>.providers.<provider>. يتم تجاهل حقول مطالبة الشخصية ما لم ينفّذ المزوّد تعيينه الخاص لمطالبة الشخصية.

    سياسة الرجوع الاحتياطي

    يتحكم fallbackPolicy في السلوك عندما لا يكون لدى الشخصية أي ارتباط للمزوّد الذي تجري محاولته:

    السياسة السلوك
    preserve-persona الافتراضي. تبقى حقول المطالبة المحايدة بين المزوّدين متاحة؛ قد يستخدمها المزوّد أو يتجاهلها.
    provider-defaults تُحذف الشخصية من إعداد المطالبة لتلك المحاولة؛ يستخدم المزوّد افتراضاته المحايدة بينما يستمر الرجوع إلى مزوّدين آخرين.
    fail تخطَّ محاولة ذلك المزوّد مع reasonCode: "not_configured" وpersonaBinding: "missing". لا تزال مزوّدات الرجوع الاحتياطي تُجرّب.

    يفشل طلب TTS بالكامل فقط عندما يتم تخطي كل المزوّدين الذين جرت محاولتهم أو يفشلون.

    اختيار مزوّد جلسة Talk محدود بنطاق الجلسة. يجب أن يختار عميل Talk معرفات المزوّدين، ومعرفات النماذج، ومعرفات الأصوات، واللغات المحلية من talk.catalog ويمررها عبر جلسة Talk أو طلب التسليم. يجب ألا يؤدي فتح جلسة صوت إلى تعديل 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 / 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

    تعطيل تجاوزات النموذج بالكامل:

    { 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: <primary> -> <used>، وAttempts: ...، وتفاصيل كل محاولة (provider:outcome(reasonCode) latency).
    • يعرض /status وضع TTS النشط بالإضافة إلى المزوّد والنموذج والصوت المكوّنة وبيانات تعريف نقطة النهاية المخصصة المنقّاة عندما يكون TTS مفعّلًا.

    تفضيلات لكل مستخدم

    تكتب أوامر الشرطة المائلة التجاوزات المحلية إلى 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 وفق قدرات القناة. تعلن Plugins القنوات ما إذا كان TTS بنمط الصوت يجب أن يطلب من المزوّدين هدفًا أصليًا voice-note أو يبقي تركيب audio-file العادي ويضع فقط علامة على الإخراج المتوافق لتسليم الصوت.

    • القنوات القادرة على الملاحظات الصوتية: تفضّل ردود الملاحظات الصوتية Opus (opus_48000_64 من ElevenLabs، وopus من OpenAI).
      • 48kHz / 64kbps هو توازن جيد للرسائل الصوتية.
    • Feishu / WhatsApp: عندما يُنتج رد الملاحظة الصوتية كملف MP3/WebM/WAV/M4A أو ملف صوتي آخر محتمل، يحوّله Plugin القناة إلى Ogg/Opus بتردد 48kHz باستخدام ffmpeg قبل إرسال الرسالة الصوتية الأصلية. يرسل WhatsApp النتيجة عبر حمولة Baileys audio مع ptt: true و audio/ogg; codecs=opus. إذا فشل التحويل، يتلقى Feishu الملف الأصلي كمرفق؛ ويفشل إرسال WhatsApp بدلًا من نشر حمولة PTT غير متوافقة.
    • BlueBubbles: يُبقي توليف المزوّد على مسار ملف الصوت العادي؛ وتُعلَّم مخرجات MP3 وCAF للتسليم كمذكرة صوتية عبر iMessage.
    • القنوات الأخرى: MP3 (mp3_44100_128 من ElevenLabs، وmp3 من OpenAI).
      • 44.1kHz / 128kbps هو التوازن الافتراضي لوضوح الكلام.
    • MiniMax: MP3 (نموذج speech-2.8-hd، ومعدل عينة 32kHz) لمرفقات الصوت العادية. بالنسبة لأهداف الملاحظات الصوتية التي تعلنها القناة، يحوّل OpenClaw ملف MiniMax MP3 إلى Opus بتردد 48kHz باستخدام ffmpeg قبل التسليم عندما تعلن القناة دعم التحويل.
    • Xiaomi MiMo: MP3 افتراضيًا، أو WAV عند تكوينه. بالنسبة لأهداف الملاحظات الصوتية التي تعلنها القناة، يحوّل OpenClaw مخرجات Xiaomi إلى Opus بتردد 48kHz باستخدام ffmpeg قبل التسليم عندما تعلن القناة دعم التحويل.
    • CLI المحلي: يستخدم outputFormat المُكوَّن. تُحوَّل أهداف الملاحظات الصوتية إلى Ogg/Opus، وتُحوَّل مخرجات الاتصالات الهاتفية إلى PCM خام أحادي القناة بتردد 16 kHz باستخدام ffmpeg.
    • Google Gemini: يعيد TTS في Gemini API ملف PCM خام بتردد 24kHz. يغلّفه OpenClaw كملف WAV لمرفقات الصوت، ويحوّله إلى Opus بتردد 48kHz لأهداف الملاحظات الصوتية، ويعيد PCM مباشرةً لـ Talk/الاتصالات الهاتفية.
    • Gradium: WAV لمرفقات الصوت، وOpus لأهداف الملاحظات الصوتية، وulaw_8000 بتردد 8 kHz للاتصالات الهاتفية.
    • Inworld: MP3 لمرفقات الصوت العادية، وOGG_OPUS أصلي لأهداف الملاحظات الصوتية، وPCM خام بتردد 22050 Hz لـ Talk/الاتصالات الهاتفية.
    • xAI: MP3 افتراضيًا؛ يمكن أن يكون responseFormat هو mp3 أو wav أو pcm أو mulaw أو alaw. يستخدم OpenClaw نقطة نهاية xAI لتوليف الكلام TTS عبر REST الدفعي ويعيد مرفقًا صوتيًا كاملًا؛ ولا يستخدم مسار هذا المزوّد WebSocket الخاص بتدفق TTS من xAI. لا يدعم هذا المسار تنسيق Opus الأصلي للملاحظات الصوتية.
    • Microsoft: يستخدم microsoft.outputFormat (الافتراضي audio-24khz-48kbitrate-mono-mp3).
      • يقبل النقل المضمّن outputFormat، لكن ليست كل التنسيقات متاحة من الخدمة.
      • تتبع قيم تنسيق الإخراج تنسيقات إخراج Microsoft Speech (بما في ذلك Ogg/WebM Opus).
      • يقبل Telegram sendVoice صيغ OGG/MP3/M4A؛ استخدم OpenAI/ElevenLabs إذا كنت تحتاج إلى رسائل صوتية Opus مضمونة.
      • إذا فشل تنسيق إخراج Microsoft المُكوَّن، يعيد OpenClaw المحاولة باستخدام MP3.

    تنسيقات إخراج OpenAI/ElevenLabs ثابتة لكل قناة (انظر أعلاه).

    سلوك TTS التلقائي

    عند تمكين messages.tts.auto، يقوم OpenClaw بما يلي:

    • يتخطى TTS إذا كان الرد يحتوي بالفعل على وسائط أو توجيه MEDIA:.
    • يتخطى الردود القصيرة جدًا (أقل من 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.
    التحدث / الاتصال الهاتفي PCM أصلي من المزوّد (Inworld 22050 Hz، Google 24 kHz)، أو ulaw_8000 من Gradium للاتصال الهاتفي.

    ملاحظات حسب المزوّد:

    • تحويل ترميز Feishu / WhatsApp: عندما يصل رد ملاحظة صوتية بصيغة MP3/WebM/WAV/M4A، يحوّل Plugin القناة الترميز إلى 48 kHz Ogg/Opus باستخدام ffmpeg. يرسل WhatsApp عبر Baileys مع ptt: true وaudio/ogg; codecs=opus. إذا فشل التحويل: يعود Feishu إلى إرفاق الملف الأصلي؛ ويفشل إرسال WhatsApp بدلا من نشر حمولة PTT غير متوافقة.
    • MiniMax / Xiaomi MiMo: MP3 افتراضي (32 kHz لـ MiniMax speech-2.8-hd)؛ يجري تحويله إلى 48 kHz Opus لأهداف الملاحظات الصوتية عبر ffmpeg.
    • CLI المحلي: يستخدم outputFormat المضبوط. تحوّل أهداف الملاحظات الصوتية إلى Ogg/Opus ومخرجات الاتصال الهاتفي إلى PCM أحادي خام بتردد 16 kHz.
    • Google Gemini: يرجع PCM خاما بتردد 24 kHz. يغلّفه OpenClaw كـ WAV للمرفقات، ويحوّله إلى 48 kHz Opus لأهداف الملاحظات الصوتية، ويرجع PCM مباشرة للتحدث/الاتصال الهاتفي.
    • Inworld: مرفقات MP3، وملاحظات صوتية أصلية OGG_OPUS، وPCM خام بتردد 22050 Hz للتحدث/الاتصال الهاتفي.
    • xAI: MP3 افتراضيا؛ يمكن أن يكون responseFormat هو mp3|wav|pcm|mulaw|alaw. يستخدم نقطة نهاية REST الدفعية في xAI — لا يُستخدم TTS عبر WebSocket المتدفق. صيغة الملاحظات الصوتية الأصلية Opus غير مدعومة.
    • Microsoft: يستخدم microsoft.outputFormat (الافتراضي audio-24khz-48kbitrate-mono-mp3). يقبل sendVoice في Telegram صيغ OGG/MP3/M4A؛ استخدم OpenAI/ElevenLabs إذا كنت تحتاج إلى رسائل صوتية Opus مضمونة. إذا فشلت صيغة Microsoft المضبوطة، يعيد OpenClaw المحاولة باستخدام MP3.

    صيغ مخرجات OpenAI وElevenLabs ثابتة لكل قناة كما هو مذكور أعلاه.

    مرجع الحقول

    رسائل المستوى الأعلى messages.tts.*
    auto"off" | "always" | "inbound" | "tagged"

    وضع TTS التلقائي. لا يرسل inbound الصوت إلا بعد رسالة صوتية واردة؛ ولا يرسل tagged الصوت إلا عندما يتضمن الرد توجيهات [[tts:...]] أو كتلة [[tts:text]].

    enabledboolean

    مفتاح تبديل قديم. يرحّل openclaw doctor --fix هذا إلى auto.

    mode"final" | "all"

    يتضمن "all" ردود الأدوات/الكتل إضافة إلى الردود النهائية.

    providerstring

    معرّف مزوّد الكلام. عند عدم ضبطه، يستخدم OpenClaw أول مزوّد مضبوط وفق ترتيب الاختيار التلقائي في السجل. يعيد openclaw doctor --fix كتابة provider: "edge" القديم إلى "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"> إعدادات يملكها المزوّد ومفهرسة حسب معرّف مزوّد الكلام. يعيد openclaw doctor --fix كتابة الكتل المباشرة القديمة (messages.tts.openai، و.elevenlabs، و.microsoft، و.edge)؛ لا تثبت إلا messages.tts.providers.<id>.

    maxTextLengthnumber

    حد صارم لعدد أحرف إدخال TTS. يفشل /tts audio إذا جرى تجاوزه.

    timeoutMsnumber

    مهلة الطلب بالمللي ثانية.

    prefsPathstring

    تجاوز مسار JSON المحلي للتفضيلات (المزوّد/الحد/الملخص). الافتراضي ~/.openclaw/settings/tts.json.

    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: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 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_v3). OPENCLAW_DOCS_MARKER:paramClose:

    voiceIdstring
    voiceSettingsobject

    stability، وsimilarityBoost، وstyle (كل منها 0..1)، وuseSpeakerBoost (true|false)، وspeed (0.5..2.0، 1.0 = عادي).

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

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Imxhbmd1YWdlQ29kZSIgdHlwZT0ic3RyaW5nIg ISO 639-1 من حرفين (مثلا en، وde). OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNlZWQiIHR5cGU9Im51bWJlciI عدد صحيح 0..4294967295 للحتمية بأفضل جهد. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring
    Google 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:IHBhdGg9InZvaWNlTmFtZSIgdHlwZT0ic3RyaW5nIg اسم صوت Gemini مسبق البناء. الافتراضي Kore. الاسم البديل: voice. OPENCLAW_DOCS_MARKER:paramClose:

    audioProfilestring
    speakerNamestring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InByb21wdFRlbXBsYXRlIiB0eXBlPSciYXVkaW8tcHJvZmlsZS12MSIn اضبطه إلى audio-profile-v1 لتغليف حقول موجه الشخصية النشطة في بنية موجه Gemini TTS حتمية. OPENCLAW_DOCS_MARKER:paramClose:

    personaPromptstring

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI يقبل فقط https://generativelanguage.googleapis.com. OPENCLAW_DOCS_MARKER:paramClose:

    Gradium

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg متغير البيئة: GRADIUM_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI القيمة الافتراضية https://api.gradium.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI القيمة الافتراضية Emma (YTpq7expH9539ERJ). OPENCLAW_DOCS_MARKER:paramClose:

    Inworld

    إعداد Inworld الأساسي

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg متغير البيئة: INWORLD_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI القيمة الافتراضية https://api.inworld.ai. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsSWQiIHR5cGU9InN0cmluZyI القيمة الافتراضية inworld-tts-1.5-max. كذلك: inworld-tts-1.5-mini، inworld-tts-1-max، inworld-tts-1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI القيمة الافتراضية Sarah. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InRlbXBlcmF0dXJlIiB0eXBlPSJudW1iZXIi درجة حرارة العينة 0..2. OPENCLAW_DOCS_MARKER:paramClose:

    Local CLI (tts-local-cli)
    commandstring

    OPENCLAW_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:

    cwdstring
    env"Record<string,
    Microsoft (no API key)
    enabledboolean

    OPENCLAW_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:

    saveSubtitlesboolean
    proxystring
    timeoutMsnumber

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImVkZ2UuKiIgdHlwZT0ib2JqZWN0IiBkZXByZWNhdGVk اسم بديل قديم. شغّل openclaw doctor --fix لإعادة كتابة الإعدادات المستمرة إلى providers.microsoft. OPENCLAW_DOCS_MARKER:paramClose:

    MiniMax

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg يتراجع إلى MINIMAX_API_KEY. مصادقة خطة الرموز عبر MINIMAX_OAUTH_TOKEN أو MINIMAX_CODE_PLAN_KEY أو MINIMAX_CODING_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI القيمة الافتراضية https://api.minimax.io. متغير البيئة: MINIMAX_API_HOST. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci القيمة الافتراضية speech-2.8-hd. متغير البيئة: MINIMAX_TTS_MODEL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlSWQiIHR5cGU9InN0cmluZyI القيمة الافتراضية English_expressive_narrator. متغير البيئة: MINIMAX_TTS_VOICE_ID. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InNwZWVkIiB0eXBlPSJudW1iZXIi 0.5..2.0. القيمة الافتراضية 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvbCIgdHlwZT0ibnVtYmVyIg (0, 10]. القيمة الافتراضية 1.0. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InBpdGNoIiB0eXBlPSJudW1iZXIi عدد صحيح -12..12. القيمة الافتراضية 0. تُقتطع القيم الكسرية قبل الطلب. OPENCLAW_DOCS_MARKER:paramClose:

    OpenAI

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg يتراجع إلى OPENAI_API_KEY. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci معرّف نموذج تحويل النص إلى كلام في 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 حقل OpenAI instructions الصريح. عند ضبطه، لا تُعيَّن حقول مطالبة الشخصية تلقائيا. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImV4dHJhQm9keSAvIGV4dHJhX2JvZHkiIHR5cGU9IlJlY29yZDxzdHJpbmcsIHVua25vd24 ">حقول JSON إضافية تُدمج في أجسام طلبات /audio/speech بعد حقول تحويل النص إلى كلام المولدة من OpenAI. استخدم هذا لنقاط النهاية المتوافقة مع OpenAI مثل Kokoro التي تتطلب مفاتيح خاصة بالمزوّد مثل lang؛ ويتم تجاهل مفاتيح النموذج الأولي غير الآمنة. OPENCLAW_DOCS_MARKER:paramClose:

    baseUrlstring

    تجاوز نقطة نهاية تحويل النص إلى كلام في OpenAI. ترتيب الحل: الإعدادات ← OPENAI_TTS_BASE_URLhttps://api.openai.com/v1. تُعامل القيم غير الافتراضية كنقاط نهاية تحويل نص إلى كلام متوافقة مع OpenAI، لذلك تُقبل أسماء النماذج والأصوات المخصصة.

    OpenRouter

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImFwaUtleSIgdHlwZT0ic3RyaW5nIg متغير البيئة: OPENROUTER_API_KEY. يمكن إعادة استخدام models.providers.openrouter.apiKey. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImJhc2VVcmwiIHR5cGU9InN0cmluZyI القيمة الافتراضية https://openrouter.ai/api/v1. يجري تطبيع العنوان القديم https://openrouter.ai/v1. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9Im1vZGVsIiB0eXBlPSJzdHJpbmci القيمة الافتراضية hexgrad/kokoro-82m. الاسم البديل: modelId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci القيمة الافتراضية af_alloy. الاسم البديل: voiceId. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InJlc3BvbnNlRm9ybWF0IiB0eXBlPScibXAzIiB8ICJwY20iJw القيمة الافتراضية mp3. OPENCLAW_DOCS_MARKER:paramClose:

    speednumber
    Volcengine (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. استخدم seed-tts-2.0 عندما يتضمن مشروعك استحقاق 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. متغير البيئة: VOLCENGINE_TTS_BASE_URL. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci نوع الصوت. القيمة الافتراضية en_female_anna_mars_bigtts. متغير البيئة: VOLCENGINE_TTS_VOICE. OPENCLAW_DOCS_MARKER:paramClose:

    speedRationumber
    emotionstring

    OPENCLAW_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: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:

    speednumber
    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-tts. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9InZvaWNlIiB0eXBlPSJzdHJpbmci القيمة الافتراضية mimo_default. متغير البيئة: XIAOMI_TTS_VOICE. OPENCLAW_DOCS_MARKER:paramClose:

    OPENCLAW_DOCS_MARKER:paramOpen:IHBhdGg9ImZvcm1hdCIgdHlwZT0nIm1wMyIgfCAid2F2Iic القيمة الافتراضية mp3. متغير البيئة: XIAOMI_TTS_FORMAT. OPENCLAW_DOCS_MARKER:paramClose:

    stylestring

    أداة الوكيل

    تحوّل أداة tts النص إلى كلام وتعيد مرفقا صوتيا لتسليم الرد. في Feishu وMatrix وTelegram وWhatsApp، يُسلَّم الصوت كرسالة صوتية بدلا من مرفق ملف. يمكن لـ Feishu وWhatsApp تحويل ترميز خرج تحويل النص إلى كلام غير Opus في هذا المسار عندما يكون ffmpeg متاحا.

    يرسل WhatsApp الصوت عبر Baileys كملاحظة صوتية PTT (audio مع ptt: true) ويرسل النص المرئي بشكل منفصل عن صوت PTT لأن العملاء لا يعرضون التسميات التوضيحية على الملاحظات الصوتية بشكل متسق.

    تقبل الأداة حقلي channel وtimeoutMs الاختياريين؛ وtimeoutMs هو مهلة طلب مزوّد لكل استدعاء بالمللي ثانية.

    Gateway RPC

    الطريقة الغرض
    tts.status قراءة حالة TTS الحالية وآخر محاولة.
    tts.enable ضبط التفضيل التلقائي المحلي إلى always.
    tts.disable ضبط التفضيل التلقائي المحلي إلى off.
    tts.convert تحويل نص لمرة واحدة ← صوت.
    tts.setProvider ضبط تفضيل المزوّد المحلي.
    tts.setPersona ضبط تفضيل الشخصية المحلية.
    tts.providers سرد المزوّدين المكوّنين وحالتهم.

    روابط الخدمة

    ذو صلة