Whistle: Mô hình nhận dạng giọng nói chỉ 16,9 MB chạy hoàn toàn trên thiết bị

Công nghệ08 tháng 10, 2026·5 phút đọc

Cactus Compute vừa giới thiệu Whistle, mô hình nhận dạng giọng nói nhỏ gọn chỉ 16,9 MB, chạy trên CPU không cần thư viện phụ thuộc, hỗ trợ 7 ngôn ngữ và có thể triển khai trên điện thoại, thiết bị đeo, robot cho đến vi điều khiển. Whistle vượt Whisper base về độ chính xác trên nhiều bộ dữ liệu trong khi dung lượng nhỏ hơn gần 9 lần.

Whistle: Mô hình nhận dạng giọng nói chỉ 16,9 MB chạy hoàn toàn trên thiết bị

Cactus Compute vừa phát hành Whistle, một mô hình nhận dạng giọng nói (speech-to-text) được thiết kế để chạy trực tiếp trên thiết bị. Điểm đáng chú ý nhất nằm ở kích thước: toàn bộ mô hình chỉ gói gọn trong một tệp 16,9 MB, chạy trên CPU mà không cần bất kỳ thư viện phụ thuộc nào.

Đây không phải một bản thử nghiệm hàn lâm. Whistle nhắm thẳng vào các thiết bị biên — nơi tài nguyên tính toán và bộ nhớ cực kỳ eo hẹp.

Một mô hình, ba chức năng

Whistle đảm nhận cùng lúc ba nhiệm vụ, tất cả đều xử lý ngay trên thiết bị:

  • Chuyển ngữ (transcription): Xử lý âm thanh mono 16 kHz, tối đa 30 giây mỗi lượt, hỗ trợ tiếng Anh, Đức, Pháp, Tây Ban Nha, Ý, Hà Lan và Ba Lan. Ngôn ngữ được tự động phát hiện nếu người dùng không chỉ định.
  • Mốc thời gian từng từ (word timestamps): Mỗi từ đi kèm thời điểm bắt đầu, kết thúc và xác suất, được căn chỉnh từ attention của bộ giải mã.
  • Nhúng giọng nói (speech embedding): Đầu ra của encoder, mỗi khung 80 ms một dòng, không cần giải mã thành văn bản.

Điểm thú vị là Whistle dùng chung engine C++ với Needle — mô hình ngôn ngữ nhỏ của chính Cactus Compute. Nghĩa là cùng một tệp nhị phân có thể vừa xử lý giọng nói, vừa xử lý văn bản, vừa làm cả hai.

Kiến trúc: nhỏ nhưng không đơn giản

Về mặt kỹ thuật, Whistle tận dụng lại phần lớn khối kiến trúc của Needle thay vì sao chép:

  • Encoder gồm 8 khối Simple Attention, dùng 4 làn residual mHC và MLP Monarch Hadamard thay cho mạng feed-forward truyền thống. Attention ở đây không nhân quả — một khung ở giây thứ 3 có thể "nhìn" tới khung ở giây thứ 12.
  • Decoder gồm 8 khối Laddered Simple Attention với chiều rộng 512, tỉ lệ 8 head truy vấn trên 2 head KV, cùng tích chập nhân quả 3 tap và tra cứu engram ở lớp 3 và 7.
  • Phần dành riêng cho giọng nói chỉ là một phép cộng mỗi lớp: cross attention có cổng (gated cross attention), cho phép mỗi lớp decoder đọc trực tiếp từ encoder.

Cách tổ chức này mang lại lợi ích rõ rệt về hiệu năng: các phép chiếu K và V chỉ chạy một lần khi đoạn âm thanh đến, sau đó được giữ nguyên cho toàn bộ quá trình giải mã. Vì vậy chạy 5 beam chỉ tốn 5 bộ nhớ đệm ngắn, chứ không phải 5 lượt quét lại toàn bộ âm thanh.

