Benchmark dictation: thử thuật ngữ developer và ý nghĩa
Transcript có thể trôi chảy nhưng đổi “không deploy” thành “deploy”. Với công việc developer, lỗi đó quan trọng hơn thiếu dấu phẩy. Benchmark dictation cần kiểm tra chỉ dẫn có còn đúng và phải sửa bao lâu trước khi dùng được.
Đây là phương pháp tự thử bằng các công cụ có trên máy bạn. Bộ tải xuống chứa câu viết sẵn, chưa có bản ghi giọng nói. Bài chưa có kết quả đo sản phẩm hoặc kết luận công cụ nào nhận tiếng Anh giọng Việt tốt hơn.
Xác định benchmark dictation đang so điều gì
Chọn một tác vụ, chẳng hạn nhập yêu cầu sửa code vào trình soạn thảo local. So hai công cụ bạn thực sự chạy được trên cùng máy, cùng micro và ứng dụng nhận chữ. Nếu còn chọn ứng viên, hướng dẫn chọn công cụ giọng nói cho developer phân biệt dictation, xử lý audio cuộc gọi và tự động hóa task.
Xác định bạn so nhận dạng thô hay văn bản cuối được app chèn vào. Cleanup, dictionary và văn bản xung quanh có thể tác động đến đầu ra cuối. Tài liệu giới hạn và độ chính xác của Wispr, đọc ngày 13/09/2026, mô tả nhận dạng cloud và định dạng có thể bỏ từ đệm hoặc xử lý lời tự sửa. So đầu ra đó với transcript thô trả lời câu hỏi về workflow, chưa tách được độ chính xác của riêng model nhận dạng.
Ghi voice model, cleanup model, context và dictionary của từng cấu hình. Dùng none khi tắt một bước, unknown nếu công cụ không công bố. Cài đặt chưa biết vẫn là giới hạn của phép so.
Dùng bộ câu cố định
Tải CSV 20 câu đầu vào. Có năm câu cho mỗi nhóm: tiếng Việt, tiếng Việt có thuật ngữ developer, tiếng Anh và đổi ngôn ngữ giữa các câu. Hướng dẫn dictation tiếng Việt giải thích các lựa chọn ngôn ngữ liên quan.
Đọc đúng câu trong phần thử có kiểm soát. Một yêu cầu lập trình nói tự nhiên có thể là điều kiện riêng. Không gộp đọc câu sẵn với nói ngẫu hứng vào cùng điểm mà không ghi rõ.
Nhóm câu tiếng Anh chưa chứa giọng đọc nào. Giọng nằm trong cách người nói phát âm, chưa được ghi âm ở đây. Dùng ID người đọc ẩn danh; nếu phù hợp và người đọc tự nguyện cung cấp, ghi nền tảng ngôn ngữ tự mô tả trong notes. Không suy quốc tịch hoặc thuộc tính khác từ audio. Kết quả của một người chỉ mô tả người đó trong điều kiện đã thử.
Model card Whisper ghi nhận hiệu năng không đồng đều theo ngôn ngữ, giọng và phương ngữ của các model đó. Đây là lý do cần thử đúng tình huống sử dụng, chưa chứng minh thứ hạng giữa các app bạn đang cân nhắc.
Giữ điều kiện thu âm tương đương
Với dictation trực tiếp, đổi thứ tự công cụ giữa các vòng. Ba lượt mỗi câu là thiết kế khởi đầu có thể quản lý, không bảo đảm ý nghĩa thống kê. Hai công cụ, 20 câu và ba lượt tương ứng 120 lần thử mỗi người. Đây là khối lượng đề xuất, chưa phải thử nghiệm đã làm.
Giữ khoảng cách mic, phòng, tài liệu đích và cách hướng dẫn đọc ổn định. Ghi lượt khởi động riêng. Quy trình so micro giúp phân biệt audio bị mất với lỗi nhận dạng.
Nếu cả hai công cụ nhận cùng file audio, dùng file giống nhau giúp loại khác biệt giữa hai lần đọc. Ghi input_mode là file; không gộp độ trễ của nó với dictation trực tiếp. Không mặc định app dictation có nhập file. Với lượt trực tiếp dùng live, chỉ giữ bản ghi khi chức năng app và quyền sử dụng cho phép.
Chốt baseline trước khi chỉnh từ vựng. Thay dictionary tạo cấu hình mới; hướng dẫn dictionary cho developer giúp chuẩn bị điều kiện từ vựng riêng.
Chấm riêng ý nghĩa, thuật ngữ và số
Dùng mẫu kết quả benchmark, mở rộng phiếu trước với model, context, kiểu đầu vào và phiên bản bộ câu. Tất cả hàng mẫu là not_run. Nhân bản hàng cho từng công cụ và lượt, giữ đầu ra nguyên bản trước khi sửa.
Với mỗi lượt hoàn thành, chấm ba trường:
meaning_preserved: chỉ ghiyeskhi chỉ dẫn và điều kiện còn đúng. Mất phủ định hoặc đảo thứ tự hành động làno.terms_preserved: theo required terms và ghi chú chấm trong bộ đầu vào.userIdcần đúng chữ hoa/thường; ghinot_applicablenếu câu không có thuật ngữ bắt buộc.numbers_preserved: xét giá trị, đơn vị, ngày hoặc giờ. “Chín giờ ba mươi” và “09:30” có thể tương đương; đổi giá trị thì không. Ghinot_applicablenếu câu không có nội dung số.
Ô chấm trống là chưa duyệt, khác no và not_applicable. completed nghĩa là lượt chạy kết thúc, chưa có nghĩa đầu ra đúng. Một lượt hoàn thành nhưng transcript trống có thể nhận no về ý nghĩa. Dùng failed khi lượt không hoàn thành và ghi lý do trong notes.
Đo latency_ms từ lúc thả nút dictation đến khi toàn bộ chữ xuất hiện ở vùng nhập đích. Đo correction_seconds từ lúc bắt đầu đọc lại đầu ra đến khi dùng được, gồm cả thời gian đọc. Không đo được thì để trống; số 0 nghĩa là đã đo và bằng 0. Nếu dùng định nghĩa thời gian khác, ghi thành điều kiện riêng.
Chạy script tổng hợp trên máy
Tải summarize-dictation-benchmark.py vào cùng thư mục với CSV. Script dùng Python 3.9 trở lên và thư viện chuẩn. Sau khi xem mã nguồn, chạy:
python3 summarize-dictation-benchmark.py developer-benchmark-results-template.csv > summary.json
Mẫu chưa điền trả 20 hàng not_run và danh sách groups rỗng. Đây là trạng thái khởi đầu đúng, không phải kết quả không có lỗi. Lưu phép đo hoàn thành vào CSV riêng rồi truyền tên file đó khi sẵn sàng.
Với hàng đã thử, điền cấu hình, sample_id, số nguyên dương trial và reference. Script tách nhóm theo người đọc, ngày, công cụ/phiên bản, máy, mic, app đích, ngôn ngữ, điều kiện, dictionary, ID cấu hình, model, context, kiểu đầu vào, phiên bản bộ câu và nhóm câu. Đổi thiết lập thì dùng config_id mới; sửa bộ câu thì đổi reference_revision.
Mỗi nhóm báo số lượt đã thử/hoàn thành/thất bại, ID câu, số lượng từng đánh giá và trung vị thời gian. yes_fraction chỉ lấy mẫu số từ các ô đã chấm yes hoặc no; số ô thiếu và không áp dụng hiển thị riêng. Thời gian chỉ dùng lượt hoàn thành có số đo, kèm số quan sát và số ô thiếu. Lượt thất bại vẫn hiện trong số đếm, không được gán thời gian hoàn thành giả.
Không có điểm tổng để chọn người thắng. Trước khi so nhóm, kiểm tra ID câu, số lượt và độ đầy đủ của phần chấm có khớp không. Tỷ lệ cao từ một câu đã duyệt không tương đương cả bộ đã duyệt. Script không ghép cặp từng lượt hoặc tính khoảng tin cậy.
Vì sao script không tính WER?
Word error rate đo số phép sửa giữa reference và đầu ra. Tài liệu JiWER mô tả các thước đo theo khoảng cách chỉnh sửa và cách xử lý reference trống. WER hữu ích khi đã định nghĩa chuẩn hóa và tách token, nhưng viết lại đúng ý vẫn có thể bị tính lỗi từ; một phủ định ngắn bị mất lại có thể trông không đáng kể.
Nếu thêm WER sau này, công bố chính xác bước tiền xử lý và chấm riêng các nhóm ngôn ngữ tương đương. Tách tiếng Việt và tiếng Anh bằng khoảng trắng chưa tự tạo đơn vị so sánh tương đương. Giữ transcript gốc và đánh giá thủ công cạnh chỉ số đó.
Script tải xuống chỉ tổng hợp đánh giá và thời gian bạn nhập. Nó không nghe audio, chấm ý nghĩa, nhận biết giọng hoặc gọi API. Đã kiểm tra hành vi bằng CSV giả lập, gồm ô thiếu, lượt thất bại, nhiều cấu hình và dữ liệu sai. Những kiểm tra đó xác minh tiện ích, chưa xác minh nhận dạng của sản phẩm nào.
Công bố quan sát cùng giới hạn
Bản cập nhật kết quả hữu ích cần cấu hình, phiên bản đầu vào, bản ghi được phép chia sẻ nếu có, đầu ra gốc, đánh giá thủ công, lý do lỗi và định nghĩa thời gian. Ghi số người, câu và lượt; để thất bại cạnh thành công.
Trước khi có lượt chạy thực trên hai công cụ và phần duyệt tương ứng, bài này vẫn là bộ chuẩn bị benchmark. Dùng nó trả lời câu hỏi hẹp về workflow của bạn trước khi mở rộng kết luận sang người nói, micro hoặc ngôn ngữ khác.
Một số liên kết có thể mang lại hoa hồng nếu bạn đăng ký, không tăng chi phí của bạn. Quan hệ thương mại không quyết định khuyến nghị; bài viết nêu điều kiện và lựa chọn khác.