- Akışlı konuşma tanımayı hem yerel ortamda hem de tarayıcıda çalıştırabilen, Rust tabanlı bir uygulama; Burn ML framework’ünü kullanıyor
- Model, Mistral’ın Voxtral Mini 4B Realtime temel alınarak geliştirildi ve WASM + WebGPU ile tarayıcı sekmesinde tamamen istemci tarafında çıkarım yapıyor
- Q4 GGUF kuantize model (2.5GB) tarayıcıda çalışabiliyor; SafeTensors tabanlı F32 model (9GB) ise yerel ortamda çalışıyor
- Tarayıcı kısıtlarını (2GB tahsis, 4GB adres alanı, GPU okuma sınırlamaları vb.) aşmak için sharding, 2 aşamalı yükleme, asenkron tensör işleme gibi teknikler uygulanmış
- Apache-2.0 lisansı ile yayımlanmış ve HuggingFace Spaces üzerinde gerçek zamanlı demo deneyimi sunuyor
Voxtral Mini 4B Realtime (Rust) genel bakış
- Mistral’ın Voxtral Mini 4B Realtime modeli, Rust ve Burn ML framework’ü ile tamamen uygulanmış
- Akışlı konuşma tanıma, yerel ve tarayıcı ortamlarında çalıştırılabiliyor
- Tarayıcı sürümü, istemci tarafında çalışmak için WASM (WebAssembly) ve WebGPU kullanıyor
- Q4 GGUF kuantize model (yaklaşık 2.5GB) tarayıcıda çalışıyor; F32 SafeTensors modeli (yaklaşık 9GB) ise yerel ortamda kullanılıyor
- HuggingFace Spaces üzerinde gerçek zamanlı demo sunuluyor
Mimari
- Giriş sesi (16kHz mono), Mel spektrogramına dönüştürüldükten sonra encoder (32 katman) ve decoder (26 katman) üzerinden geçirilerek metne çevriliyor
- Temel işleme adımları
- Mel spektrogramı → encoder (32 katman, 1280 boyut) → Conv 4x downsample → adapter (3072 boyut) → decoder (GQA 32Q/8KV)
- İki farklı çıkarım yolu sunuluyor
- F32 (native): SafeTensors tabanlı, Burn tensör işlemleri kullanıyor
- Q4 GGUF (native + browser): GGUF Q4_0 kuantizasyonu, özel WGSL shader’ları kullanıyor
Tarayıcıda çalıştırmak için teknik çözümler
- Tarayıcı içinde 4B modelini çalıştırmak için 5 kısıt çözülmüş
- 2GB tahsis sınırı →
ShardedCursor ile çoklu buffer okuma
- 4GB adres alanı sınırı → 2 aşamalı yükleme (parse sonrası reader’ı serbest bırakma, ardından finalize etme)
- 1.5GiB embedding tablosu → GPU Q4 embedding + CPU satır araması
- GPU üzerinde senkron okuma yasağı →
into_data_async().await kullanımı
- 256 workgroup sınırı → cubecl-wgpu yamasıyla kernel boyutu sınırlandırma
Q4 padding düzeltmesi
- Varsayılan mistral-common, sesi 32 adet sessizlik tokenı ile padding yapıyor; ancak bu, decoder’ın 38 prefix’inin yalnızca yarısını kapsıyor
- Q4_0 kuantize modelde bu durum, sesin hemen başladığı girdilerde hata oluşmasına neden oluyor
- Bunu çözmek için padding, 76 tokena (=38 decoder tokenı) genişletilerek tüm prefix sessizlikle dolduruluyor
Derleme ve test
- Derleme seçenekleri
- Varsayılan:
cargo build --release (wgpu + native-tokenizer)
- Tarayıcı için:
wasm-pack build --target web --features wasm
- Testler
- GPU tabanlı birim ve entegrasyon testleri destekleniyor
- E2E tarayıcı testleri, Playwright + gerçek GPU ortamı ile yürütülüyor
- CI ortamında GPU olmadığı için ilgili testler atlanıyor
Model hazırlığı ve sharding
Lisans ve kaynaklar
1 yorum
Hacker News yorumları
İnsanlar ilgilenirse, @antirez Voxtral Mini 4B'nin C implementasyonunu yayımladı
Buna antirez/voxtral.c üzerinden bakılabilir
Ben de kendi fork sürümümü oluşturarak CUDA implementasyonu ve bazı iyileştirmeler ekliyorum
Oldukça iyi çalışıyor ama hâlâ Mistral AI'ın API endpoint hızına yetişemiyor
Doğrudan kod yazmaktan ziyade ilgili kaynakları okuyup öğrenmek gerekiyormuş gibi geliyor; önerilecek rehberler varsa iyi olur
Farkın tam olarak ne olduğunu bilmiyorum ama topluluk tepkisi bu tarafa daha olumlu gibi görünüyor
Demoyu deneyince sonuç almak için Mic düğmesine basıp kayıt yaptıktan sonra “Stop and transcribe” düğmesine basmak gerekiyor
Kullanıcı konuştuktan 1-2 saniye içinde altyazının doğrudan belirdiği gerçek zamanlı mod yapılabilir mi diye merak ediyorum
Hugging Face'in sunucu demosu bunu GPU tabanlı 8.5GB modelle yapıyor
Yine de ring buffer tabanlı bir arayüzle benzer şekilde uygulanabilir
Ben Flutter'da Whisper'ı bu şekilde kullanıyorum, llama.cpp'nin GGUF çıkarımını da Dart ile çalıştırıyorum
M4 Max'te bile gerçek zamanlı değil; Whisper ise 2022 sonrası cihazlarda ONNX ile neredeyse gerçek zamanlı
Tüketici donanımında doğruluk (WER) artışından çok çıkarım hızı daha önemli diye düşünüyorum
Asıl ihtiyaç duyulan yön tam da böyle on-premise açık modeller
Hem kullanıcılar hem de şirketler bu tür bir yapıyı tercih ediyor. Mistral bunu iyi yakalamış gibi görünüyor
Açık model dönemi artık daha da ilginçleşecek gibi görünüyor
Harika bir iş. handy.computer ile entegre olsa güzel olurdu; bir de streaming desteği planlanıyor mu merak ediyorum
İlk sürüm muhtemelen streaming desteği sunmayacak
Bu sayede iyi bir araç öğrenmiş oldum ve artık Voxtral desteğinin gerçekten gerekli olduğunu düşünüyorum
Model hakkında çok bilgim yok ama Nvidia Parakeet denedim ve çok iyi çalıştı
Bu tür 9GB'lık modelleri gerçek zamanlı kullanmak için sürekli GPU belleğinde yüklü tutmak mı gerekiyor, yoksa her seferinde yüklemek de olur mu diye merak ediyorum
Kısa cümleler neredeyse anında, uzun cümleler ise 1-3 saniye içinde dönüştürülüyor
Az miktardaki doğruluk kaybı, AI ile konuşma kullanımında önemsiz kalıyor
Handy adlı açık kaynak uygulamada (bağlantı) Parakeet V3 kullanılıyor ama C implementasyonu çok daha yavaştı
STT'de UX'in merkezinde hız var
Gecikme daha çok yeni model çağrıldığında veya büyük bir context değiştirildiğinde ortaya çıkıyor
Çoğu durumda model zaten yüklenmiş oluyor; bu yüzden ana değişken tokens per second
Birden fazla ajan kullanan karmaşık yapılarda context değişimi yüzünden yavaşlama yaşanıyor
ik_llama'nın prompt caching özelliği böyle durumlarda hızı artırıyor
Özetle, modeli ya da context'i sık sık değiştirmediğiniz sürece ağırlık yükleme gecikmesi büyük bir sorun değil
Tek bir tarayıcı sekmesinin 2.5GB'lık modeli indirip kısa süre sonra silmesi verimli mi diye şüpheliyim
İnternet hızı ve depolama ucuzlamış olsa da bu yaklaşım israf gibi geliyor
İstemci tarafı hesaplama güzel ama bu boyuttaki modellerin sunucuda çalıştırılması daha doğru gibi
Ama LLM'ler için bir web API standardı ortaya çıkarsa durum değişebilir
Tarayıcı, kullanıcının tercih ettiği modelle iletişim kurup yerel/uzak çıkarımı soyutlarsa siteler arasında model paylaşılabilir
2026'da 2.5GB yerel model sorun sayılıyorsa artık neye güvenli denebilir emin değilim
İmkânsız→merkezi→yerel şeklinde ilerledik; bedeli 2.5GB ise bu gayet katlanılabilir bir seviye
Tarayıcıda çalışması havalı ama web sitelerinin arka planda 2.5GB indirdiği bir dünya istemiyorum
Nano yerel depolamada tutulup siteler arasında paylaşıldığı için yalnızca bir kez indiriliyor
Mistral'de durum böyle görünmüyor
İlgili istatistikler bu blog yazısında derlenmiş
paket kurma ya da çalıştırılabilir dosya indirmeye kıyasla tarayıcı sandbox ortamının daha güvenli olduğunu düşünüyorum
Yakında buna da alışılır :-)
Benim ortamımda (Firefox, Asahi Linux, M1 Pro) hatalı çalışıyor
“hello” dedim; yaklaşık 1 dakika sonra garip kelimeleri tekrar tekrar yazdırdı
Basit bir soru: Mistral gibi açık modeller, OpenAI ya da Anthropic ile kıyaslandığında ne seviyede?
Kişisel makinede özel biçimde LLM işlevleri kullanmaya yetecek kadar iyi mi,
yoksa hâlâ ticari modellerin epey gerisinde mi, bunu merak ediyorum
İlginç bir proje ve burn framework kullanıldığını görmek sevindirici
Ama Chromium'un son sürümünde çalıştırınca sistem dondu ve işletim sistemi zorla kapandı
Model indirildikten hemen sonra VPN bağlantısı da koptu; bant genişliği sınırı yoktu, nedenini anlayamadım