หลังจาก 1.2.0 มีคำร้องเรียนสองอย่างที่กลับมาเรื่อย ๆ: "มันสะกดนามสกุลเพื่อนร่วมงานผิดทุกครั้ง" และ "Enhance มีแค่เปิดกับปิด — ผมไม่ได้อยากได้การเกลาแบบเดียวกันทุกครั้ง"

1.3.0 ออกแล้ววันนี้ มันแก้ทั้งสองเรื่อง และจัดการกับความน่ารำคาญอีกอย่างที่เกิดซ้ำ ๆ: transcript การประชุมที่ทุกประโยคของอีกฝ่ายปรากฏสองครั้งเพราะคุณไม่ได้ใส่หูฟัง

นี่คือสิ่งที่เปลี่ยนไป

คลังคำศัพท์ของคุณเอง

ระบบรู้จำเสียงทุกตัวมีชุดคำที่ถอดผิดอย่างสม่ำเสมอเฉพาะกับคุณ — นามสกุล ชื่อผลิตภัณฑ์ ตัวย่อภายในองค์กร ชื่อเครื่องมือที่คุณพูดถึงวันละสี่สิบครั้ง Parakeet ไม่เคยได้ยินชื่อสตาร์ตอัพของคุณ "Claude Code" กลับมาเป็น "clod code" จนคุณเลิกสังเกตแล้วแก้ด้วยมือทุกครั้ง

ตอนนี้ในการตั้งค่ามีส่วน Vocabulary แต่ละกฎคือคู่หนึ่ง: สิ่งที่ระบบรู้จำเสียงถอดออกมา และสิ่งที่ควรจะเป็น clod code → Claude Code kubernets → Kubernetes การสะกดชื่อที่ถูกต้องแทนสิ่งที่โมเดลได้ยิน

รายละเอียดที่สำคัญในการใช้งานจริง:

  • จับคู่ทั้งคำโดยค่าเริ่มต้น เพื่อให้กฎของ cat ไม่ไปเขียนทับกลางคำว่า "category" ปิดได้เมื่อต้องการแก้แบบ substring
  • ไม่สนตัวพิมพ์ใหญ่เล็กโดยค่าเริ่มต้น พร้อมสวิตช์รายกฎเมื่อคุณต้องการให้ API ตรงกับ API เท่านั้น
  • สวิตช์เปิด/ปิดแยกของแต่ละกฎ เพื่อพักกฎไว้โดยไม่ต้องลบทิ้ง
  • ใช้วลีหลายคำได้ — ฝั่งซ้ายไม่จำเป็นต้องเป็นโทเคนเดียว

กฎทำงานในสามจุด ไม่ใช่จุดเดียว คำศัพท์ของคุณถูกส่งให้ระบบรู้จำเสียงเป็นตัวชี้นำก่อนการถอดความ ถูกใช้แทนที่ในข้อความดิบหลังถอดความ และถูกใส่ในพรอมป์ของ LLM เป็นคำสั่งให้คงไว้ตามเดิม — เพื่อไม่ให้ขั้นตอนเกลาข้อความเปลี่ยนการสะกดที่คุณเพิ่งแก้ไปอย่างเงียบ ๆ นั่นแหละคือเหตุผลที่ฟีเจอร์นี้เวอร์ชันแรกแบบง่าย ๆ ไม่ได้ปล่อยออกมา: แก้ชื่อแล้วปล่อยให้ Enhance เขียนกลับไปเหมือนเดิม แย่กว่าไม่แก้เสียอีก

ถ้าคุณพิมพ์ด้วยเสียงใส่ เอเจนต์เขียนโค้ด ให้ตั้งค่าฟีเจอร์นี้ก่อนเลย กฎสักสิบข้อที่ครอบคลุมชื่อเฉพาะในสแตกของคุณ จะตัดงานแก้ด้วยมือออกไปได้เกือบหมด

โหมดการพิมพ์ด้วยเสียงแทนสวิตช์ Enhance

เดิม Enhance เป็นแค่ช่องติ๊ก: เกลาข้อความ หรือไม่เกลา นั่นคือค่าเริ่มต้นที่ถูกต้องแต่เพดานที่ผิด — ย่อหน้าเดียวกันที่พูดออกมาควรออกมาต่างกันตามปลายทางที่มันจะไป

