- Bản triển khai dựa trên Rust có thể chạy nhận dạng giọng nói trực tuyến cả ở môi trường native lẫn trình duyệt, sử dụng framework Burn ML
- Mô hình dựa trên Voxtral Mini 4B Realtime của Mistral và thực hiện suy luận hoàn toàn phía máy khách trong tab trình duyệt thông qua WASM + WebGPU
- Mô hình lượng tử hóa Q4 GGUF (2.5GB) có thể chạy trong trình duyệt, còn mô hình F32 dựa trên SafeTensors (9GB) hoạt động ở môi trường native
- Để giải quyết các ràng buộc của trình duyệt (giới hạn cấp phát 2GB, không gian địa chỉ 4GB, hạn chế đọc GPU, v.v.), dự án áp dụng các kỹ thuật như sharding, nạp hai giai đoạn, xử lý tensor bất đồng bộ
- Được phát hành theo giấy phép Apache-2.0 và có thể trải nghiệm bản demo thời gian thực trên HuggingFace Spaces
Tổng quan về Voxtral Mini 4B Realtime (Rust)
- Mô hình Voxtral Mini 4B Realtime của Mistral được triển khai đầy đủ bằng Rust và framework Burn ML
- Có thể chạy nhận dạng giọng nói trực tuyến trong môi trường cục bộ và trình duyệt
- Phiên bản trình duyệt hoạt động phía máy khách bằng cách tận dụng WASM (WebAssembly) và WebGPU
- Mô hình lượng tử hóa Q4 GGUF (khoảng 2.5GB) chạy trong trình duyệt, còn mô hình F32 SafeTensors (khoảng 9GB) dùng cho môi trường native
- Cung cấp demo thời gian thực trên HuggingFace Spaces
Kiến trúc
- Âm thanh đầu vào (16kHz mono) được chuyển thành phổ Mel, sau đó đi qua encoder (32 lớp) và decoder (26 lớp) để chuyển thành văn bản
- Các bước xử lý chính
- Phổ Mel → encoder (32 lớp, 1280 chiều) → Conv downsample 4x → adapter (3072 chiều) → decoder (GQA 32Q/8KV)
- Cung cấp hai đường suy luận
- F32 (native): dựa trên SafeTensors, dùng phép toán tensor của Burn
- Q4 GGUF (native + browser): lượng tử hóa GGUF Q4_0, dùng shader WGSL tùy chỉnh
Giải pháp kỹ thuật để chạy trên trình duyệt
- Để chạy mô hình 4B trong trình duyệt, dự án giải quyết 5 điều kiện ràng buộc
- Giới hạn cấp phát 2GB → đọc nhiều buffer bằng
ShardedCursor
- Giới hạn không gian địa chỉ 4GB → nạp hai giai đoạn (phân tích xong thì giải phóng reader, sau đó hoàn tất)
- Bảng embedding 1.5GiB → embedding Q4 trên GPU + tra cứu hàng trên CPU
- Cấm đọc đồng bộ từ GPU → dùng
into_data_async().await
- Giới hạn 256 workgroup → giới hạn kích thước kernel bằng bản vá cubecl-wgpu
Hiệu chỉnh padding Q4
- mistral-common mặc định đệm audio bằng 32 token im lặng, nhưng điều này chỉ bao phủ một nửa trong 38 tiền tố của decoder
- Vì vậy, mô hình lượng tử hóa Q4_0 sẽ phát sinh lỗi với đầu vào mà giọng nói bắt đầu ngay lập tức
- Để khắc phục, dự án mở rộng padding lên 76 token (=38 token decoder) để lấp đầy toàn bộ tiền tố bằng im lặng
Build và kiểm thử
- Tùy chọn build
- Mặc định:
cargo build --release (wgpu + native-tokenizer)
- Dành cho trình duyệt:
wasm-pack build --target web --features wasm
- Kiểm thử
- Hỗ trợ kiểm thử đơn vị và tích hợp dựa trên GPU
- Kiểm thử trình duyệt E2E được thực hiện bằng Playwright + môi trường GPU thực
- Trong CI không có GPU nên các bài kiểm thử liên quan được bỏ qua
Chuẩn bị mô hình và sharding
Giấy phép và tài nguyên
1 bình luận
Ý kiến trên Hacker News
Nếu mọi người quan tâm, @antirez đã công bố bản triển khai Voxtral Mini 4B bằng C
Có thể xem tại antirez/voxtral.c
Tôi đã tạo bản fork của mình và đang thêm triển khai CUDA cùng một vài cải tiến
Nó hoạt động khá tốt nhưng vẫn chưa đạt tốc độ của endpoint API của Mistral AI
Có lẽ không phải cứ lao vào viết code ngay, mà cần đọc và học tài liệu liên quan trước; sẽ rất tuyệt nếu có hướng dẫn nào đáng tham khảo
Tôi không rõ khác biệt ra sao, nhưng có vẻ phản hồi từ cộng đồng dành cho bên này tốt hơn
Tôi thử demo thì phải nhấn nút Mic để ghi âm rồi bấm “Stop and transcribe” mới có kết quả
Tôi tự hỏi liệu có thể làm thành chế độ thời gian thực thật sự với phụ đề hiện lên trong vòng 1–2 giây sau khi người dùng nói xong không
Bản demo máy chủ của Hugging Face đang làm được điều đó bằng mô hình 8.5GB chạy trên GPU
Tuy vậy, có thể làm gần giống bằng UI dựa trên ring buffer
Tôi đang dùng Whisper theo cách này trong Flutter, và cũng chạy suy luận GGUF của llama.cpp bằng Dart
Ngay cả trên M4 Max cũng chưa phải thời gian thực, còn Whisper thì trên các thiết bị từ 2022 trở về sau gần như thời gian thực với ONNX
Trên phần cứng tiêu dùng, tôi nghĩ tốc độ suy luận quan trọng hơn việc cải thiện độ chính xác (WER)
Đây mới chính là hướng đi thực sự cần thiết: những mô hình mở on-premise
Cả người dùng lẫn doanh nghiệp đều thích kiểu này. Có vẻ Mistral đã nắm bắt đúng điều đó
Kỷ nguyên mô hình mở giờ có lẽ sẽ ngày càng thú vị hơn
Công việc rất ấn tượng. Sẽ thật hay nếu tích hợp với handy.computer, và tôi cũng muốn biết có kế hoạch hỗ trợ streaming không
Bản đầu tiên có lẽ sẽ chưa hỗ trợ streaming
Nhờ vậy tôi mới biết đến một công cụ hay, và giờ thực sự cảm thấy cần hỗ trợ Voxtral
Tôi không rành về các mô hình, nhưng đã thử Nvidia Parakeet và nó hoạt động rất tốt
Tôi thắc mắc với các mô hình 9GB như thế này, nếu muốn dùng thời gian thực thì có cần giữ chúng luôn trong bộ nhớ GPU không, hay mỗi lần lại tải lên cũng được
Các câu ngắn gần như ra ngay, còn câu dài thì được chuyển đổi trong vòng 1–3 giây
Một chút mất mát về độ chính xác là không đáng kể khi dùng để trò chuyện với AI
Tôi đang dùng Parakeet V3 trong ứng dụng mã nguồn mở Handy (liên kết), còn bản triển khai C thì chậm hơn nhiều
Trong STT, tốc độ là cốt lõi của UX
Độ trễ xuất hiện khi gọi mô hình mới hoặc thay một ngữ cảnh lớn
Phần lớn thời gian mô hình đã được nạp sẵn, nên tokens per second là biến số chính
Trong các kiến trúc phức tạp dùng nhiều agent, việc chuyển ngữ cảnh làm hệ thống chậm đi
Prompt caching của ik_llama giúp tăng tốc trong những tình huống như vậy
Tóm lại, trừ khi bạn thường xuyên đổi mô hình hoặc ngữ cảnh, độ trễ do tải trọng số không phải vấn đề lớn
Tôi nghi ngờ việc một tab trình duyệt tải xuống mô hình 2.5GB rồi sớm xóa đi có phải là cấu trúc hiệu quả hay không
Dù tốc độ Internet hay dung lượng lưu trữ đã rẻ hơn, cách này vẫn có cảm giác lãng phí
Tính toán phía client thì hay, nhưng với mô hình cỡ này thì có vẻ nên chạy trên máy chủ hơn
Nhưng nếu xuất hiện chuẩn web API cho LLM thì có thể sẽ khác
Nếu trình duyệt giao tiếp với mô hình ưa thích của người dùng và trừu tượng hóa suy luận cục bộ/từ xa, các website sẽ có thể chia sẻ mô hình thay vì mỗi nơi một bản
Nếu đến năm 2026 mà mô hình cục bộ 2.5GB vẫn còn bị xem là vấn đề, thì không biết thế nào mới được coi là an toàn nữa
Chúng ta đã đi từ bất khả thi → tập trung hóa → cục bộ, và nếu cái giá là 2.5GB thì tôi thấy hoàn toàn chấp nhận được
Chạy được trong trình duyệt thì rất ngầu, nhưng tôi không muốn sống trong một thế giới nơi website âm thầm tải xuống 2.5GB ở nền
Nano được lưu trong bộ nhớ cục bộ và chia sẻ giữa các website, nên chỉ cần tải một lần
Có vẻ Mistral không như vậy
Các thống kê liên quan được tổng hợp trong bài blog này
tôi nghĩ môi trường sandbox của trình duyệt vẫn an toàn hơn cài package hay tải file thực thi
Chẳng bao lâu nữa chuyện này cũng sẽ thành bình thường thôi :-)
Trong môi trường của tôi (Firefox, Asahi Linux, M1 Pro) thì nó hoạt động lỗi
Tôi nói “hello” mà khoảng 1 phút sau nó lại lặp đi lặp lại một loạt từ kỳ quặc
Câu hỏi hơi cơ bản, nhưng tôi muốn biết mô hình mở như Mistral hiện đang ở mức nào nếu so với OpenAI hay Anthropic
Liệu đã đủ để dùng các tính năng LLM một cách riêng tư trên máy cá nhân chưa,
hay vẫn còn kém xa các mô hình thương mại
Dự án rất thú vị, và tôi cũng vui khi thấy framework burn được dùng
Tuy nhiên khi chạy trên bản Chromium mới nhất thì hệ thống của tôi bị treo và hệ điều hành buộc phải tắt
Ngay sau khi tải mô hình xong thì kết nối VPN cũng bị ngắt, dù tôi không hề giới hạn băng thông nên không hiểu vì sao