---
read_when:
    - العمل على مسارات التنبيه الصوتي أو PTT
summary: أوضاع التنبيه الصوتي والدفع للتحدث بالإضافة إلى تفاصيل التوجيه في تطبيق mac
title: التنبيه الصوتي (macOS)
x-i18n:
  refreshed_at: '2026-04-28T05:23:26Z'
  generated_at: "2026-04-24T07:52:55Z"
  model: gpt-5.4
  provider: openai
  source_hash: 0273c24764f0baf440a19f31435d6ee62ab040c1ec5a97d7733d3ec8b81b0641
  source_path: platforms/mac/voicewake.md
  workflow: 15
---

# التنبيه الصوتي والدفع للتحدث

## الأوضاع

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

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

- يوجد مُعرّف الكلام في `VoiceWakeRuntime`.
- لا يتم تشغيل trigger إلا عندما تكون هناك **وقفة ذات معنى** بين كلمة التنبيه والكلمة التالية (~فجوة قدرها 0.55 ثانية). ويمكن أن تبدأ الطبقة العلوية/الصوت عند الوقفة حتى قبل بدء الأمر.
- نوافذ الصمت: 2.0 ثانية عندما يكون الكلام مستمرًا، و5.0 ثوانٍ إذا لم يُسمع سوى trigger.
- إيقاف صارم: 120 ثانية لمنع الجلسات المنفلتة.
- إزالة ارتداد بين الجلسات: 350ms.
- تُدار الطبقة العلوية عبر `VoiceWakeOverlayController` مع تلوين committed/volatile.
- بعد الإرسال، يُعاد تشغيل المُعرّف بشكل نظيف للاستماع إلى trigger التالي.

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

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

## وضع فشل الطبقة العلوية العالقة (سابقًا)

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

التعزيز:

- لم تعد إعادة تشغيل وقت تشغيل التنبيه محجوبة بسبب رؤية الطبقة العلوية.
- يؤدي اكتمال إغلاق الطبقة العلوية إلى تشغيل `VoiceWakeRuntime.refresh(...)` عبر `VoiceSessionCoordinator`، بحيث تؤدي عملية الإغلاق اليدوي عبر X دائمًا إلى استئناف الاستماع.

## تفاصيل الدفع للتحدث

- يستخدم اكتشاف مفتاح الاختصار مراقبًا عامًا من نوع `.flagsChanged` لمفتاح **Option الأيمن** (`keyCode 61` + `.option`). ونحن نراقب الأحداث فقط (من دون ابتلاعها).
- يوجد خط الالتقاط في `VoicePushToTalk`: يبدأ Speech فورًا، ويبث النتائج الجزئية إلى الطبقة العلوية، ويستدعي `VoiceWakeForwarder` عند الإفلات.
- عند بدء الدفع للتحدث، نوقف وقت تشغيل كلمة التنبيه مؤقتًا لتجنب تنافس audio taps؛ ويُعاد تشغيله تلقائيًا بعد الإفلات.
- الأذونات: يتطلب Microphone + Speech؛ كما يتطلب رؤية الأحداث موافقة Accessibility/Input Monitoring.
- لوحات المفاتيح الخارجية: قد لا تكشف بعض اللوحات عن Option الأيمن كما هو متوقع — فوفّر اختصارًا احتياطيًا إذا أبلغ المستخدمون عن حالات فشل.

## الإعدادات الموجهة للمستخدم

- مفتاح **Voice Wake**: يفعّل وقت تشغيل كلمة التنبيه.
- **Hold Cmd+Fn to talk**: يفعّل مراقب الدفع للتحدث. ويكون معطلًا على macOS < 26.
- محددات اللغة والميكروفون، ومقياس المستوى الحي، وجدول كلمات التشغيل، وأداة اختبار (محلية فقط؛ لا تمرر النص).
- يحتفظ محدد الميكروفون بآخر اختيار إذا انفصل جهاز، ويعرض تلميحًا بانقطاع الاتصال، ويعود مؤقتًا إلى افتراضي النظام حتى يعود الجهاز.
- **الأصوات**: نغمات عند اكتشاف trigger وعند الإرسال؛ والافتراضي هو صوت نظام macOS ‏"Glass". ويمكنك اختيار أي ملف يمكن لـ `NSSound` تحميله (مثل MP3/WAV/AIFF) لكل حدث أو اختيار **No Sound**.

## سلوك التمرير

- عند تفعيل Voice Wake، يتم تمرير النصوص المنسوخة إلى gateway/الوكيل النشط (نفس وضع local مقابل remote المستخدم في بقية تطبيق mac).
- تُسلَّم الردود إلى **آخر provider رئيسي استُخدم** (WhatsApp/Telegram/Discord/WebChat). وإذا فشل التسليم، يُسجَّل الخطأ وتبقى العملية مرئية عبر WebChat/سجلات الجلسة.

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

- تضيف `VoiceWakeForwarder.prefixedTranscript(_:)` التلميح الآلي في البداية قبل الإرسال. وهي مشتركة بين مساري كلمة التنبيه والدفع للتحدث.

## تحقق سريع

- فعّل الدفع للتحدث، واضغط باستمرار على Cmd+Fn، وتحدث، ثم أفلت: يجب أن تُظهر الطبقة العلوية النتائج الجزئية ثم ترسل.
- أثناء الضغط، يجب أن تبقى آذان شريط القائمة مكبرة (تستخدم `triggerVoiceEars(ttl:nil)`); وتعود إلى وضعها بعد الإفلات.

## ذو صلة

- [التنبيه الصوتي](/ar/nodes/voicewake)
- [الطبقة العلوية الصوتية](/ar/platforms/mac/voice-overlay)
- [تطبيق macOS](/ar/platforms/macos)