1.3.0 เปลี่ยนสวิตช์เป็นตัวเลือกโหมด:

  • Raw — วางสิ่งที่คุณพูดตรงตัว ไม่ผ่าน LLM เลย เส้นทางที่เร็วที่สุด และ การแปลสด ยังทำงานอยู่
  • Cleanup — แก้ไวยากรณ์ เครื่องหมายวรรคตอน ตัดคำฟุ่มเฟือย คงถ้อยคำเดิมไว้ เป็นพฤติกรรมเดิมของ Enhance และยังเป็นค่าเริ่มต้น
  • Email — ปรับคำพูดให้เป็นอีเมลที่เป็นทางการและมีโครงสร้าง โดยไม่แต่งหัวข้อหรือคำลงท้ายที่คุณไม่ได้พูด ดูตัวอย่างการใช้งานจริงได้ที่ การพิมพ์อีเมลด้วยเสียงบน Mac
  • Message — ข้อความแชทสั้น กระชับ เป็นกันเอง
  • Bullets — จัดใหม่เป็นหัวข้อย่อยที่จัดกลุ่มแล้ว
  • Formal — น้ำเสียงเป็นทางการและขัดเกลา
  • Custom — คำสั่งของคุณเอง เก็บไว้ในการตั้งค่าและใช้กับทุกการพิมพ์ด้วยเสียง

Custom คือโหมดที่น่าสนใจที่สุด มันเป็นพรอมป์แบบข้อความอิสระ ดังนั้น "เขียนเป็นภาษาอังกฤษแบบบริติชเสมอ และห้ามใช้เครื่องหมาย em dash" หรือ "แปลเป็นภาษาสเปนและไม่เกินสามประโยค" ก็เป็นโหมดที่ใช้ได้ ทุกอย่างยังทำงานภายในเครื่องผ่านโมเดลบนอุปกรณ์

ในทุกโหมด ตัวเลข ตัวระบุในโค้ด URL พาธไฟล์ ข้อความในเครื่องหมายคำพูด และคำศัพท์ในคลังของคุณ ได้รับการป้องกันไม่ให้ถูกเขียนใหม่ การปรับรูปประโยคควรเปลี่ยนสำนวน ไม่ใช่โทเคนที่รับน้ำหนักความหมายอยู่ข้างใน

ประชุมผ่านลำโพง: ปัญหาบรรทัดซ้ำ

ถ้าคุณคุยสายโดยไม่ใส่หูฟัง เสียงของผู้ร่วมประชุมทางไกลจะออกลำโพง Mac แล้ววิ่งกลับเข้าไมโครโฟนของคุณ Vext บันทึกไมค์กับเสียงระบบเป็นสองสตรีมแยกกัน ประโยคเดียวกันจึงถูกถอดความสองครั้ง — ครั้งหนึ่งสะอาดจากสตรีมระบบ อีกครั้งแย่ ๆ จากไมค์ — และใน transcript ก็เหมือนคุณพูดซ้ำทุกอย่างที่อีกฝ่ายเพิ่งพูดจบ

เราพยายามแก้ปัญหานี้ในระดับเสียงมาแล้วสองครั้ง ครั้งแรกด้วยตัวตัดเสียงสะท้อน DTLN บน CoreML จากนั้นด้วย Voice Processing I/O ของ Apple เอง ทั้งสองอย่างใช้งานได้ และทั้งสองอย่างถูกถอดออก: VPIO เปลี่ยนสถานะไมโครโฟนที่ใช้ร่วมกัน การเปิดใช้จึงทำให้การปรับเกนอัตโนมัติและการตัดเสียงรบกวนเล็ดลอดไปยังทุกแอปที่อ่านไมค์ตัวเดียวกัน — เสียงของคุณใน Zoom แย่ลงระหว่างที่ Vext กำลังบันทึก นั่นไม่ใช่การแลกที่ยอมรับได้

เวอร์ชันที่ปล่อยจริงทำงานกับ transcript แทน เสียงสะท้อนถูกบิดเบือนมากพอจะทำให้การจับคู่ลายเสียงล้มเหลว แต่มันพูด คำเดียวกันในเวลาเดียวกัน และทั้งสองสตรีมใช้นาฬิกาการประชุมเรือนเดียวกัน ตัวกำจัดข้อความซ้ำจึงจับคู่ข้อความกับเวลา: ชิ้นเสียงจากไมค์ที่โทเคนส่วนใหญ่อยู่ในชิ้นเสียงระบบภายในกรอบเวลาสองวินาที คือเสียงสะท้อน และถูกตัดทิ้ง ส่วนรอบที่สองจะรวมเศษข้อความเล็ก ๆ ของผู้พูดคนเดียวกันที่เหลือจากการตัดตามขอบคำ

นอกจากนี้ รอบปรับแต่งออฟไลน์ยังใช้ voice embedding ของผู้พูดทางไกลเพื่อระบุและตัดเสียงที่รั่วเข้ามา พร้อมการตรวจจับการซ้อนทับสำหรับกรณีที่ความคล้ายอย่างเดียวจับไม่ได้

