آواز کے ذریعے بیداری & پُش ٹو ٹاک¶
موڈز¶
- Wake-word mode (default): ہمیشہ آن Speech recognizer ٹرگر ٹوکنز (
swabbleTriggerWords) کا انتظار کرتا ہے۔ 1. میچ ہونے پر یہ کیپچر شروع کرتا ہے، جزوی متن کے ساتھ اوورلے دکھاتا ہے، اور خاموشی کے بعد خودکار طور پر بھیج دیتا ہے۔ -
- پُش ٹو ٹاک (Right Option دبائے رکھیں): دائیں Option کلید دبائے رکھیں تاکہ فوراً کیپچر ہو—کسی ٹرگر کی ضرورت نہیں۔ 3. دبائے رکھنے کے دوران اوورلے ظاہر ہوتا ہے؛ چھوڑنے پر حتمی شکل دے کر مختصر تاخیر کے بعد آگے بھیج دیتا ہے تاکہ آپ متن میں ردوبدل کر سکیں۔
رَن ٹائم برتاؤ (wake-word)¶
- Speech recognizer
VoiceWakeRuntimeمیں رہتا ہے۔ -
- ٹرگر صرف اسی وقت فائر ہوتا ہے جب ویک ورڈ اور اگلے لفظ کے درمیان بامعنی وقفہ ہو (~0.55s کا گیپ)۔ 5. کمانڈ شروع ہونے سے پہلے ہی وقفے پر اوورلے/چائم شروع ہو سکتا ہے۔
- خاموشی کی ونڈوز: جب گفتگو جاری ہو تو 2.0s، اور اگر صرف ٹرگر سنا گیا ہو تو 5.0s۔
- ہارڈ اسٹاپ: بے قابو سیشنز سے بچنے کے لیے 120s۔
- سیشنز کے درمیان ڈی باؤنس: 350ms۔
- اوورلے
VoiceWakeOverlayControllerکے ذریعے کمِٹڈ/وولیٹائل رنگ بندی کے ساتھ چلایا جاتا ہے۔ - بھیجنے کے بعد، recognizer صاف طور پر دوبارہ شروع ہو جاتا ہے تاکہ اگلے ٹرگر کے لیے سنا جا سکے۔
لائف سائیکل کے ناقابلِ تغیر اصول¶
- اگر Voice Wake فعال ہو اور اجازتیں دی گئی ہوں تو wake-word recognizer کو سن رہا ہونا چاہیے (سوائے کسی واضح push-to-talk کیپچر کے دوران)۔
- اوورلے کی مرئیت (X بٹن کے ذریعے دستی بندش سمیت) کو کبھی بھی recognizer کے دوبارہ شروع ہونے سے نہیں روکنا چاہیے۔
Sticky overlay کی ناکامی کا موڈ (سابقہ)¶
پہلے، اگر اوورلے مرئی حالت میں پھنس جاتا اور آپ اسے دستی طور پر بند کرتے، تو Voice Wake “مردہ” محسوس ہو سکتا تھا کیونکہ رَن ٹائم کی ری اسٹارٹ کی کوشش اوورلے کی مرئیت سے بلاک ہو سکتی تھی اور بعد کی کوئی ری اسٹارٹ شیڈول نہیں ہوتی تھی۔
سختی (Hardening):
- ویک رَن ٹائم کی ری اسٹارٹ اب اوورلے کی مرئیت سے بلاک نہیں ہوتی۔
- اوورلے ڈسمس کی تکمیل
VoiceSessionCoordinatorکے ذریعےVoiceWakeRuntime.refresh(...)کو ٹرگر کرتی ہے، لہٰذا X کے ذریعے دستی بندش ہمیشہ سننا دوبارہ شروع کر دیتی ہے۔
Push-to-talk کی تفصیلات¶
-
- ہاٹ کی ڈٹیکشن right Option کے لیے ایک گلوبل
.flagsChangedمانیٹر استعمال کرتی ہے (keyCode 61+.option)۔ 7. ہم صرف ایونٹس کا مشاہدہ کرتے ہیں (کوئی سوئیلنگ نہیں)۔
- ہاٹ کی ڈٹیکشن right Option کے لیے ایک گلوبل
- کیپچر پائپ لائن
VoicePushToTalkمیں رہتی ہے: Speech فوراً شروع کرتی ہے، جزوی نتائج اوورلے کو اسٹریم کرتی ہے، اور چھوڑنے پرVoiceWakeForwarderکال کرتی ہے۔ - جب push-to-talk شروع ہوتا ہے تو ہم wake-word رَن ٹائم کو روک دیتے ہیں تاکہ آڈیو ٹیپس میں ٹکراؤ نہ ہو؛ چھوڑنے کے بعد یہ خودکار طور پر دوبارہ شروع ہو جاتا ہے۔
- اجازتیں: Microphone + Speech درکار؛ ایونٹس دیکھنے کے لیے Accessibility/Input Monitoring کی منظوری چاہیے۔
- بیرونی کی بورڈز: بعض میں right Option متوقع طور پر دستیاب نہیں ہوتا—اگر صارفین مسز رپورٹ کریں تو متبادل شارٹ کٹ پیش کریں۔
صارف کے سامنے آنے والی سیٹنگز¶
- Voice Wake ٹوگل: wake-word رَن ٹائم کو فعال کرتا ہے۔
-
- Cmd+Fn دبائے رکھیں تاکہ بات کریں: پُش ٹو ٹاک مانیٹر کو فعال کرتا ہے۔ 9. macOS < 26 پر غیر فعال ہے۔
- زبان اور مائیک پکَر، لائیو لیول میٹر، ٹرگر-ورڈ جدول، ٹیسٹر (صرف لوکل؛ فارورڈ نہیں کرتا)۔
- مائیک پکَر اگر کوئی ڈیوائس منقطع ہو جائے تو آخری انتخاب محفوظ رکھتا ہے، منقطع ہونے کا اشارہ دکھاتا ہے، اور واپس آنے تک عارضی طور پر سسٹم ڈیفالٹ پر چلا جاتا ہے۔
-
- آوازیں: ٹرگر ڈیٹیکٹ اور سینڈ پر چائمز؛ ڈیفالٹ macOS کی “Glass” سسٹم ساؤنڈ ہے۔ 11. آپ ہر ایونٹ کے لیے کوئی بھی
NSSound-لوڈ ایبل فائل (مثلاً MP3/WAV/AIFF) منتخب کر سکتے ہیں یا No Sound چُن سکتے ہیں۔
- آوازیں: ٹرگر ڈیٹیکٹ اور سینڈ پر چائمز؛ ڈیفالٹ macOS کی “Glass” سسٹم ساؤنڈ ہے۔ 11. آپ ہر ایونٹ کے لیے کوئی بھی
فارورڈنگ برتاؤ¶
- جب Voice Wake فعال ہو، ٹرانسکرپٹس فعال Gateway/ایجنٹ کو فارورڈ کیے جاتے ہیں (وہی لوکل بمقابلہ ریموٹ موڈ جو mac ایپ کے باقی حصوں میں استعمال ہوتا ہے)۔
-
- جوابات آخری استعمال شدہ مین پرووائیڈر (WhatsApp/Telegram/Discord/WebChat) کو بھیجے جاتے ہیں۔ 13. اگر ڈیلیوری ناکام ہو جائے تو ایرر لاگ ہو جاتا ہے اور رن پھر بھی WebChat/سیشن لاگز کے ذریعے نظر آتا ہے۔
فارورڈنگ پے لوڈ¶
-
VoiceWakeForwarder.prefixedTranscript(_:)بھیجنے سے پہلے مشین ہنٹ شامل کرتا ہے۔ 15. ویک ورڈ اور پُش ٹو ٹاک دونوں راستوں کے درمیان مشترک ہے۔
فوری تصدیق¶
- push-to-talk آن کریں، Cmd+Fn دبائے رکھیں، بولیں، چھوڑیں: اوورلے کو جزوی متن دکھانا چاہیے پھر بھیج دینا چاہیے۔
- دبائے رکھنے کے دوران، مینو بار کے کان بڑے رہیں (استعمال کرتا ہے
triggerVoiceEars(ttl:nil))؛ چھوڑنے کے بعد نیچے آ جاتے ہیں۔