- Mistral Voxtral Realtime 4B là pipeline suy luận được triển khai chỉ bằng ngôn ngữ C, với cấu trúc thực thi độc lập hoàn toàn không có phụ thuộc bên ngoài
- Hỗ trợ backend Metal GPU acceleration (MPS) và BLAS (OpenBLAS/Accelerate), đồng thời xử lý đầu vào giọng nói thời gian thực và xuất token thông qua streaming API
- Trọng số BF16 được ánh xạ bộ nhớ, encoder dựa trên sliding window và rolling KV cache giúp giữ mức sử dụng bộ nhớ ổn định ngay cả với đầu vào âm thanh dài
- Hỗ trợ nhiều phương thức đầu vào âm thanh qua micro, stdin pipe và chuyển đổi bằng ffmpeg, đồng thời cung cấp hiển thị token thay thế và tùy chọn điều chỉnh độ trễ (-I)
- Được phát hành theo giấy phép MIT, đạt tốc độ nhanh hơn thời gian thực khoảng 2,5 lần trên Apple M3 Max, cho phép triển khai nhận dạng giọng nói cục bộ gọn nhẹ
Tổng quan về Voxtral.c
- Đây là engine suy luận thuần C dành cho mô hình Mistral AI Voxtral Realtime 4B, không có phụ thuộc nào ngoài thư viện chuẩn C
- Backend MPS mang lại tốc độ suy luận nhanh, còn BLAS (OpenBLAS/Accelerate) hoạt động trong môi trường dùng CPU
- Có thể suy luận hoàn toàn cục bộ mà không cần Python runtime, CUDA hay vLLM
- Đồng thời cung cấp bản triển khai tham chiếu bằng Python đơn giản qua tệp python_simple_implementation.py
- Chỉ cần PyTorch, safetensors, soundfile và soxr
Tính năng chính
- Zero dependencies: có thể chạy chỉ với C mà không cần thư viện ngoài
- Metal GPU acceleration: tự động kích hoạt trên Apple Silicon, hỗ trợ hợp nhất phép toán GPU và xử lý attention theo lô
- Xuất streaming: token được sinh ra sẽ được in ra stdout ngay lập tức
- Streaming C API: đưa âm thanh vào tuần tự và nhận chuỗi token theo thời gian thực
- Trọng số ánh xạ bộ nhớ: nạp trực tiếp tệp safetensors bằng mmap để dùng ngay
- Hỗ trợ đầu vào micro (macOS): bao gồm tính năng tự động phát hiện im lặng
- Chunked Encoder: xử lý âm thanh theo các chunk chồng lấp để giữ mức dùng bộ nhớ ổn định
- Rolling KV Cache: tự động nén cache bằng sliding window 8192 vị trí, cho phép xử lý âm thanh dài không giới hạn
Cách sử dụng
- Lệnh cơ bản
./voxtral -d voxtral-model -i audio.wav : nhận dạng giọng nói từ tệp
./voxtral -d voxtral-model --from-mic : nhận dạng thời gian thực từ micro (macOS)
- Có thể đưa vào nhiều định dạng âm thanh khác nhau qua pipe
ffmpeg
- Hiển thị token thay thế
- Dùng tùy chọn
--alt <cutoff> để hiển thị thêm các ứng viên phát âm gần giống
- Giá trị
cutoff càng cao thì càng hiển thị nhiều ứng viên
- Điều chỉnh độ trễ (tùy chọn -I)
- Thiết lập chu kỳ gọi encoder theo giây
- Giá trị thấp (ví dụ: 0,5 giây) cho độ trễ thấp nhưng tải GPU cao / giá trị cao (ví dụ: 5 giây) cho xử lý hiệu quả hơn
- Mặc định là 2,0 giây, khuyến nghị 1,0~2,0 giây cho streaming thời gian thực
Cấu trúc C API
- Cung cấp streaming API dựa trên vox_stream_t
feed() : nhập âm thanh
get() : nhận token
finish() : xử lý phần âm thanh còn lại
flush() : buộc xử lý bộ đệm
- Có thể thiết lập số lượng token thay thế bằng vox_stream_set_alt()
- Có thể xử lý hàng loạt một tệp đơn bằng hàm vox_transcribe()
Tải mô hình và cấu hình
- Tải trọng số mô hình khoảng 8,9GB từ HuggingFace
consolidated.safetensors (trọng số BF16)
tekken.json (từ vựng tokenizer)
params.json (cấu hình mô hình)
- Mô hình theo giấy phép Apache-2.0, mã nguồn theo giấy phép MIT
Benchmark hiệu năng
- Theo chuẩn Apple M3 Max (GPU 40 lõi, RAM 128GB)
- Backend MPS: encoder 284ms, decoder 23,5ms/bước
- Backend BLAS: encoder khoảng 8 giây, decoder 335ms/bước
- Trung bình 31,6ms/bước với âm thanh 60 giây, đạt tốc độ nhanh hơn thời gian thực khoảng 2,5 lần
- Decoder thực hiện toàn bộ phép toán cho mỗi token chỉ với một lệnh gọi Metal command buffer duy nhất
Kiến trúc mô hình
- Mô hình speech-to-text streaming quy mô 4 tỷ tham số (4B)
- Audio encoder: causal transformer 32 lớp, 1280 chiều, 32 head, window 750
- Adapter: Linear(5120→3072) → GELU → Linear(3072→3072)
- LLM decoder: transformer 26 lớp (dựa trên Ministral-3), 3072 chiều, GQA(32 head/8KV)
- Tokenizer Tekken, kích thước từ vựng 131.072
- Ngôn ngữ hỗ trợ: tiếng Anh, tiếng Tây Ban Nha, tiếng Pháp, tiếng Bồ Đào Nha, tiếng Hindi, tiếng Đức, tiếng Hà Lan, tiếng Ý, tiếng Ả Rập, tiếng Nga, tiếng Trung, tiếng Nhật, tiếng Hàn
Yêu cầu bộ nhớ
- Trọng số mô hình: 8,9GB (mmap theo nhu cầu)
- GPU cache: khoảng 8,4GB (sau khi chuyển BF16 → F16)
- KV cache: tối đa 1,8GB (bị giới hạn bởi sliding window)
- Work buffer: khoảng 200MB
Build và nền tảng
- macOS Apple Silicon:
make mps (nhanh nhất)
- macOS Intel / Linux(OpenBLAS) :
make blas
- Ubuntu/Debian:
sudo apt install libopenblas-dev
- Fedora:
sudo dnf install openblas-devel
Giấy phép
- Mã nguồn: MIT
- Mô hình: Apache-2.0
- Bất kỳ ai cũng có thể sửa đổi và phân phối lại dưới dạng mã nguồn mở
1 bình luận
Ý kiến trên Hacker News
Tôi đang dùng STT (nhận dạng giọng nói) bằng cách kết hợp ứng dụng mã nguồn mở Handy với Parakeet V3
Về tốc độ và độ chính xác, tôi vẫn chưa thấy gì vượt qua được tổ hợp này. Gần như được chép lời ngay lập tức, và chút suy giảm độ chính xác cũng không thành vấn đề nhờ khả năng đọc ngữ cảnh của AI
Tôi đã thử tích hợp bản triển khai Voxtral C vào Handy, nhưng trên MacBook M1 Max (64GB) thì chép lời quá chậm. Tôi dự định sẽ thử thêm các bản triển khai khác
Tôi là fan của các dự án voxtral.c và flux2.c của Salvatore
Tôi mong chúng tiếp tục được tối ưu như một lựa chọn nhẹ, chạy được mà không cần phụ thuộc bên ngoài. Nhưng hiện tại vẫn còn quá chậm để dùng thực tế (theo môi trường AMD 7800X3D/Blas)
Khi thêm tính năng Voice Input của llms-py, hỗ trợ voxtype.io của Omarchy cho UX tốt nhất, sau đó là Whisper.cpp
OpenAI Whisper chậm nhưng vẫn là một lựa chọn chép lời cục bộ ổn định
Ngoài ra, Voxtral Transcription API của Mistral cũng rất ấn tượng về tốc độ và giá — $0.003 mỗi phút, rất nhanh và rẻ. Tôi nghĩ đây là lựa chọn tốt nhất trong các môi trường bị giới hạn CPU hoặc ổ đĩa
Giờ tôi định thử mẫu chép lời Qwen 0.6 mới ra. Nếu đúng như benchmark thì nó có tiềm năng phát triển thành một chuỗi gọn nhẹ có tối ưu chỉ dùng CPU và cả lượng tử hóa 8bit
Vì cũng phải cài được trên các môi trường thuê máy chủ như Hetzner, tôi dự định thử tối ưu riêng cho từng nhóm Intel·AMD·ARM
Handy có vẻ có tính năng overlay, nhưng trên hệ thống của tôi thì không hoạt động
Trên Linux thì cài đặt khá dễ, nhưng vẫn chưa đạt được chép lời thời gian thực như Whisper.cpp hay Moonshine
Tùy chọn
--from-micchỉ hỗ trợ Mac nên tôi đã thử capture âm thanh bằng ffmpeg, nhưng kết nối đầu vào mic thì thất bạiCó vẻ hệ thống của tôi không đủ cấu hình để chạy mô hình mặc định.
Tôi muốn thử mô hình voxtral-q4.gguf
Audacity hay OBS Studio đều ghi được, nên tôi nghĩ thời gian thực cũng có thể làm được
Cá nhân tôi có lẽ sẽ thử theo thứ tự file→ffmpeg→voxtral, sau đó mic→ffmpeg→file, và cuối cùng là mic→ffmpeg→voxtral
Tiêu đề ghi là chỉ dành cho CPU, nhưng thực tế cũng hỗ trợ tăng tốc GPU. Điều đó được ghi rõ trong phần mô tả kho lưu trữ
Dự án này và bản triển khai runtime bằng Rust đang cùng lúc lên trang chính HN. Cục diện cạnh tranh khá thú vị
Cũng có một bản triển khai phiên bản MLX → voxmlx
Tôi rất quan tâm đến mảng speech-to-text (STT)
Tôi muốn xử lý dữ liệu có nhiều giọng địa phương và thuật ngữ chuyên môn pha trộn, nhưng không biết nên bắt đầu từ đâu nếu muốn huấn luyện mô hình bằng tập mẫu giọng nói quy mô lớn mà mình có. Mong được cho lời khuyên
Tôi đã thử chạy trên MacBook Pro M3 16GB, có tải lên được nhưng bị treo hoặc quá chậm
Thật kỳ lạ khi việc mà 20 năm trước chỉ cần khoảng 200MB giờ lại cần tới mô hình 9GB