ผลลัพธ์สุทธิ: การบันทึก สาย Zoom หรือ Meet ผ่านลำโพงแล็ปท็อป ตอนนี้ให้ transcript ที่ใกล้เคียงกับการใส่หูฟัง หูฟังยังดีกว่าอยู่ แค่ไม่จำเป็นอีกต่อไป

การแยกผู้พูดในระดับคำ

เรื่องที่เกี่ยวข้องกัน และเป็นต้นเหตุเชิงโครงสร้างของความแปลกประหลาดใน transcript ทั้งกลุ่ม

การตรวจจับกิจกรรมเสียงจะตัดเสียงเป็นชิ้น ๆ เมื่อคนสองคนพูดสลับกันเร็ว ชิ้นเดียวอาจมีการเปลี่ยนผู้พูดสามหรือสี่ครั้ง และทั้งก้อนถูกถอดความเป็นบล็อกเดียวภายใต้ป้ายชื่อเดียว รอบออฟไลน์ จะแก้การระบุตัวผู้พูดในภายหลัง แต่ข้อความที่เชื่อมติดกันก็ยังติดกันอยู่ดี

1.3.0 ตัดในระดับโทเคน ทุกคำที่รู้จำได้มี timestamp ไทม์ไลน์การแยกผู้พูดบอกว่าใครพูดในช่วงเวลานั้น และชิ้นเสียงจะถูกหั่นเป็นช่วง ๆ ตามผู้พูดก่อนจะไปถึง transcript ด้วยซ้ำ — พร้อมการสืบทอดป้ายชื่อก่อนหน้าสำหรับคำที่ไทม์ไลน์ไม่ครอบคลุม ผู้พูดที่สลับกันจึงออกมาเป็นบรรทัดแยกกันตั้งแต่ตอนที่การประชุมยังดำเนินอยู่

การรู้จำผู้พูดที่ไม่ยุบรวม

สามการแก้ไขใน การระบุตัวผู้พูด ทั้งหมดมาจากการบันทึกจริงที่ผิดพลาด:

การจับคู่แบบหนึ่งต่อหนึ่ง การจับคู่คลัสเตอร์กับโปรไฟล์เดิมเป็นแบบละโมบ ทำให้คนสองคนที่ต่างกันจับคู่กับผู้พูดที่รู้จักคนเดียวกันแล้วรวมเป็นตัวตนเดียว ตอนนี้เป็นการจับคู่แบบไม่ซ้ำ — หนึ่งคลัสเตอร์ หนึ่งโปรไฟล์

โปรไฟล์เสียงที่เสถียร embedding ถูกทำ L2 normalization และผสมด้วยค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โพเนนเชียลเมื่อมีตัวอย่างใหม่เข้ามา แทนที่จะถูกเขียนทับ โปรไฟล์จึงดีขึ้นทุกการประชุม แทนที่จะเลื่อนไหลไปตามสิ่งที่บันทึกล่าสุด

ตัวป้องกันการยุบรวม การประชุมห้าคนกลับมาจากรอบออฟไลน์เหลือ "ฉัน" กับอีกคนเดียว: ตัวแยกผู้พูดออฟไลน์จัดกลุ่มสตรีมที่มี 590 เซกเมนต์น้อยเกินไปจนเหลือคลัสเตอร์เดียว และเพราะรอบนั้นถือเป็นตัวตัดสิน มันจึงลบผู้พูดสี่คนที่รอบเรียลไทม์แยกไว้ถูกต้องแล้ว ตอนนี้ถ้ารอบออฟไลน์ให้ผลเป็นหนึ่งคลัสเตอร์หรือน้อยกว่าในสตรีมที่รอบเรียลไทม์ยืนยันผู้พูดตั้งแต่สองคนขึ้นไป ระบบจะเก็บป้ายชื่อจากรอบเรียลไทม์ไว้ ผู้พูดที่ถูกแยกละเอียดเกินไปรวมกันได้ในแท็บ Speakers แต่ผู้พูดที่ถูกลบโดยรอบตัดสินนั้นหายไปตลอดกาล

คีย์ลัด สร้างใหม่ทั้งระบบ

ระบบคีย์ลัดถูกเขียนใหม่ตั้งแต่ชั้นจัดเก็บข้อมูลขึ้นมา ห้าการกระทำมีการผูกปุ่มอิสระของตัวเอง: การพิมพ์ด้วยเสียงแบบกดค้าง การพิมพ์ด้วยเสียงแบบไม่ใช้มือ โน้ต การประชุม และภาพหน้าจอ

