- Mistral Voxtral Realtime 4B adalah pipeline inferensi yang diimplementasikan hanya dengan bahasa C, dengan struktur mandiri tanpa dependensi eksternal sama sekali
- Mendukung backend Metal GPU acceleration (MPS) dan BLAS (OpenBLAS/Accelerate), serta menangani input suara real-time dan output token melalui streaming API
- Dengan bobot BF16 yang dimemory-map, encoder berbasis sliding window, dan rolling KV cache, penggunaan memori tetap konstan bahkan untuk input audio panjang
- Mendukung berbagai metode input audio melalui input mikrofon, pipe stdin, dan konversi ffmpeg, serta menyediakan tampilan token alternatif dan opsi pengaturan latensi (-I)
- Dirilis dengan lisensi MIT, dan mencapai kecepatan sekitar 2,5x lebih cepat dari real-time pada Apple M3 Max, sehingga memungkinkan implementasi pengenalan suara lokal yang ringan
Gambaran umum Voxtral.c
- Mesin inferensi berbasis C murni untuk model Voxtral Realtime 4B dari Mistral AI, tanpa dependensi selain pustaka standar C
- Backend MPS memberikan kecepatan inferensi tinggi, sementara BLAS (OpenBLAS/Accelerate) berjalan di lingkungan berbasis CPU
- Inferensi lokal penuh dapat dilakukan tanpa Python runtime, CUDA, atau vLLM
- File python_simple_implementation.py juga disediakan sebagai implementasi referensi Python yang sederhana
- Hanya memerlukan PyTorch, safetensors, soundfile, dan soxr
Fitur utama
- Zero dependencies: dapat dijalankan hanya dengan C tanpa pustaka eksternal
- Metal GPU acceleration: aktif otomatis di lingkungan Apple Silicon, dengan fusi operasi GPU dan pemrosesan attention yang dibatch
- Streaming output: token yang dihasilkan langsung dikirim ke stdout
- Streaming C API: audio dapat dimasukkan secara berurutan dan string token diterima secara real-time
- Bobot yang dimemory-map: file safetensors dimuat langsung dengan mmap dan bisa segera digunakan
- Dukungan input mikrofon (macOS): termasuk fitur deteksi hening otomatis
- Chunked Encoder: memproses audio dalam chunk yang saling tumpang tindih agar penggunaan memori tetap stabil
- Rolling KV Cache: cache dikompresi otomatis dengan sliding window 8192 posisi, memungkinkan pemrosesan audio dengan panjang tak terbatas
Cara penggunaan
- Perintah dasar
./voxtral -d voxtral-model -i audio.wav : pengenalan suara berbasis file
./voxtral -d voxtral-model --from-mic : pengenalan real-time dari mikrofon (macOS)
- Berbagai format audio juga bisa dimasukkan melalui pipe
ffmpeg
- Tampilan token alternatif
- Gunakan opsi
--alt <cutoff> untuk menampilkan kandidat dengan pelafalan mirip
- Semakin tinggi nilai
cutoff, semakin banyak kandidat yang ditampilkan
- Pengaturan latensi (opsi -I)
- Menetapkan periode pemanggilan encoder dalam satuan detik
- Nilai rendah (misalnya 0.5 detik) memberi latensi rendah tetapi beban GPU lebih tinggi / nilai tinggi (misalnya 5 detik) lebih efisien
- Nilai default adalah 2.0 detik, dan 1.0~2.0 detik direkomendasikan untuk streaming real-time
Struktur C API
- Menyediakan streaming API berbasis vox_stream_t
feed() : memasukkan audio
get() : menerima token
finish() : memproses sisa audio
flush() : memaksa pemrosesan buffer
- Jumlah token alternatif dapat diatur dengan vox_stream_set_alt()
- Pemrosesan batch untuk satu file dapat dilakukan dengan fungsi vox_transcribe()
Unduh dan konfigurasi model
- Unduh bobot model sekitar 8.9GB dari HuggingFace
consolidated.safetensors (bobot BF16)
tekken.json (kosakata tokenizer)
params.json (konfigurasi model)
- Model berlisensi Apache-2.0, kode berlisensi MIT
Benchmark performa
- Berdasarkan Apple M3 Max (GPU 40-core, RAM 128GB)
- Backend MPS: encoder 284ms, decoder 23.5ms/langkah
- Backend BLAS: encoder sekitar 8 detik, decoder 335ms/langkah
- Untuk audio 60 detik, rata-rata 31.6ms/langkah, atau sekitar 2,5x lebih cepat dari real-time
- Decoder menjalankan seluruh operasi per token melalui satu pemanggilan Metal command buffer
Arsitektur model
- Model speech-to-text streaming dengan total 4 miliar parameter (4B)
- Audio encoder: 32-layer causal transformer, 1280 dimensi, 32 head, window 750
- Adapter: Linear(5120→3072) → GELU → Linear(3072→3072)
- LLM decoder: 26-layer transformer (berbasis Ministral-3), 3072 dimensi, GQA(32 head/8KV)
- Tokenizer Tekken, ukuran kosakata 131,072
- Bahasa yang didukung: Inggris, Spanyol, Prancis, Portugis, Hindi, Jerman, Belanda, Italia, Arab, Rusia, Tionghoa, Jepang, Korea
Kebutuhan memori
- Bobot model: 8.9GB (mmap on-demand)
- Cache GPU: sekitar 8.4GB (setelah konversi BF16→F16)
- KV cache: maksimum 1.8GB (dibatasi sliding window)
- Buffer kerja: sekitar 200MB
Build dan platform
- macOS Apple Silicon:
make mps (paling cepat)
- macOS Intel / Linux(OpenBLAS) :
make blas
- Ubuntu/Debian:
sudo apt install libopenblas-dev
- Fedora:
sudo dnf install openblas-devel
Lisensi
- Kode: MIT
- Model: Apache-2.0
- Sebagai open source, siapa pun dapat memodifikasi dan mendistribusikannya kembali
1 komentar
Opini Hacker News
Saya menggunakan STT (pengenalan suara) dengan menggabungkan aplikasi open-source Handy dan Parakeet V3
Sampai sekarang saya belum melihat kombinasi lain yang bisa mengungguli ini dalam hal kecepatan dan akurasi. Transkripsinya hampir seketika, dan sedikit penurunan akurasi tidak jadi masalah berkat kemampuan AI memahami konteks
Saya sudah mencoba mengintegrasikan implementasi Voxtral C ke Handy, tetapi di M1 Max MacBook (64GB) transkripsinya terlalu lambat. Saya berencana mencoba implementasi lain juga
Saya penggemar proyek voxtral.c dan flux2.c milik Salvatore
Saya harap keduanya terus dioptimalkan sebagai opsi ringan yang berjalan tanpa dependensi eksternal. Namun saat ini masih terlalu lambat untuk penggunaan nyata (berdasarkan lingkungan AMD 7800X3D/Blas)
Saat menambahkan fitur Voice Input di llms-py, dukungan voxtype.io dari Omarchy memberikan UX terbaik, disusul Whisper.cpp
OpenAI Whisper memang lambat, tetapi tetap merupakan opsi transkripsi lokal yang andal
Selain itu, Voxtral Transcription API dari Mistral juga mengesankan dari sisi kecepatan dan harga — sangat cepat dan murah di $0.003 per menit. Saya rasa ini pilihan terbaik di lingkungan dengan keterbatasan CPU atau disk
Sekarang saya ingin menguji model transkripsi Qwen 0.6 yang baru dirilis. Jika sesuai benchmark, ada potensi besar berkembang menjadi rantai ringan yang mempertimbangkan optimasi CPU-only dan bahkan kuantisasi 8bit
Karena harus bisa dipasang juga di lingkungan sewa server seperti Hetzner, saya berencana mencoba optimasi terpisah untuk Intel, AMD, dan ARM
Handy katanya punya fitur overlay, tetapi di sistem saya tidak berfungsi
Di Linux instalasinya mudah, tetapi transkripsi real-time seperti Whisper.cpp atau Moonshine masih belum bisa
Opsi
--from-michanya mendukung Mac, jadi saya mencoba menangkap audio dengan ffmpeg, tetapi gagal menghubungkan input mikrofonSepertinya sistem saya tidak cukup kuat untuk menjalankan model default.
Saya ingin mencoba model voxtral-q4.gguf
Karena Audacity atau OBS Studio bisa merekamnya, sepertinya real-time juga mungkin
Secara pribadi saya mungkin akan mencoba berurutan: file→ffmpeg→voxtral, lalu mic→ffmpeg→file, dan terakhir mic→ffmpeg→voxtral
Judulnya menyebut CPU-only, tetapi sebenarnya akselerasi GPU juga didukung. Itu dijelaskan dengan jelas di deskripsi repositori
Proyek ini dan implementasi runtime Rust-nya sama-sama muncul di halaman utama HN. Dinamika persaingannya menarik
Ada juga implementasi versi MLX → voxmlx
Saya sangat tertarik pada bidang speech-to-text (STT)
Saya ingin menangani data yang mencampurkan berbagai aksen dan istilah teknis, tetapi saya tidak tahu harus mulai dari mana jika ingin melatih model dengan data sampel suara skala besar yang saya miliki. Mohon sarannya
Saya mencobanya di MacBook Pro M3 16GB, dan memang bisa dimuat, tetapi macet atau terlalu lambat
Terasa aneh bahwa pekerjaan yang 20 tahun lalu bisa dilakukan dengan sekitar 200MB sekarang membutuhkan model 9GB