वॉयस वेक और पुश-टू-टॉक
आवश्यकताएँ
वॉयस वेक और पुश-टू-टॉक के लिए macOS 26 या उससे नया चाहिए। पुराने macOS संस्करणों पर, Voice सेटिंग्स पेज से नियंत्रण छिपे रहते हैं, और वह macOS 26 की आवश्यकता दिखाता है।मोड
- वेक-वर्ड मोड (डिफ़ॉल्ट): हमेशा चालू Speech पहचानकर्ता ट्रिगर टोकन (
swabbleTriggerWords) की प्रतीक्षा करता है। मिलान होने पर यह कैप्चर शुरू करता है, आंशिक टेक्स्ट के साथ ओवरले दिखाता है, और चुप्पी के बाद अपने-आप भेज देता है। - पुश-टू-टॉक (दायाँ Option दबाए रखना): तुरंत कैप्चर करने के लिए दायाँ Option कुंजी दबाए रखें—किसी ट्रिगर की आवश्यकता नहीं। दबाए रखने के दौरान ओवरले दिखाई देता है; छोड़ने पर अंतिम रूप देता है और थोड़ी देर बाद फ़ॉरवर्ड करता है ताकि आप टेक्स्ट में बदलाव कर सकें।
रनटाइम व्यवहार (वेक-वर्ड)
- Speech पहचानकर्ता
VoiceWakeRuntimeमें रहता है। - ट्रिगर केवल तब सक्रिय होता है जब वेक वर्ड और अगले शब्द के बीच अर्थपूर्ण विराम हो (~0.55s अंतराल)। कमांड शुरू होने से पहले भी विराम पर ओवरले/घंटी शुरू हो सकती है।
- चुप्पी विंडो: बोलना जारी हो तो 2.0s, यदि केवल ट्रिगर सुना गया हो तो 5.0s।
- हार्ड स्टॉप: अनियंत्रित सत्रों को रोकने के लिए 120s।
- सत्रों के बीच डिबाउंस: 350ms।
- ओवरले
VoiceWakeOverlayControllerके ज़रिए committed/volatile रंगों के साथ संचालित होता है। - भेजने के बाद, पहचानकर्ता अगले ट्रिगर को सुनने के लिए साफ़-साफ़ फिर से शुरू होता है।
लाइफ़साइकल इनवेरिएंट
- यदि वॉयस वेक सक्षम है और अनुमतियाँ दी गई हैं, तो वेक-वर्ड पहचानकर्ता सुन रहा होना चाहिए (स्पष्ट पुश-टू-टॉक कैप्चर के दौरान छोड़कर)।
- ओवरले दृश्यता (X बटन से मैन्युअल रूप से बंद करने सहित) पहचानकर्ता को फिर से शुरू होने से कभी नहीं रोकनी चाहिए।
चिपके हुए ओवरले की विफलता स्थिति (पहले)
पहले, यदि ओवरले दिखाई देते हुए अटक जाता था और आप उसे मैन्युअल रूप से बंद करते थे, तो वॉयस वेक “बंद” लग सकता था क्योंकि रनटाइम का पुनःआरंभ प्रयास ओवरले दृश्यता से अवरुद्ध हो सकता था और कोई अगला पुनःआरंभ शेड्यूल नहीं होता था। कठोरीकरण:- वेक रनटाइम पुनःआरंभ अब ओवरले दृश्यता से अवरुद्ध नहीं होता।
- ओवरले बंद होने की पूर्णता
VoiceSessionCoordinatorके ज़रिएVoiceWakeRuntime.refresh(...)ट्रिगर करती है, इसलिए मैन्युअल X-dismiss हमेशा सुनना फिर से शुरू करता है।
पुश-टू-टॉक विवरण
- हॉटकी पहचान दायाँ Option (
keyCode 61+.option) के लिए वैश्विक.flagsChangedमॉनिटर का उपयोग करती है। हम केवल घटनाएँ देखते हैं (कोई निगलना नहीं)। - कैप्चर पाइपलाइन
VoicePushToTalkमें रहती है: तुरंत Speech शुरू करती है, आंशिक परिणामों को ओवरले में स्ट्रीम करती है, और छोड़ने परVoiceWakeForwarderको कॉल करती है। - जब पुश-टू-टॉक शुरू होता है, तो हम वेक-वर्ड रनटाइम को रोकते हैं ताकि ऑडियो टैप टकराएँ नहीं; छोड़ने के बाद यह अपने-आप फिर से शुरू होता है।
- अनुमतियाँ: Microphone + Speech चाहिए; घटनाएँ देखने के लिए Accessibility/Input Monitoring अनुमोदन चाहिए।
- बाहरी कीबोर्ड: कुछ दायाँ Option अपेक्षित रूप में उजागर नहीं कर सकते—यदि उपयोगकर्ता मिस होने की रिपोर्ट करें तो फ़ॉलबैक शॉर्टकट दें।
उपयोगकर्ता-दृश्य सेटिंग्स
- वॉयस वेक टॉगल: वेक-वर्ड रनटाइम सक्षम करता है।
- बोलने के लिए दायाँ Option दबाए रखें: पुश-टू-टॉक मॉनिटर सक्षम करता है।
- भाषा और माइक पिकर, लाइव स्तर मीटर, ट्रिगर-वर्ड तालिका, परीक्षक (केवल स्थानीय; फ़ॉरवर्ड नहीं करता)।
- माइक पिकर किसी डिवाइस के डिस्कनेक्ट होने पर अंतिम चयन बनाए रखता है, डिस्कनेक्ट संकेत दिखाता है, और डिवाइस लौटने तक अस्थायी रूप से सिस्टम डिफ़ॉल्ट पर लौट जाता है।
- ध्वनियाँ: ट्रिगर पहचान और भेजने पर घंटी; डिफ़ॉल्ट macOS “Glass” सिस्टम ध्वनि है। आप प्रत्येक घटना के लिए कोई भी
NSSound-लोड करने योग्य फ़ाइल (जैसे MP3/WAV/AIFF) चुन सकते हैं या कोई ध्वनि नहीं चुन सकते हैं।
फ़ॉरवर्डिंग व्यवहार
- जब वॉयस वेक सक्षम होता है, तो ट्रांसक्रिप्ट सक्रिय gateway/agent को फ़ॉरवर्ड किए जाते हैं (बाकी Mac ऐप द्वारा उपयोग किए जाने वाले उसी स्थानीय बनाम रिमोट मोड में)।
- उत्तर अंतिम बार उपयोग किए गए मुख्य प्रदाता (WhatsApp/Telegram/Discord/WebChat) को दिए जाते हैं। यदि डिलीवरी विफल होती है, तो त्रुटि लॉग की जाती है और रन फिर भी WebChat/session लॉग के ज़रिए दिखाई देता है।
फ़ॉरवर्डिंग पेलोड
VoiceWakeForwarder.prefixedTranscript(_:)भेजने से पहले मशीन संकेत जोड़ता है। वेक-वर्ड और पुश-टू-टॉक पथों के बीच साझा।
त्वरित सत्यापन
- पुश-टू-टॉक चालू करें, दायाँ Option दबाए रखें, बोलें, छोड़ें: ओवरले को आंशिक परिणाम दिखाने चाहिए और फिर भेजना चाहिए।
- दबाए रखने के दौरान, मेनू-बार कान बड़े बने रहने चाहिए (
triggerVoiceEars(ttl:nil)का उपयोग करता है); वे छोड़ने के बाद कम हो जाते हैं।