หลังจาก 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 ของคุณทั้งหมด: ไม่มีคลาวด์ ไม่ต้องมีบัญชี ไม่มีค่าสมาชิกรายเดือน