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?
On this page

On this page