- التحدث الأصلي على macOS/iOS/Android: التعرف المحلي على الكلام، ودردشة Gateway، وتحويل النص إلى كلام عبر
talk.speak. تعلن Nodes عن إمكانيةtalkوتحدد أوامرtalk.*التي تدعمها. - التحدث على iOS (في الوقت الفعلي): WebRTC مملوك للعميل لإعدادات OpenAI في الوقت الفعلي التي تحدد نقل
webrtcأو لا تحدد نقلًا. تظل إعداداتgateway-relayوprovider-websocketالصريحة وإعدادات الوقت الفعلي غير التابعة لـ OpenAI على المرحّل المملوك لـ Gateway؛ أما الإعدادات غير الآنية فتستخدم حلقة الكلام الأصلية. - التحدث في المتصفح: استخدم
talk.client.createلجلساتwebrtc/provider-websocketالمملوكة للعميل، أوtalk.session.createلجلساتgateway-relayالمملوكة لـ Gateway. الخيارmanaged-roomمحجوز لتسليم التحكم إلى Gateway وغرف أجهزة الاتصال اللاسلكي. - التحدث على Android (في الوقت الفعلي): فعّله اختياريًا باستخدام
talk.realtime.mode: "realtime"وtalk.realtime.transport: "gateway-relay". بخلاف ذلك، يظل Android مستخدمًا للتعرف الأصلي على الكلام، ودردشة Gateway، وtalk.speak. - عملاء النسخ فقط: استخدم
talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" })، ثمtalk.session.appendAudioوtalk.session.cancelTurnوtalk.session.closeللتسميات التوضيحية/الإملاء من دون استجابة صوتية من المساعد. تظل الملاحظات الصوتية المرفوعة لمرة واحدة تستخدم مسار الصوت ضمن فهم الوسائط.
talk.speak).
يمرّر التحدث الآني المملوك للعميل استدعاءات أدوات الموفّر عبر talk.client.toolCall بدلًا من استدعاء chat.send مباشرةً. أثناء نشاط استشارة آنية، يمكن للعملاء استدعاء talk.client.steer أو talk.session.steer لتصنيف الإدخال المنطوق على أنه status أو steer أو cancel أو followup. تُضاف توجيهات المسار المقبولة إلى قائمة انتظار التشغيل المضمّن النشط؛ أما التوجيهات المرفوضة فتعيد سببًا مثل no_active_run أو not_streaming أو compacting.
يُصدر التحدث المخصص للنسخ فقط مغلف أحداث التحدث نفسه الذي تستخدمه جلسات الوقت الفعلي وتحويل الكلام إلى نص/تحويل النص إلى كلام، لكنه يستخدم mode: "transcription" وbrain: "none". تبث جميع جلسات التحدث الأحداث على قناة talk.event؛ ويشترك العملاء فيها للحصول على تحديثات النص المنسوخ الجزئية/النهائية (transcript.delta/transcript.done) وبيانات القياس الأخرى للجلسة.
السلوك (macOS)
- طبقة متراكبة دائمة الظهور ما دام وضع التحدث مفعّلًا.
- انتقالات المراحل: الاستماع → التفكير → التحدث.
- عند حدوث توقف قصير (نافذة صمت)، يُرسل النص المنسوخ الحالي.
- تُكتب الردود في WebChat (كما عند الكتابة).
- المقاطعة عند الكلام (مفعّلة افتراضيًا): إذا تحدث المستخدم أثناء نطق المساعد، يتوقف التشغيل ويُسجّل الطابع الزمني للمقاطعة لاستخدامه في الموجّه التالي.
توجيهات الصوت في الردود
يمكن للمساعد إضافة سطر JSON واحد في بداية الرد للتحكم في الصوت:- أول سطر غير فارغ فقط؛ يُزال سطر JSON قبل تشغيل تحويل النص إلى كلام.
- تُتجاهل المفاتيح غير المعروفة.
- يطبَّق
once: trueعلى الرد الحالي فقط؛ ومن دونه يصبح الصوت هو الإعداد الافتراضي الجديد لوضع التحدث.
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.catalog معرّفات المزوّدين القياسية والأسماء المستعارة في السجل، والأوضاع ووسائل النقل واستراتيجيات العقل وتنسيقات الصوت في الوقت الفعلي وعلامات الإمكانات الصالحة لكل مزوّد، بالإضافة إلى نتيجة الجاهزية التي يحددها وقت التشغيل. ينبغي لعملاء Talk من الطرف الأول قراءة هذا الكتالوج بدلًا من الاحتفاظ بالأسماء المستعارة للمزوّدين محليًا؛ وتعامل مع Gateway أقدم لا يعرض جاهزية المجموعة على أنه غير متحقق منه، لا على أنه غير مهيأ بشكل قاطع. يُكتشف مزوّدو النسخ النصي المتدفق عبر talk.catalog.transcription؛ ويستخدم ترحيل Gateway الحالي إعدادات مزوّد البث المتدفق للمكالمات الصوتية إلى أن تُطرح واجهة إعدادات مخصصة للنسخ النصي في Talk.
واجهة مستخدم macOS
- مفتاح شريط القوائم: Talk
- علامة تبويب الإعدادات: مجموعة وضع Talk (معرّف الصوت + مفتاح المقاطعة)
- الطبقة المتراكبة: تعرض الكرة الشكل الموجي العام للمحادثة (المشترك مع iOS وwatchOS وAndroid). تتبع حالة الاستماع مستوى الميكروفون المباشر، وتتبع حالة التحدث غلاف تشغيل TTS الفعلي، بينما تنبض حالة التفكير برفق. انقر على الكرة للإيقاف المؤقت/الاستئناف، وانقر عليها نقرًا مزدوجًا لإيقاف التحدث، وانقر على X للخروج من وضع Talk.
واجهة مستخدم Android
- مفتاح علامة تبويب الصوت: Talk
- وضعا الالتقاط اليدوي للميكروفون وTalk متنافيان.
- يفضّل الميكروفون اليدوي وTalk في الوقت الفعلي ميكروفون سماعة رأس متصلة عبر Bluetooth Classic أو BLE؛ وإذا انقطع اتصالها، يطلب التطبيق إدخالًا من سماعة رأس أخرى أو يعود إلى الميكروفون الافتراضي، مع استعادة التفضيل الافتراضي بمجرد توقف الالتقاط.
- يتوقف الميكروفون اليدوي عندما يغادر التطبيق الواجهة الأمامية أو يغادر المستخدم علامة تبويب الصوت.
- يستمر وضع Talk في العمل حتى إيقافه عبر المفتاح أو انقطاع اتصال العقدة، مستخدمًا نوع خدمة الميكروفون في الواجهة الأمامية لنظام Android أثناء نشاطه.
- يدعم Android تنسيقات الإخراج
pcm_16000وpcm_22050وpcm_24000وpcm_44100للبث منخفض الكمون عبرAudioTrack.
ملاحظات
- يتطلب أذونات التعرّف على الكلام والميكروفون.
- يستخدم Talk الأصلي جلسة Gateway النشطة، ولا يعود إلى استطلاع السجل إلا عند عدم توفر أحداث الاستجابة.
- يحل Gateway تشغيل Talk عبر
talk.speakباستخدام مزوّد Talk النشط. ولا يعود Android إلى TTS المحلي للنظام إلا عندما لا يتوفر استدعاء RPC هذا. - يستخدم تشغيل MLX المحلي على macOS مساعد
openclaw-mlx-ttsالمضمّن عند توفره، أو ملفًا تنفيذيًا موجودًا فيPATH. عيّنOPENCLAW_MLX_TTS_BINللإشارة إلى ملف مساعد تنفيذي مخصص أثناء التطوير. - نطاقات قيم توجيهات الصوت (ElevenLabs): تقبل
stabilityوsimilarityوstyleالقيم0..1؛ ويقبلspeedالقيم0.5..2؛ ويقبلlatency_tierالقيم0..4.