4 puan yazan GN⁺ 2026-02-11 | 1 yorum | WhatsApp'ta paylaş
  • 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üş
    1. 2GB tahsis sınırıShardedCursor ile çoklu buffer okuma
    2. 4GB adres alanı sınırı → 2 aşamalı yükleme (parse sonrası reader’ı serbest bırakma, ardından finalize etme)
    3. 1.5GiB embedding tablosu → GPU Q4 embedding + CPU satır araması
    4. GPU üzerinde senkron okuma yasağıinto_data_async().await kullanımı
    5. 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

  • Tarayıcıdaki ArrayBuffer sınırı (512MB altı) nedeniyle GGUF dosyası shard’lara bölünüyor
    split -b 512m models/voxtral-q4.gguf models/voxtral-q4-shards/shard-  
    
  • Geliştirme sunucusu ve E2E testleri shard’ları otomatik olarak keşfediyor

Lisans ve kaynaklar

1 yorum

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

    • Böyle çıkarım kodu ya da CUDA implementasyonu gibi şeylere başlamak için nasıl çalışmaya başlanacağını merak ediyorum
      Doğrudan kod yazmaktan ziyade ilgili kaynakları okuyup öğrenmek gerekiyormuş gibi geliyor; önerilecek rehberler varsa iyi olur
    • Bir başka Mistral implementasyonu da mistral.rs
      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

    • Mevcut hızla tam anlamıyla gerçek zamanlı olması zor
      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

    • Mistral için RedHat'ın dönüm noktası benzeri bir an yaşanabilir
      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

    • Bunu transcribe-rs'e port edip Handy'de kullanılabilir hâle getirmeye çalışıyorum
      İlk sürüm muhtemelen streaming desteği sunmayacak
    • Handy'yi denedim; önceki çözümlere göre çok daha hafif ve sade bir arayüzü vardı
      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

    • Ben de Parakeet V3 kullanıyorum; hız ve doğruluk dengesi mükemmel
      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
    • Ben ollama sunucusu çalıştırıyorum ve model yükleme oldukça hızlı
      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

    • Mevcut tarayıcı ortamında yerel modellerin yaygınlaşması zor
      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
    • Yeni teknolojiler her zaman şikâyet getirir
      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

    • Ben Gemini Nano'yu (Chrome'a gömülü AI modeli) sunucu tabanlı çözümlerle karşılaştırdım
      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ş
    • Elbette bir web sayfasını ziyaret edince otomatik indirilmesini istemem ama
      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
    • Artık tek bir statik landing page açmak için bile onlarca MB yüklenen bir dünyada yaşıyoruz
      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