macOS companion app

الاستيقاظ الصوتي (macOS)

التنبيه الصوتي والضغط للتحدث

المتطلبات

يتطلب التنبيه الصوتي والضغط للتحدث macOS 26 أو أحدث. في إصدارات macOS الأقدم، تُخفى عناصر التحكم من صفحة إعدادات الصوت، التي تعرض متطلب macOS 26.

الأوضاع

  • وضع كلمة التنبيه (الافتراضي): ينتظر متعرف الكلام الدائم التشغيل رموز التشغيل (swabbleTriggerWords). عند التطابق يبدأ الالتقاط، ويعرض التراكب مع النص الجزئي، ويرسل تلقائيا بعد الصمت.
  • الضغط للتحدث (الضغط المطول على Option الأيمن): اضغط مطولا على مفتاح Option الأيمن للالتقاط فورا، بلا حاجة إلى مشغل. يظهر التراكب أثناء الضغط؛ ويؤدي الإفلات إلى الإنهاء والتمرير بعد تأخير قصير حتى تتمكن من تعديل النص.

سلوك وقت التشغيل (كلمة التنبيه)

  • يعيش متعرف الكلام في VoiceWakeRuntime.
  • لا يعمل المشغل إلا عندما تكون هناك وقفة ذات معنى بين كلمة التنبيه والكلمة التالية (فجوة تقارب 0.55 ثانية). يمكن أن يبدأ التراكب/الرنين عند الوقفة حتى قبل أن يبدأ الأمر.
  • نوافذ الصمت: 2.0 ثانية عندما يكون الكلام جاريا، و5.0 ثوان إذا لم تُسمع إلا كلمة التنبيه.
  • إيقاف صارم: 120 ثانية لمنع الجلسات المنفلتة.
  • إزالة الارتداد بين الجلسات: 350 مللي ثانية.
  • يُدار التراكب عبر VoiceWakeOverlayController مع تلوين ملتزم/متقلب.
  • بعد الإرسال، يعاد تشغيل المتعرف بشكل نظيف للاستماع إلى المشغل التالي.

ثوابت دورة الحياة

  • إذا كان التنبيه الصوتي مفعلا وكانت الأذونات ممنوحة، فيجب أن يكون متعرف كلمة التنبيه في وضع الاستماع (إلا أثناء التقاط صريح بالضغط للتحدث).
  • يجب ألا تمنع رؤية التراكب (بما في ذلك الإغلاق اليدوي عبر زر X) المتعرف من الاستئناف أبدا.

نمط فشل التراكب العالق (سابقا)

سابقا، إذا علق التراكب ظاهرا وأغلقته يدويا، فقد يبدو التنبيه الصوتي "معطلا" لأن محاولة إعادة التشغيل في وقت التشغيل قد تُحظر بسبب رؤية التراكب، ولا تُجدول أي إعادة تشغيل لاحقة.

التقوية:

  • لم تعد إعادة تشغيل وقت تشغيل التنبيه محظورة برؤية التراكب.
  • يؤدي اكتمال إغلاق التراكب إلى تشغيل VoiceWakeRuntime.refresh(...) عبر VoiceSessionCoordinator، لذلك يستأنف الإغلاق اليدوي بزر X الاستماع دائما.

تفاصيل الضغط للتحدث

  • يستخدم اكتشاف مفتاح الاختصار مراقبا عاما لـ .flagsChanged من أجل Option الأيمن (keyCode 61 + .option). نحن نراقب الأحداث فقط (من دون ابتلاعها).
  • يعيش مسار الالتقاط في VoicePushToTalk: يبدأ Speech فورا، ويبث الجزئيات إلى التراكب، ويستدعي VoiceWakeForwarder عند الإفلات.
  • عندما يبدأ الضغط للتحدث، نوقف وقت تشغيل كلمة التنبيه مؤقتا لتجنب منافسة مقابس الصوت؛ ويعاد تشغيله تلقائيا بعد الإفلات.
  • الأذونات: يتطلب الميكروفون + Speech؛ ورؤية الأحداث تحتاج إلى موافقة إمكانية الوصول/مراقبة الإدخال.
  • لوحات المفاتيح الخارجية: قد لا تعرض بعضها Option الأيمن كما هو متوقع، لذلك وفر اختصارا بديلا إذا أبلغ المستخدمون عن حالات عدم الالتقاط.

الإعدادات المرئية للمستخدم

  • مفتاح تبديل التنبيه الصوتي: يفعّل وقت تشغيل كلمة التنبيه.
  • اضغط مطولا على Option الأيمن للتحدث: يفعّل مراقب الضغط للتحدث.
  • منتقيات اللغة والميكروفون، مقياس مستوى مباشر، جدول كلمات التشغيل، أداة اختبار (محلية فقط؛ لا تمرر).
  • يحافظ منتقي الميكروفون على آخر اختيار إذا انقطع اتصال جهاز، ويعرض تلميحا بأنه غير متصل، ويعود مؤقتا إلى الافتراضي للنظام حتى يعود.
  • الأصوات: رنين عند اكتشاف المشغل وعند الإرسال؛ الافتراضي هو صوت نظام macOS "Glass". يمكنك اختيار أي ملف قابل للتحميل عبر NSSound (مثل MP3/WAV/AIFF) لكل حدث أو اختيار بلا صوت.

سلوك التمرير

  • عند تفعيل التنبيه الصوتي، تمرر النصوص إلى Gateway/الوكيل النشط (وضع المحلي مقابل البعيد نفسه المستخدم في بقية تطبيق Mac).
  • تُسلّم الردود إلى آخر مزود رئيسي مستخدم (WhatsApp/Telegram/Discord/WebChat). إذا فشل التسليم، يُسجل الخطأ ويظل التشغيل مرئيا عبر سجلات WebChat/الجلسة.

حمولة التمرير

  • تضيف VoiceWakeForwarder.prefixedTranscript(_:) تلميح الجهاز قبل الإرسال. مشتركة بين مساري كلمة التنبيه والضغط للتحدث.

التحقق السريع

  • فعّل الضغط للتحدث، اضغط مطولا على Option الأيمن، تحدث، ثم أفلت: يجب أن يعرض التراكب الجزئيات ثم يرسل.
  • أثناء الضغط، يجب أن تبقى آذان شريط القوائم مكبرة (تستخدم triggerVoiceEars(ttl:nil))؛ وتهبط بعد الإفلات.

ذو صلة

Was this useful?
On this page

On this page