💡 Theo RetroLab, transcribe.cpp là một bước tiến quan trọng trong việc đưa nhận dạng giọng nói cục bộ đến gần hơn với người dùng phổ thông. Với sự hỗ trợ đa nền tảng và độ chính xác cao, thư viện này hứa hẹn sẽ thay thế whisper.cpp trong nhiều ứng dụng thực tế.
Tác giả của ứng dụng Handy vừa công bố transcribe.cpp, một thư viện nhận dạng giọng nói dựa trên ggml, hứa hẹn mang đến hiệu năng cao và khả năng tương thích rộng rãi. Dự án ra đời từ chính những khó khăn trong việc phân phối ứng dụng chuyển giọng nói thành văn bản đa nền tảng mà tác giả gặp phải khi phát triển Handy.
Động lực phát triển
Theo tác giả, hệ sinh thái hiện tại cho nhận dạng giọng nói cục bộ (ASR) còn nhiều hạn chế. Các lựa chọn chủ yếu là whisper.cpp và ONNX Runtime, nhưng mỗi giải pháp đều có điểm yếu riêng. ONNX tuy hỗ trợ nhiều mô hình nhưng lại kém hiệu quả khi chỉ chạy trên CPU. Trong khi đó, các thư viện nhỏ lẻ khác thường thiếu thông tin về tác giả, không được kiểm thử bài bản, khiến người dùng đặt ra nhiều câu hỏi về độ tin cậy và khả năng bảo trì.
Chính những bất cập này đã thôi thúc tác giả xây dựng transcribe.cpp – một thư viện mà anh có thể tin tưởng: chạy suy luận chính xác như bản gốc, tận dụng GPU để đạt hiệu năng tối đa, dễ dàng nhúng vào ứng dụng mà không phụ thuộc vào các thư viện nặng như PyTorch, và hoạt động mượt mà trên Mac, Windows và Linux. ggml được chọn làm nền tảng vì cộng đồng mạnh mẽ và khả năng phân phối tuyệt vời.
Tính năng nổi bật
transcribe.cpp cung cấp một loạt tính năng ấn tượng:
- Hỗ trợ 16 họ mô hình ASR (hơn 60 mô hình) và sẽ tiếp tục mở rộng.
- Tăng tốc qua Vulkan, Metal, CUDA và TinyBLAS – giúp chạy suy luận trên GPU một cách hiệu quả.
- Kiểm định số học và WER cho từng mô hình, đảm bảo đầu ra khớp với bản tham chiếu.
- Hỗ trợ phát trực tiếp (streaming) và xử lý hàng loạt (batch).
- Thay thế trực tiếp whisper.cpp với khả năng tương thích ngược với các tệp .bin phổ biến.
- Bindings chính thức cho 4 ngôn ngữ: Python, JavaScript/TypeScript, Rust và ObjC/Swift.
Hỗ trợ mô hình và tăng tốc
Mục tiêu của dự án là hỗ trợ càng nhiều mô hình hiện đại càng tốt. Hiện tại, hầu hết các mô hình ASR công khai đã được tích hợp, một số còn lại sẽ sớm được bổ sung. Đối với mỗi mô hình, tác giả đã chạy benchmark trên CPU Ryzen 4750U (Fedora) và M4 Max để đảm bảo hiệu năng.
Việc kiểm định số học là điểm nhấn quan trọng. Tác giả từng gặp nhiều bất định khi sử dụng các mô hình .onnx từ Hugging Face, vì vậy transcribe.cpp thực hiện đối chiếu số học và chạy hàng loạt bài kiểm tra WER trên hàng nghìn câu nói để đảm bảo độ chính xác tương đương hoặc rất gần với bản tham chiếu. Kết quả được công bố công khai trong kho lưu trữ của dự án và trên Hugging Face.
Thay thế whisper.cpp
Một trong những yêu cầu thiết kế quan trọng là khả năng thay thế whisper.cpp một cách liền mạch. Vì Handy vốn sử dụng whisper.cpp, tác giả cần đảm bảo transcribe.cpp có thể chạy các tệp .bin hiện có. Mặc dù chưa hỗ trợ đầy đủ tất cả flag và tính năng của whisper.cpp, nhưng theo tác giả, phần lớn trường hợp sử dụng đều được đáp ứng với hiệu năng tương đương.
Bindings và phân phối
Ngay từ đầu, việc có bindings chính thức đã được đặt lên hàng đầu. Với bốn ngôn ngữ đại diện, transcribe.cpp muốn mở rộng khả năng tiếp cận cho các nhà phát triển desktop và mobile. Tác giả khuyến khích cộng đồng đóng góp thêm bindings, miễn là sẵn sàng duy trì chúng lâu dài.
Nhờ sự phổ biến của Handy, tác giả cam kết sẽ duy trì và phát triển transcribe.cpp lâu dài, giống như những gì anh đã làm với Handy.
Lời cảm ơn
Dự án nhận được sự hỗ trợ từ nhiều tổ chức. Mozilla AI và chương trình BiR đã tài trợ để biến ý tưởng thành hiện thực. ggml là nền tảng không thể thiếu. Modal cung cấp tín dụng để chạy kiểm thử WER trên CUDA. Blacksmith hỗ trợ CI/CD. Hugging Face cung cấp kho lưu trữ riêng cho tổ chức handy-computer.
Tác giả cũng thừa nhận đã sử dụng AI hỗ trợ trong quá trình phát triển, nhưng khẳng định mọi từ ngữ trong bài viết này đều do chính anh viết.
Tương lai của nhận dạng giọng nói cục bộ
transcribe.cpp hướng tới việc làm cho ASR cục bộ trở nên dễ dàng hơn. Ngay cả một con chip RK3566 yếu ớt cũng có thể chạy mô hình nhanh hơn thời gian thực. Tác giả tin rằng tương lai sẽ chứng kiến nhiều suy luận diễn ra tại thiết bị, và việc đơn giản hóa quá trình phân phối là chìa khóa. transcribe.cpp chỉ là một bước nhỏ, nhưng là bước đi đúng hướng.
Nguồn: Hacker News - https://workshop.cjpais.com/projects/transcribe-cpp