Whistle cũng xử lý im lặng khá thông minh: engine đo dải độ to của đoạn ghi trước khi giải mã. Nếu dưới ngưỡng, nó trả về kết quả rỗng và không bao giờ bước vào beam search — tiết kiệm điện đáng kể trên thiết bị đeo.

Hiệu năng: đánh đổi có tính toán

So với hai đối thủ phổ biến là Whisper base của OpenAI và Moonshine tiny v2, Whistle cho thấy sự đánh đổi rõ ràng:

Tiêu chíWhistleWhisper baseMoonshine tiny v2
Kích thước16,9 MB145,3 MB41,9 MB
Thời gian ra token đầu11,1 ms73,2 ms22,8 ms
Tốc độ giải mã1.319 token/s266 token/s262 token/s

Số liệu đo trên CPU Apple M4 Pro với 10 giây âm thanh.

Whistle dẫn trước về tỉ lệ lỗi từ (WER) trên LibriSpeech test-clean, test-other, SPGISpeech, Earnings-22 và trung bình FLEURS. Ngược lại, Whisper base nhỉnh hơn trên TED-LIUM, AMI và trung bình MLS.

Đáng lưu ý: Whistle nhanh hơn khoảng 5 lần ở tốc độ giải mã, nhưng dung lượng chỉ bằng 1/9 Whisper base. Với các thiết bị biên, đây là đánh đổi gần như luôn có lợi.

Nhóm phát triển khẳng định không có âm thanh kiểm thử nào xuất hiện trong dữ liệu huấn luyện hay xác thực của Whistle — được xác minh bằng cách đối chiếu checksum âm thanh và ID người nói trên mọi bộ dữ liệu kiểm thử.

Cài đặt và triển khai

Bắt đầu với Whistle khá đơn giản:

pip install cactus-needle
import needle
print(needle.transcribe("clip.wav")["text"])
# turn off the kitchen lights

Tệp WAV 16 kHz hoặc mẫu thô không cần cài thêm gì. Các tần số lấy mẫu khác và ghi âm từ micro cần gói mở rộng [mic].

Một số tùy chọn hữu ích:

  • word_timestamps=True — thêm mốc thời gian và xác suất cho từng từ
  • keywords=["Siobhan", "Krzysztof"] — tăng xác suất log cho các cụm từ cụ thể trong quá trình tìm kiếm
  • language="de" — ép buộc ngôn ngữ thay vì tự phát hiện

Engine đã được biên dịch sẵn cho 17 nền tảng, từ macOS, Linux, Android, iOS, watchOS, Windows on ARM cho đến RISC-V, MIPS, trình duyệt và cả WASI component. Mỗi thư mục chứa một tệp nhị phân needle, libneedle.a và needle.h, đều có thể nạp bất kỳ tệp .cact nào.

Ý nghĩa với thị trường Việt Nam

Với các nhà phát triển Việt Nam đang xây dựng ứng dụng trong lĩnh vực IoT, nhà thông minh, thiết bị đeo sức khỏe hay robot, một mô hình speech-to-text chỉ 16,9 MB là lựa chọn đáng cân nhắc. Nó mở ra khả năng nhúng trực tiếp vào vi điều khiển mà không cần kết nối cloud — đồng nghĩa với việc dữ liệu âm thanh không bao giờ rời khỏi thiết bị, một lợi thế lớn về quyền riêng tư và chi phí băng thông.

Tuy nhiên, cần lưu ý Whistle hiện chưa hỗ trợ tiếng Việt trong bảy ngôn ngữ chính thức (Anh, Đức, Pháp, Tây Ban Nha, Ý, Hà Lan, Ba Lan). Đây vẫn là rào cản đối với các sản phẩm nhắm đến người dùng nội địa, dù kiến trúc mở của dự án có thể cho phép cộng đồng tinh chỉnh thêm.

Mã nguồn và trọng số mô hình đều công khai trên Hugging Face và GitHub, thuộc kho Cactus-Compute/needle3.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