4 điểm bởi GN⁺ 2026-02-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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)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)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
    1. Giới hạn cấp phát 2GB → đọc nhiều buffer bằng ShardedCursor
    2. 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)
    3. Bảng embedding 1.5GiB → embedding Q4 trên GPU + tra cứu hàng trên CPU
    4. Cấm đọc đồng bộ từ GPU → dùng into_data_async().await
    5. 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

  • Để đáp ứng giới hạn ArrayBuffer của trình duyệt (512MB trở xuống), tệp GGUF được chia thành nhiều shard
    split -b 512m models/voxtral-q4.gguf models/voxtral-q4-shards/shard-  
    
  • Máy chủ phát triển và kiểm thử E2E sẽ tự động dò tìm các shard

Giấy phép và tài nguyên

1 bình luận

 
GN⁺ 2026-02-11
Ý 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

    • Tôi tò mò không biết nên bắt đầu học thế nào nếu muốn làm những thứ như mã suy luận hay triển khai CUDA
      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
    • Cũng có một bản triển khai Mistral khác là mistral.rs
      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

    • Với tốc độ hiện tại thì thời gian thực hoàn toàn là rất khó
      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 đó

    • Mistral có thể đang bước vào khoảnh khắc kiểu bước ngoặt của RedHat
      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

    • Tôi định port cái này sang transcribe-rs để có thể dùng trong Handy
      Bản đầu tiên có lẽ sẽ chưa hỗ trợ streaming
    • Tôi đã dùng thử Handy và thấy nó nhẹ hơn nhiều và UI gọn gàng hơn so với giải pháp trước đây
      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

    • Tôi cũng dùng Parakeet V3, và nó có cân bằng tốc độ và độ chính xác tốt nhất
      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
    • Tôi đang chạy máy chủ ollama, và việc tải mô hình khá nhanh
      Độ 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

    • Trong môi trường trình duyệt hiện tại, mô hình cục bộ khó mà phổ biến đại chúng
      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
    • Công nghệ mới lúc nào cũng kéo theo phàn nà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

    • Tôi đã so sánh Gemini Nano (mô hình AI tích hợp trong Chrome) với các giải pháp chạy trên máy chủ
      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
    • Dĩ nhiên tôi cũng không muốn nó tự động tải xuống ngay khi truy cập trang web, nhưng
      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
    • Giờ đây chỉ để hiển thị một trang landing tĩnh mà người ta cũng đã tải hàng chục MB rồi
      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