Chương 7: 97% xuống 91% rồi mới tăng lại
Khi VinaVoice 5 bước vào kỳ đánh giá cuối, con số đầu tiên trên dashboard là 91,4%.
Board không vui.
Tôi cũng không.
Dù chính tôi là người góp phần làm benchmark khó hơn.
Con người rất kỳ.
Ta có thể biết một con số cũ quá dễ và vẫn thấy đau khi số mới thấp hơn.
CEO mở cuộc họp bằng câu:
“Hai năm R&D, thêm tiền collection, thêm governance, thêm retraining — tại sao headline thấp hơn VinaVoice 4?”
Tôi trả lời:
“Vì bài thi khác.”
“Thị trường không mua bài thi.”
“Đúng.”
Tôi mở slide tiếp.
“Vì vậy đừng nhìn headline một mình.”
Bảng performance mới có gần ba mươi hàng.
Không đẹp.
Nhưng bên trong nó có thứ 91,4% che đi theo hướng ngược lại.
Ở benchmark cũ, nhóm người trên 55 tuổi nói giọng Hà Tĩnh/Nghệ An trong điều kiện noise thực chỉ đạt mức rất thấp theo metric của chúng tôi.
Ở model mới, nhóm đó tăng mạnh.
Giọng noisy field tăng.
Critical entity error giảm.
Speaker-disjoint evaluation làm score đáng tin hơn.
Một số nhóm urban clean speech gần như không tăng, thậm chí tụt chút vì model không còn tối ưu quá mạnh theo data cũ.
CEO hỏi:
“Tức là mình hy sinh nhóm tốt để kéo nhóm yếu?”
“Một phần trade-off ở model hiện tại.”
“Có đáng?”
Nguyên đáp:
“Nếu định bán national deployment, có.”
Tôi không thích dùng chữ “hy sinh” quá dễ.
Chúng tôi không cố làm Hà Nội tệ để Hà Tĩnh tốt.
Nhưng capacity, weighting, data balance và optimization thật sự có trade-off.
Không có model vô hạn.
Điều quan trọng là trade-off được nhìn thấy và quyết có chủ ý, không vô tình vì data đông ở một nhóm.
Board hỏi KPI release.
Trước đây chỉ có:
Average WER phải tốt hơn phiên bản trước.
Chúng tôi đề nghị thêm:
Không nhóm deployment-critical nào được thấp hơn quality floor đã định.
Critical entity error phải dưới ngưỡng riêng ở use case rủi ro.
Không release nếu một nhóm chính giảm vượt tolerance mà không có review và giải trình.
Một board member hỏi:
“Bao nhiêu nhóm thì đủ? Chia nhỏ mãi cuối cùng sample không đủ.”
Đúng.
Fairness dashboard có thể tạo ảo giác chính xác nếu chia đến mức mỗi ô chỉ vài chục sample.
Thu đề nghị tier.
Nhóm lớn có statistical reporting định kỳ.
Nhóm nhỏ/đặc thù dùng targeted evaluation và qualitative error review bổ sung.
Không biến sample nhỏ thành phần trăm hai chữ số sau dấu phẩy.
Tôi rất thích.
Precision không phải lúc nào cũng accuracy.
Một con số 83,72% trên 37 người có thể nhìn khoa học hơn sự thật nó cho phép.
VinaVoice 5 không release ngay.
Chúng tôi giữ thêm bốn tháng.
Team tập trung ba vấn đề.
Một: real-noise robustness.
Hai: older-speaker acoustics.
Ba: critical entity preservation.
Không cố đẩy average bằng mọi cách.
Dữ liệu collection mới giúp.
Nhưng model architecture cũng phải đổi.
Chúng tôi thử front-end robust hơn với clipping/noise.
Language model decoding giảm tendency “sửa” câu địa phương về cấu trúc phổ biến khi acoustic evidence yếu.
Entity-aware decoding cho use case riêng.
Không có một breakthrough thần kỳ.
Mỗi tuần nhích chút.
Engineer ghét nhất giai đoạn này.
Không paper.
Không demo gây wow.
Chỉ hàng trăm lỗi nhỏ.
“Bữa ni” bị thành “bữa nay”.
“Mô” bị bỏ.
“Hợi” thành “Hội”.
Số “năm mươi lăm” thành “năm mươi năm”.
Một địa danh hiếm bị thay bằng từ phổ biến nghe gần giống.
Chúng tôi sửa từng lớp.
Bốn tháng sau, average mới 94,0% trên benchmark mở rộng.
Không quay lại 97,2.
Nhưng nhóm yếu nhất cải thiện nhiều hơn.
Tôi trình board.
CEO hỏi:
“Có thể marketing 94% không?”
Sales Director nhìn tôi rồi cười.
“Đừng hỏi nó.”
Cả phòng cười.
Tôi nói:
“Có thể nói 94% trên national mixed benchmark phiên bản này, kèm methodology.”
“Dài.”
“Em biết.”
Nguyên hỏi:
“Nếu phải chọn headline khác?”
Tôi nghĩ.
“VinaVoice 5 giảm lỗi ở những giọng và môi trường phiên bản trước nghe kém nhất.”
Sales Director nói:
“Câu đó bán được.”
Nhưng khách hàng thực tế mới là bài test.
Một ngân hàng ở miền Trung pilot call center.
Trước đây họ từng thử giải pháp speech khác nhưng agent phàn nàn transcript giọng địa phương sai nhiều, cuối cùng tắt.
VinaVoice 5 tốt hơn rõ.
Không hoàn hảo.
Một số tên xã vẫn sai.
Người già nói nhỏ vẫn khó.
Nhưng agent bắt đầu dùng draft thay vì bỏ hẳn.
Ngân hàng không triển khai auto-action.
Chỉ transcription, intent routing và gợi ý.
Revenue nhỏ hơn deal sales từng mơ.
Nhưng sử dụng thật.
Sales Director gọi:
“Kiệt, tôi bắt đầu hiểu ‘deal thật’ của Nguyên.”
“Muộn.”
“Câm.”
Một khách khác lại từ chối.
Họ muốn voice bot hoàn toàn tự động, tỷ lệ fallback rất thấp.
Model card của chúng tôi làm họ thấy không phù hợp.
Competitor ký.
Board hỏi có tiếc không.
Tôi nói có.
Đừng biến cẩn trọng thành không cần doanh thu.
Công ty cần tiền.
Engineer cần lương.
Collection cần ngân sách.
Nhưng nếu business model chỉ sống khi chúng tôi giấu limitation, đó không phải deal bền.
Sáu tháng sau, competitor kia gặp khiếu nại do bot nhận sai một số yêu cầu địa phương và phải thêm human fallback.
Tôi không hả hê.
Không phải vì cao thượng.
Vì họ sửa đúng thứ chúng tôi cũng từng phải học.
Ngành tốt lên khi đối thủ học cùng bài, không chỉ khi mình thắng.
Hội đồng Giọng nói xem release report.
Bác Nghiêm nhìn bảng nhóm tuổi rồi hỏi:
“Sao 60+ vẫn thấp hơn người trẻ nhiều?”
Tôi đáp:
“Vì data vẫn ít hơn, giọng thay đổi theo tuổi đa dạng hơn, thiết bị và cách dùng khác.”
“Vậy khi nào bằng?”
Tôi không hứa.
“Chưa biết có bằng hoàn toàn không.”
“Rứa quality floor để làm chi?”
“Để nếu chưa đủ, mình biết chỗ nào không nên tự động hóa và phải giữ đường khác cho người dùng.”
Bác gật.
Đó là điều tôi muốn giữ nhất.
Fairness không nhất thiết nghĩa mọi nhóm có đúng cùng score ngay lập tức.
Nó còn nghĩa không lấy average tốt làm lý do buộc nhóm model hiểu kém phải chịu dịch vụ tệ hơn mà không có fallback.
VinaVoice 5 launch với headline 94%.
Nhiều người trên mạng hỏi:
“Sao bản mới thấp hơn 97% bản cũ?”
PR team chuẩn bị câu trả lời dài.
Tôi viết ngắn hơn:
Vì bài test mới khó hơn và gần người dùng thật hơn.
Bên dưới mới link methodology.
Lần này sales không phản đối.
Ba năm trước, metric giảm sẽ bị coi là thất bại.
Bây giờ chúng tôi có thể nói:
“Score headline thấp hơn, model tốt hơn cho mục tiêu chúng tôi thật sự quan tâm.”
Không phải lúc nào cũng đúng.
Nhưng lần này, chúng tôi có đủ breakdown để chứng minh vì sao.
Tôi gọi mẹ.
Bật VinaVoice 5 trên speaker test.
“Mẹ nói chi đi.”
Bà hỏi:
“Con đang mô rứa?”
Màn hình hiện:
Con đang mô rứa?
Tôi cười.
“Đúng rồi mẹ.”
Mẹ nói:
“Rứa thì có chi mà vui dữ.”
Hệ thống hiện:
Rứa thì có chi mà vui dữ.
Tôi nhìn.
Hai câu đúng.
Không chứng minh model đã hiểu cả Hà Tĩnh.
Không chứng minh 94% đại diện cho mẹ tôi.
Chỉ là hai câu.
Nhưng lần này tôi không cần biến chúng thành benchmark.
Tôi chỉ vui vì máy cuối cùng nghe mẹ giống một người cần được nghe, không phải một ngoại lệ buồn cười trên sân khấu.