Whisper Notes ra mắt phân tách người nói trên thiết bị

28 tháng 7, 2026
·
8 min read
·Whisper Notes Team

Bản chép cho biết nội dung đã nói. Với phỏng vấn, cuộc họp và podcast, phần còn lại là biết ai đã nói — bài toán mà giới nghiên cứu giọng nói gọi là phân tách người nói (speaker diarization). Từ iPhone 1.8.5, Mac App Store 1.3.2 và bản Mac tải trực tiếp 1.5.1, Whisper Notes xử lý toàn bộ việc này trên thiết bị.

Bài viết này giải thích cách tính năng hoạt động, công bố kết quả benchmark với dữ liệu chuẩn tạo trên đám mây, đồng thời nói rõ một trường hợp thất bại mà chúng tôi không thể loại bỏ bằng kỹ thuật — và cách xử lý thay thế.

Tính năng làm được gì

Mở một ghi chú — bản ghi âm, tệp âm thanh hoặc video đã nhập, hay bản ghi cuộc họp — rồi chạm nút người nói. Vài giây sau, mỗi đoạn sẽ có nhãn người nói và mốc thời gian.

Phân tách người nói trên thiết bị trong Whisper Notes cho Mac: bản chép podcast có nhãn người nói và mốc thời gian, được xử lý cục bộ Nhãn người nói trong Whisper Notes cho iPhone: bản chép hiển thị tên và mốc thời gian theo từng người nói

Nhãn người nói trên Mac và iPhone. Chạm vào một câu để chuyển phát lại đến đúng thời điểm đó.

Ban đầu, nhãn là Người nói 1 và Người nói 2. Đổi tên một lần sẽ cập nhật toàn bộ bản chép. Chạm vào bất kỳ câu nào để chuyển âm thanh đến đúng vị trí, giúp đối chiếu câu trích dẫn với giọng gốc nhanh hơn.

Đổi tên người nói trong Whisper Notes — nhãn được cập nhật trên toàn bộ bản chép

Đổi tên người nói sẽ cập nhật mọi đoạn trong ghi chú.

Bản ghi cuộc họp tự chạy nhận diện người nói khi cuộc gọi kết thúc (có thể tắt trong Cài đặt). Nhãn vẫn còn khi xuất: Sao chép bản chép kèm người nói đưa chúng vào bộ nhớ tạm, còn tệp SRT và VTT giữ chúng trong phụ đề.

Phân tách người nói dựa trên giọng chứ không dựa trên từ, nên hoạt động giống nhau với hơn 100 ngôn ngữ mà ứng dụng có thể chép lời.

Mô hình 19 MB chạy trên Neural Engine

Phân tách người nói trả lời câu hỏi “ai nói lúc nào” qua ba bước. Chia âm thanh thành các đoạn có giọng nói. Chuyển từng đoạn thành dấu giọng — một vector gọn mô tả chính giọng nói, không phải từ ngữ. Sau đó gom cụm các dấu giọng: các đoạn trong cùng một cụm nhận cùng nhãn.

Whisper Notes dùng pipeline community-1 của pyannote, chuyển sang Core ML để cả hai giai đoạn đều chạy trên Neural Engine. Chỉ cần tải 19 MB một lần; cuộc trò chuyện dài 5.7 phút mất 2–4 giây trên Mac dòng M.

Âm thanh → đoạn có giọng → dấu giọng → cụm → nhãn

Mọi bước đều chạy trên thiết bị.

Điều này còn quan trọng với phân tách người nói hơn với chép lời. Dấu giọng là dữ liệu sinh trắc học, nhận diện một người tương tự dấu vân tay. Xử lý cục bộ nghĩa là dấu giọng của bạn, đồng nghiệp và người được phỏng vấn được tính, gom cụm rồi xóa ngay trên thiết bị. Chúng không bao giờ được gửi đi.

Chúng tôi đã đo gì

Chúng tôi dùng cố định hai tệp để benchmark phân tách người nói. Dữ liệu chuẩn do dịch vụ ASR và phân tách người nói trên đám mây ElevenLabs tạo ra rồi được kiểm tra thủ công. Điểm số gán mỗi 10 ms giọng nói cho một người và chọn phép ánh xạ tốt nhất giữa kết quả với tham chiếu. Hai tệp là mẫu nhỏ, vì vậy các con số chỉ mang tính chỉ báo, không phải kết luận cuối cùng.

Tệp đầu đại diện cho trường hợp phổ biến: podcast tiếng Anh dài năm phút, hai người có giọng khác nhau rõ rệt. Phần lớn phỏng vấn, podcast và cuộc họp một-một có dạng này.

Podcast tiếng Anh hai người (5 phút) Kết quả
Gán người nói theo khung (độ phân giải 10 ms) 96.7%
Độ chính xác theo câu (kết quả bạn đọc) 99.1%
Thời gian xử lý, Neural Engine dòng M 2–4 giây

0.9% còn lại là ba điểm lệch ranh giới, tổng cộng 3.4 giây — gần với độ phân giải của chính dữ liệu tham chiếu. Với âm thanh kiểu này, kết quả trên thiết bị ngang với dịch vụ đám mây đã tạo dữ liệu chuẩn.

