macOS companion app
التنشيط الصوتي (macOS)
التنشيط الصوتي والضغط للتحدث
المتطلبات
يتطلب التنشيط الصوتي والضغط للتحدث macOS 26 أو إصدارًا أحدث. في إصدارات macOS الأقدم، تُخفى عناصر التحكم من صفحة إعدادات الصوت، ويظهر بدلًا منها شرط استخدام macOS 26.
الأوضاع
- وضع كلمة التنبيه (الافتراضي): ينتظر مُميّز كلام يعمل دائمًا رموز التشغيل (
swabbleTriggerWords). وعند المطابقة، يبدأ الالتقاط ويعرض الطبقة المتراكبة مع النص الجزئي، ثم يرسله تلقائيًا بعد الصمت. - الضغط للتحدث (اضغط مطولًا على مفتاح Option الأيمن): اضغط مطولًا على مفتاح Option الأيمن لبدء الالتقاط فورًا من دون الحاجة إلى كلمة تشغيل. تظهر الطبقة المتراكبة طوال مدة الضغط؛ وعند إفلات المفتاح، يُعتمد النص ويُمرَّر بعد تأخير قصير لتتمكن من تعديله.
سلوك وقت التشغيل (كلمة التنبيه)
- يوجد مُميّز الكلام في
VoiceWakeRuntime. - لا يحدث التشغيل إلا عند وجود وقفة واضحة بين كلمة التنبيه والكلمة التالية (
triggerPauseWindow= 0.55s). ويمكن أن تبدأ الطبقة المتراكبة/الرنّة أثناء الوقفة، حتى قبل بدء الأمر. - نوافذ الصمت: 2.0s (
silenceWindow) عندما يكون الكلام متواصلًا، و5.0s (triggerOnlySilenceWindow) إذا لم يُسمع سوى التشغيل. - الإيقاف الإلزامي: 120s (
captureHardStop) لمنع الجلسات غير المنضبطة. - إزالة الارتداد بين الجلسات: 350ms (
debounceAfterSend) بعد الإرسال. - تُدار الطبقة المتراكبة عبر
VoiceWakeOverlayController، مع تلوين النص المعتمد/المؤقت. - بعد الإرسال، يُعاد تشغيل مُميّز الكلام بصورة سليمة للاستماع إلى التشغيل التالي.
ثوابت دورة الحياة
- إذا كان التنشيط الصوتي مفعّلًا وكانت الأذونات ممنوحة، يظل مُميّز كلمة التنبيه في وضع الاستماع، باستثناء أثناء عملية التقاط نشطة بالضغط للتحدث.
- يؤدي إغلاق الطبقة المتراكبة، بما في ذلك الإغلاق اليدوي عبر الزر X، دائمًا إلى استئناف مُميّز الكلام: يستدعي
VoiceSessionCoordinator.overlayDidDismissالدالةVoiceWakeRuntime.refresh(state:)في كل مسار إغلاق. راجع الطبقة المتراكبة الصوتية للاطلاع على نموذج الجلسة/الرمز المميز.
تفاصيل الضغط للتحدث
- يستخدم اكتشاف مفتاح الاختصار مراقبًا عامًا للأحداث
.flagsChangedلمفتاح Option الأيمن (keyCode 61+.option). وهو يراقب الأحداث فقط ولا يعترضها مطلقًا. - تتم عملية الالتقاط في
VoicePushToTalk: إذ تبدأ التعرّف على الكلام فورًا، وتبث النتائج الجزئية إلى الطبقة المتراكبة، وتستدعيVoiceWakeForwarderعند الإفلات. - يؤدي بدء الضغط للتحدث إلى إيقاف وقت تشغيل كلمة التنبيه مؤقتًا لتجنب تعارض التقاط الصوت؛ ويُعاد تشغيله تلقائيًا بعد الإفلات.
- الأذونات: يتطلب الميكروفون + التعرّف على الكلام؛ ويتطلب تلقي أحداث المفاتيح الموافقة على تسهيلات الاستخدام/مراقبة الإدخال.
- لوحات المفاتيح الخارجية: لا تعرض بعض اللوحات مفتاح Option الأيمن كما هو متوقع. وفّر اختصارًا بديلًا إذا أبلغ المستخدمون عن عدم اكتشاف الضغطات.
الإعدادات الموجّهة للمستخدم
- مفتاح تبديل التنشيط الصوتي: يفعّل وقت تشغيل كلمة التنبيه.
- اضغط مطولًا على مفتاح Option الأيمن للتحدث: يفعّل مراقب الضغط للتحدث.
- محددا اللغة والميكروفون، ومقياس مباشر للمستوى، وجدول لكلمات التشغيل، وأداة اختبار (محلية فقط ولا تمرّر البيانات مطلقًا).
- يحتفظ محدد الميكروفون بآخر اختيار إذا انقطع اتصال جهاز، ويعرض تلميحًا يفيد بانقطاع الاتصال، ويعود مؤقتًا إلى الإعداد الافتراضي للنظام حتى عودة الجهاز.
- الأصوات: رنّات عند اكتشاف التشغيل وعند الإرسال، ويكون الإعداد الافتراضي هو صوت النظام "Glass" في macOS. اختر لكل حدث أي ملف يمكن لـ
NSSoundتحميله (مثل MP3/WAV/AIFF)، أو اختر بلا صوت.
سلوك التمرير
- عند التمرير، تختار
VoiceWakeForwarder.selectedSessionOptionsمفتاح جلسة WebChat النشطة إذا كان معيّنًا، وإلا فتختار مفتاح الجلسة الرئيسية في Gateway. - تبحث عن تلك الجلسة عبر
sessions.listوتستنتج قناة التسليم والوجهة من سياق التسليم الخاص بالجلسة (مع الرجوع إلى آخر قناة/وجهة لها، ثم إلى مفتاح جلسة محلل)، مع اعتماد WebChat افتراضيًا إذا تعذر التوصل إلى أي نتيجة. - إذا فشل التسليم، يُسجَّل الخطأ (ضمن الفئة
voicewake.forward)، ويظل التشغيل ظاهرًا عبر سجلات WebChat/الجلسة.
حمولة التمرير
- تضيف
VoiceWakeForwarder.prefixedTranscript(_:)في بداية النص المنسوخ سطر تلميح للآلة (اسم المضيف الذي تم التوصل إليه، مع الرجوع إلى "جهاز Mac هذا")، ويكون مشتركًا بين مساري كلمة التنبيه والضغط للتحدث.
تحقق سريع
- فعّل الضغط للتحدث، واضغط مطولًا على مفتاح Option الأيمن، وتحدث، ثم أفلته: ينبغي أن تعرض الطبقة المتراكبة النتائج الجزئية ثم ترسلها.
- أثناء الضغط المطول، ينبغي أن تظل أذنا شريط القوائم مكبّرتين (
triggerVoiceEars(ttl: nil))، ثم تعودان إلى حجمهما بعد الإفلات.
ذو صلة
Was this useful?