الانتقال إلى المحتوى الرئيسي

وضع التحدث

وضع التحدث هو حلقة محادثة صوتية مستمرة:
  1. الاستماع إلى الكلام
  2. إرسال النص المفرغ إلى النموذج (الجلسة الرئيسية، chat.send)
  3. انتظار الرد
  4. نطقه عبر موفّر Talk المُعدّ (talk.speak)

السلوك (macOS)

  • تراكب دائم الظهور ما دام وضع التحدث مفعّلًا.
  • انتقالات بين مراحل الاستماع → التفكير → التحدث.
  • عند توقف قصير (نافذة صمت)، يتم إرسال النص المفرغ الحالي.
  • تُكتب الردود في WebChat (مثلها مثل الكتابة).
  • المقاطعة عند الكلام (مفعّلة افتراضيًا): إذا بدأ المستخدم بالكلام بينما كان المساعد يتحدث، فإننا نوقف التشغيل ونسجل الطابع الزمني للمقاطعة من أجل prompt التالي.

توجيهات الصوت داخل الردود

يمكن للمساعد أن يسبق رده بسطر JSON واحد للتحكم في الصوت:
{ "voice": "<voice-id>", "once": true }
القواعد:
  • أول سطر غير فارغ فقط.
  • يتم تجاهل المفاتيح غير المعروفة.
  • تطبق once: true على الرد الحالي فقط.
  • من دون once، يصبح الصوت هو الافتراضي الجديد لوضع التحدث.
  • تتم إزالة سطر JSON قبل تشغيل TTS.
المفاتيح المدعومة:
  • voice / voice_id / voiceId
  • model / model_id / modelId
  • speed وrate ‏(كلمات في الدقيقة)، وstability، وsimilarity، وstyle، وspeakerBoost
  • seed وnormalize وlang وoutput_format وlatency_tier
  • once

الإعدادات (~/.openclaw/openclaw.json)

{
  talk: {
    voiceId: "elevenlabs_voice_id",
    modelId: "eleven_v3",
    outputFormat: "mp3_44100_128",
    apiKey: "elevenlabs_api_key",
    silenceTimeoutMs: 1500,
    interruptOnSpeech: true,
  },
}
القيم الافتراضية:
  • interruptOnSpeech: ‏true
  • silenceTimeoutMs: عند عدم تعيينه، يحتفظ Talk بنافذة التوقف الافتراضية الخاصة بالمنصة قبل إرسال النص المفرغ (700 ms على macOS وAndroid، و900 ms على iOS)
  • voiceId: يرجع إلى ELEVENLABS_VOICE_ID / SAG_VOICE_ID (أو أول صوت من ElevenLabs عندما يكون API key متاحًا)
  • modelId: القيمة الافتراضية هي eleven_v3 عند عدم التعيين
  • apiKey: يرجع إلى ELEVENLABS_API_KEY (أو ملف shell profile الخاص بالبوابة إذا كان متاحًا)
  • outputFormat: القيمة الافتراضية هي pcm_44100 على macOS/iOS وpcm_24000 على Android (اضبط mp3_* لفرض بث MP3)

واجهة macOS

  • مفتاح التبديل في شريط القوائم: Talk
  • تبويب الإعدادات: مجموعة Talk Mode ‏(معرّف الصوت + مفتاح المقاطعة)
  • التراكب:
    • الاستماع: تنبض السحابة مع مستوى الميكروفون
    • التفكير: حركة غوص
    • التحدث: حلقات متشععة
    • انقر السحابة: أوقف التحدث
    • انقر X: اخرج من وضع التحدث

ملاحظات

  • يتطلب أذونات Speech + Microphone.
  • يستخدم chat.send على مفتاح الجلسة main.
  • تحل البوابة تشغيل Talk عبر talk.speak باستخدام موفّر Talk النشط. ويرجع Android إلى TTS المحلي للنظام فقط عندما لا يكون RPC هذا متاحًا.
  • يتم التحقق من stability في eleven_v3 بحيث تكون 0.0 أو 0.5 أو 1.0؛ أما النماذج الأخرى فتقبل 0..1.
  • يتم التحقق من latency_tier بحيث يكون 0..4 عند تعيينه.
  • يدعم Android صيغ الإخراج pcm_16000 وpcm_22050 وpcm_24000 وpcm_44100 من أجل البث منخفض الكمون عبر AudioTrack.