Trường hợp khó

Tệp thứ hai được chọn để gây khó: hai giọng nam tương tự trong căn phòng có tiếng vang, với người dẫn xen vào 19 lần, trung bình 2.3 giây mỗi lần. Khách nói trong 272 giây; người dẫn chỉ 43 giây. Đây là kiểu âm học làm hệ thống phân tách người nói thất bại ở mọi ngôn ngữ: các giọng giống nhau thay phiên bằng những lượt lời ngắn.

Gom cụm tự động thất bại ở đây. Hai dấu giọng quá gần nhau khiến thuật toán nhập chúng lại và gán gần như toàn bộ cuộc trò chuyện cho một nhãn. Bản ghi tình cờ là một chương trình phỏng vấn tiếng Trung, cho phép chúng tôi kiểm tra giả thuyết hiển nhiên — mô hình chuyên biệt theo ngôn ngữ sẽ tốt hơn. Chúng tôi chạy hai mô hình người nói được huấn luyện riêng bằng tiếng Trung trong pipeline CPU:

Mô hình Podcast tiếng Anh Ca khó* Thời gian (âm thanh 5.7 phút)
pyannote community-1 (đang dùng, Neural Engine) 96.7% 81–82% 2–4 giây
CAM++ (huấn luyện tiếng Trung, CPU) 93.9% 81.2% 36–103 giây
ERes2NetV2 (huấn luyện tiếng Trung, CPU) 80.5% 220–290 giây

* Độ chính xác gán theo khung trên tệp khó khi đã chỉ định số người nói. Nếu không chỉ định, mọi mô hình đều co về một người nói.

Cả hai thất bại theo cùng một cách dù tốn lượng tính toán gấp 10 đến 100 lần. Khó khăn nằm ở âm học, không phải ngôn ngữ — giới hạn là những gì embedding giọng nói hiện nay có thể phân biệt, ở bất kỳ ngôn ngữ nào.

Điều đó loại bỏ cách sửa hiển nhiên và dẫn đến một cách khác: cung cấp sự thật mà pipeline không thể suy ra — có bao nhiêu người trong phòng. Khi chọn số người (tùy chọn từ 2 đến 6), tệp khó tăng từ trạng thái thất bại lên độ chính xác theo câu 89%. Tự động nhận diện vẫn là mặc định vì hoạt động đúng với âm thanh thông thường.

Chạy lại nhận diện người nói trong Whisper Notes với số người cụ thể, đồng thời xuất SRT và VTT kèm nhãn người nói

Chạy lại nhận diện với số người chính xác. Cùng menu này có thể xuất SRT và VTT kèm nhãn người nói.

Tinh chỉnh lời xen ngắn

Sau khi cố định số người, khoảng một nửa lỗi còn lại nằm ở những lời xen dưới ba giây. Đoạn hai giây cung cấp rất ít tín hiệu cho mô hình embedding; trong hội thoại nhanh, dấu giọng còn hấp thụ một phần giọng của người nói bên cạnh.

Vì vậy, sau khi gom cụm, pipeline kiểm tra lại mọi câu ngắn hơn 3.5 giây: tính lại dấu giọng bằng mặt nạ chỉ phủ đúng các khung của câu đó, so với điểm neo của từng người — trung bình các lượt nói dài nhất — và chỉ đổi nhãn khi chênh lệch đủ rõ. Bước này dùng lại mô hình hiện có, không cần tải thêm.

Độ chính xác câu từ đầu đến cuối Trước tinh chỉnh Sau tinh chỉnh
Ca khó (đã cho số người) 89.0% 94.8%
Podcast tiếng Anh (tự động) 98.5% 99.1%

Ngưỡng quyết định được đặt thận trọng: bộ tinh chỉnh đổi 21 nhãn trên hai tệp và không tạo thêm lỗi nào.

Giới hạn

• Nhãn xuất hiện sau khi bản ghi kết thúc, không phải trong lúc gọi. Nếu cần phụ đề trực tiếp kèm tên người nói khi cuộc họp đang diễn ra, dịch vụ đám mây như Otter hoặc Notta phù hợp hơn.

• Khi nhiều người nói chồng lên nhau, mỗi câu chỉ có một nhãn.

• Giọng tương tự vẫn khó phân biệt. 94.8% trên tệp khó là giới hạn hiện tại khi đã gợi ý số người, không phải một bài toán đã được giải quyết.

Phiên bản hỗ trợ

Nhận diện người nói nằm trong mức mua một lần $6.99, cùng ba bộ máy chép lời của ứng dụng — Parakeet V3, Whisper Large V3 Turbo và SenseVoice — cùng chỉnh sửa AI cục bộ. Không có gói riêng và không cần tài khoản.

iPhone: App Store, phiên bản 1.8.5 trở lên.

Mac App Store: phiên bản 1.3.2 trở lên.

Mac tải trực tiếp (DMG): phiên bản 1.5.1 trở lên từ whispernotes.app, có bản dùng thử miễn phí.

Để hiểu cách ghi âm cuộc họp hoạt động, xem bài viết về chép lời cuộc họp ngoại tuyến.