macOS companion app
การปลุกด้วยเสียง (macOS)
การปลุกด้วยเสียงและการกดค้างเพื่อพูด
ข้อกำหนด
การปลุกด้วยเสียงและการกดค้างเพื่อพูดต้องใช้ macOS 26 หรือใหม่กว่า บน macOS รุ่นเก่า ตัวควบคุมจะถูกซ่อนจากหน้าการตั้งค่าเสียง ซึ่งจะแสดงข้อกำหนดของ macOS 26 แทน
โหมด
- โหมดคำปลุก (ค่าเริ่มต้น): ตัวรู้จำเสียงพูดที่ทำงานตลอดเวลาจะรอโทเค็นทริกเกอร์ (
swabbleTriggerWords) เมื่อตรงกัน ระบบจะเริ่มบันทึก แสดงโอเวอร์เลย์พร้อมข้อความบางส่วน และส่งโดยอัตโนมัติหลังจากเงียบ - กดค้างเพื่อพูด (กด Right Option ค้างไว้): กดปุ่ม Option ด้านขวาค้างไว้เพื่อเริ่มบันทึกทันทีโดยไม่ต้องใช้ทริกเกอร์ โอเวอร์เลย์จะปรากฏขณะกดค้างไว้ เมื่อปล่อยปุ่ม ระบบจะสรุปผลและส่งต่อหลังจากหน่วงเวลาสั้น ๆ เพื่อให้คุณแก้ไขข้อความได้
พฤติกรรมขณะทำงาน (คำปลุก)
- ตัวรู้จำอยู่ใน
VoiceWakeRuntime - ทริกเกอร์จะทำงานเฉพาะเมื่อมีช่วงหยุดที่ชัดเจนระหว่างคำปลุกกับคำถัดไป (
triggerPauseWindow= 0.55 วินาที) โอเวอร์เลย์/เสียงเตือนสามารถเริ่มทำงานในช่วงหยุดก่อนที่คำสั่งจะเริ่มขึ้นได้ - ช่วงเวลาความเงียบ: 2.0 วินาที (
silenceWindow) ขณะพูดต่อเนื่อง และ 5.0 วินาที (triggerOnlySilenceWindow) หากได้ยินเฉพาะทริกเกอร์ - การหยุดแบบบังคับ: 120 วินาที (
captureHardStop) เพื่อป้องกันเซสชันทำงานต่อเนื่องโดยควบคุมไม่ได้ - การหน่วงป้องกันการทำงานซ้ำระหว่างเซสชัน: 350 มิลลิวินาที (
debounceAfterSend) หลังการส่ง - โอเวอร์เลย์ควบคุมผ่าน
VoiceWakeOverlayControllerโดยใช้สีแยกข้อความที่ยืนยันแล้วกับข้อความชั่วคราว - หลังการส่ง ตัวรู้จำจะเริ่มต้นใหม่อย่างสมบูรณ์เพื่อรอฟังทริกเกอร์ถัดไป
ข้อกำหนดคงที่ของวงจรการทำงาน
- หากเปิดใช้งานการปลุกด้วยเสียงและอนุญาตสิทธิ์แล้ว ตัวรู้จำคำปลุกจะฟังอยู่เสมอ ยกเว้นระหว่างการบันทึกด้วยการกดค้างเพื่อพูดที่กำลังทำงาน
- การปิดโอเวอร์เลย์ รวมถึงการปิดด้วยตนเองผ่านปุ่ม X จะทำให้ตัวรู้จำกลับมาทำงานต่อเสมอ:
VoiceSessionCoordinator.overlayDidDismissเรียกVoiceWakeRuntime.refresh(state:)ในทุกเส้นทางการปิด ดูโมเดลเซสชัน/โทเค็นได้ที่ โอเวอร์เลย์เสียง
รายละเอียดเฉพาะของการกดค้างเพื่อพูด
- การตรวจจับปุ่มลัดใช้ตัวเฝ้าติดตาม
.flagsChangedแบบทั่วทั้งระบบสำหรับปุ่ม Option ด้านขวา (keyCode 61+.option) โดยจะสังเกตเหตุการณ์เท่านั้นและไม่ดักเหตุการณ์ไว้ - การบันทึกอยู่ใน
VoicePushToTalk: เริ่มการรู้จำเสียงพูดทันที ส่งข้อความบางส่วนแบบสตรีมไปยังโอเวอร์เลย์ และเรียกVoiceWakeForwarderเมื่อปล่อยปุ่ม - การเริ่มกดค้างเพื่อพูดจะหยุดรันไทม์คำปลุกชั่วคราวเพื่อหลีกเลี่ยงการแย่งรับสัญญาณเสียง และจะเริ่มใหม่โดยอัตโนมัติหลังจากปล่อยปุ่ม
- สิทธิ์: ต้องใช้สิทธิ์ไมโครโฟนและการรู้จำเสียงพูด ส่วนการรับเหตุการณ์จากแป้นพิมพ์ต้องได้รับอนุมัติสิทธิ์การช่วยการเข้าถึง/การตรวจสอบอินพุต
- แป้นพิมพ์ภายนอก: บางรุ่นไม่ส่งค่าปุ่ม Option ด้านขวาตามที่คาดไว้ ควรเสนอปุ่มลัดสำรองหากผู้ใช้รายงานว่าตรวจจับไม่สำเร็จ
การตั้งค่าที่ผู้ใช้มองเห็น
- สวิตช์ การปลุกด้วยเสียง: เปิดใช้งานรันไทม์คำปลุก
- กด Right Option ค้างไว้เพื่อพูด: เปิดใช้งานตัวเฝ้าติดตามการกดค้างเพื่อพูด
- ตัวเลือกภาษาและไมโครโฟน มาตรวัดระดับเสียงแบบเรียลไทม์ ตารางคำทริกเกอร์ และเครื่องมือทดสอบ (ทำงานภายในเครื่องเท่านั้นและไม่ส่งต่อข้อมูล)
- ตัวเลือกไมโครโฟนจะเก็บการเลือกครั้งล่าสุดไว้หากอุปกรณ์ตัดการเชื่อมต่อ แสดงคำแนะนำว่าอุปกรณ์ตัดการเชื่อมต่อแล้ว และเปลี่ยนไปใช้ค่าเริ่มต้นของระบบชั่วคราวจนกว่าอุปกรณ์จะกลับมา
- เสียง: ส่งเสียงเตือนเมื่อตรวจพบทริกเกอร์และเมื่อส่งข้อมูล โดยค่าเริ่มต้นใช้เสียงระบบ "Glass" ของ macOS เลือกไฟล์ใดก็ได้ที่
NSSoundโหลดได้ (เช่น MP3/WAV/AIFF) สำหรับแต่ละเหตุการณ์ หรือเลือก ไม่มีเสียง
พฤติกรรมการส่งต่อ
- เมื่อส่งต่อ
VoiceWakeForwarder.selectedSessionOptionsจะเลือกคีย์เซสชัน WebChat ที่ใช้งานอยู่หากมีการตั้งค่าไว้ มิฉะนั้นจะใช้คีย์เซสชันหลักของ Gateway - ระบบจะค้นหาเซสชันนั้นผ่าน
sessions.listและระบุช่องทางกับเป้าหมายการส่งจากบริบทการส่งของเซสชัน (หากไม่พบ จะใช้ช่องทาง/เป้าหมายล่าสุด จากนั้นจึงใช้คีย์เซสชันที่แยกวิเคราะห์แล้ว) โดยใช้ WebChat เป็นค่าเริ่มต้นหากไม่สามารถระบุค่าใดได้ - หากการส่งล้มเหลว ข้อผิดพลาดจะถูกบันทึกไว้ (หมวดหมู่
voicewake.forward) และยังคงดูการทำงานได้ผ่านบันทึก WebChat/เซสชัน
เพย์โหลดการส่งต่อ
VoiceWakeForwarder.prefixedTranscript(_:)จะเพิ่มบรรทัดคำใบ้สำหรับเครื่องไว้หน้าบทถอดเสียง (ชื่อโฮสต์ที่ระบุได้ หรือใช้ "Mac เครื่องนี้" หากระบุไม่ได้) โดยใช้ร่วมกันทั้งในเส้นทางคำปลุกและการกดค้างเพื่อพูด
การตรวจสอบอย่างรวดเร็ว
- เปิดการกดค้างเพื่อพูด กด Right Option ค้างไว้ พูด แล้วปล่อยปุ่ม: โอเวอร์เลย์ควรแสดงข้อความบางส่วนแล้วส่ง
- ขณะกดค้าง หูบนแถบเมนูควรยังคงขยายอยู่ (
triggerVoiceEars(ttl: nil)) และจะย่อลงหลังจากปล่อยปุ่ม
เนื้อหาที่เกี่ยวข้อง
Was this useful?