การกำหนดชุดปุ่มที่ถูกใช้อยู่แล้วจะถูกตรวจจับและแก้ไข แทนที่จะเกิดสองการกระทำบนปุ่มเดียวอย่างเงียบ ๆ การผูกปุ่มใด ๆ ล้างได้ด้วยปุ่ม Delete หรือปุ่มบนหน้าจอ และตัวบันทึกปุ่มให้ผลตอบรับชัดเจนขณะกำลังจับปุ่ม ตัวจัดการเดิมที่มีพร็อพเพอร์ตี้ AppStorage กระจัดกระจายและถอดรหัสด้วยมือ ถูกลบออกไปแล้ว

ภาษาเยอรมันและดัตช์

ตอนนี้อินเทอร์เฟซใช้ได้เจ็ดภาษา: อังกฤษ สเปน เยอรมัน ดัตช์ รัสเซีย ฮินดี และไทย พร้อมโหมด Auto ที่ตามภาษาระบบของ macOS สลับได้ที่ การตั้งค่า → ทั่วไป มีผลทันที ไม่ต้องรีสตาร์ท

ดีไซน์: Liquid Glass บน macOS 26

บน macOS 26 Tahoe หน้าเริ่มต้นใช้งาน คู่มือต้อนรับ หน้าไลเซนส์ หน้าโหลดโมเดล และแคปซูลแสดงการบันทึก ใช้พื้นผิว Liquid Glass แบบเนทีฟพร้อมการปรับสีอัตโนมัติ บน macOS รุ่นก่อนหน้าทุกอย่างย้อนกลับไปใช้วัสดุเดิม — สำหรับคุณไม่มีอะไรเปลี่ยน

เส้นโค้งแอนิเมชันตอนนี้เป็นพรีมิทีฟที่ใช้ร่วมกัน แทนที่จะเป็นค่าคงที่แยกของแต่ละหน้า การเปลี่ยนภาพจึงให้ความรู้สึกสอดคล้องกันทั้งแอป และตัวบ่งชี้การบันทึกเคารพการตั้งค่า Reduce Motion ของระบบ

ความเสถียรและข้อมูล

ครึ่งที่ไม่หวือหวาของรุ่นนี้:

  • งานถอดความที่ถูกยกเลิกอาจหมุนวนกิน CPU 100% หนึ่งคอร์ แก้แล้ว
  • การแก้ชื่อหรือ transcript ของการประชุมขณะที่การสรุปผลเบื้องหลังกำลังทำงาน อาจย้อนการแก้ไขของคุณอย่างเงียบ ๆ ตอนนี้การเขียนเป็นการอัปเดตบางส่วนที่ไม่ทับฟิลด์ที่ผู้ใช้แก้ไขได้
  • ตัวประมวลผลข้อความอาจทำลายข้อความที่ถูกต้องระหว่างตัดคำฟุ่มเฟือย — โทเคนที่มีขีดกลางและเครื่องหมายวรรคตอนได้รับการป้องกันแล้ว
  • ฐานข้อมูลไม่ล้างตัวเองเมื่อโครงสร้างสคีมาเปลี่ยนอีกต่อไป เส้นทางนั้นอาจทำลายประวัติการประชุมตอนอัปเดต ตอนนี้ปิดไปแล้ว
  • แก้การแครชจากช่วง VAD ที่ไม่ถูกต้อง และ race condition ของระดับเสียง
  • การลดอัตราสุ่มของเสียงระบบใช้ AVAudioConverter พร้อมการกรอง anti-aliasing ที่ถูกต้อง แทนการประมาณเชิงเส้นแบบหยาบ — อินพุตเข้าสู่ระบบรู้จำเสียงสะอาดขึ้นอย่างวัดได้
  • คลิปบอร์ดถูกรักษาไว้ระหว่างการวางข้อความและรูปภาพ
  • เอนจินเสียงถูกสร้างเมื่อเริ่มบันทึกจริงเท่านั้น Vext ที่เปิดค้างไว้จึงไม่จับฮาร์ดแวร์ไมโครโฟนอีกต่อไป
  • ชื่อการประชุมและ transcript สดถูกบันทึกก่อนแอปปิดตัว
  • การลบผู้พูดมีการถามยืนยันแล้ว

อัปเดต

brew upgrade muvon/tap/vext

หรือ ดาวน์โหลด Vext 1.3.0 โดยตรง การประชุม โปรไฟล์ผู้พูด และการตั้งค่าของคุณถูกย้ายมาให้ทั้งหมด — สวิตช์ Enhance กลายเป็นโหมด Cleanup และคีย์ลัดเดิมของคุณย้ายไปยังการผูกปุ่มแบบใหม่

ทุกอย่างยังทำงาน ภายในเครื่อง Mac ของคุณทั้งหมด: ไม่มีคลาวด์ ไม่ต้องมีบัญชี ไม่มีค่าสมาชิกรายเดือน

ดาวน์โหลด Vext 1.3.0