- Tüm işlemleri cihaz üzerinde gerçekleştiren gerçek zamanlı konuşma tanıma çerçevesi
- Streaming tabanlı model mimarisi sayesinde kullanıcı konuşurken bile gerçek zamanlı olarak metin üretir ve Whisper Large v3'ten daha düşük hata oranına (WER %6,65) ulaşır
- Python, iOS, Android, MacOS, Linux, Windows, Raspberry Pi dahil çeşitli platformlarda aynı API ile çalışır ve C++ çekirdeği ile OnnxRuntime temelinde optimize edilmiştir
- Dile özel modelleri (İngilizce, Korece, Japonca, İspanyolca vb.) ve komut tanıma (Intent Recognition) özelliğini içerir; böylece geliştiriciler ses arayüzlerini kolayca kurabilir
- Whisper'ın 30 saniyelik sabit girişi, önbellek eksikliği ve dil doğruluğu sınırlarını iyileştirerek, edge ortamlarında düşük gecikmeli ses arayüzleri uygulamak için dikkat çeken bir alternatif olarak öne çıkıyor
Moonshine Voice'a genel bakış
- Moonshine Voice, gerçek zamanlı ses uygulamaları geliştirmek için açık kaynaklı bir yapay zeka araç setidir
- Tüm hesaplamalar yerel cihazda yapılır; bu da hızlı yanıt ve gizlilik koruması sağlar
- Streaming işleme ile kullanıcı konuşurken metin güncellenebilir
- Model, kendi araştırmalarına dayalı olarak sıfırdan eğitilmiş bir mimariye sahiptir ve Whisper Large v3'ten daha yüksek doğruluk sunar
- 26 MB'lık ultra küçük modelden 245M parametreli orta ölçekli modele kadar farklı boyutlarda seçenekler sunar
- İngilizce, Korece, Japonca, Çince, İspanyolca, Vietnamca, Arapça, Ukraynaca dahil çoklu dil desteği sağlar
Whisper'a kıyasla başlıca iyileştirmeler
- Whisper'ın 30 saniyelik sabit giriş penceresini kaldırarak değişken uzunlukta girişi destekler
- Önbellekleme özelliği ekleyerek streaming sırasında yinelenen hesaplamaları azaltır ve gecikmeyi (latency) büyük ölçüde düşürür
- Dil başına tek model eğitimi ile aynı boyutta daha yüksek doğruluk elde eder
- Platformlar arası C++ çekirdek kütüphanesi sayesinde Python, Swift, Java vb. ortamlarda aynı API kullanılabilir
- Whisper Large v3'ten (1.5B parametre) daha küçük olan 245M parametreli modelle daha düşük hata oranı elde eder
Başlıca özellikler ve API yapısı
- Konuşma tanıma hattını tek bir kütüphanede birleştirerek mikrofon girişi, ses algılama (VAD), metne dönüştürme, konuşmacı tanımlama, komut tanıma işlemlerini topluca yürütür
- Temel sınıflar:
- Transcriber: ses girişini metne dönüştürür
- MicTranscriber: mikrofon girişini otomatik işler
- IntentRecognizer: doğal dil tabanlı komut tanıma
- Olay tabanlı yapısıyla LineStarted / LineUpdated / LineCompleted gibi durum değişimlerini gerçek zamanlı olarak algılar
Modeller ve performans
- Moonshine Medium Streaming (245M): WER %6,65, Whisper Large v3'ten (%7,44) daha iyi
- Moonshine Small Streaming (123M): WER %7,84
- Moonshine Tiny Streaming (34M): WER %12,00
- Korece Tiny model WER %6,46 olarak değerlendirilmiştir
- Tüm modeller OnnxRuntime tabanlı .ort formatında sunulur ve 8 bit kuantizasyon ile hafifletilmiştir
Geliştirme ve dağıtım
- Python (
pip install moonshine-voice), Swift (SPM), Android (Maven), Windows (C++ header) dahil başlıca ortamlarda kurulabilir
- Raspberry Pi için optimize edilmiş paket sunulur; USB mikrofon ile gerçek zamanlı tanıma yapılabilir
- MIT lisansı (İngilizce modeller) ve Moonshine Community License (diğer dil modelleri) ile yayımlanır
- Gelecek yol haritasında mobil için daha hafif binary'ler, ek diller, geliştirilmiş konuşmacı tanımlama, alan özelleştirmesi yer alıyor
Benchmark ve kullanım alanları
- Whisper'a kıyasla 5 kattan fazla daha hızlı işleme hızıyla gerçek zamanlı ses arayüzleri için uygundur
- 200 ms altı yanıt gecikmesi hedefiyle tasarlandığından, etkileşimli uygulamalarda kullanılabilir
- Komut tanıma örnekleri ile “Turn on the lights” gibi doğal dilde varyasyon içeren komutları da algılayabilir
- HuggingFace OpenASR Leaderboard üzerinde açık performans doğrulaması tamamlanmıştır
1 yorum
Hacker News yorumları
OpenASR Leaderboard'a göre Parakeet V2/V3 ve Canary-Qwen (Qwen'in fine-tune edilmiş sürümü), Moonshine'dan daha iyi performans gösteriyor
Üç model de açık kaynak, ancak Parakeet en küçük model
Ben Parakeet V3'ü Handy ile birlikte yerelde kullanıyorum ve çok iyi çalışıyor
Bu yüzden bire bir karşılaştırmanın zor olduğunu düşünüyorum
Leaderboard'da model boyutu bilgisinin olmaması şaşırtıcı
Bu yazıyı da şu anda Handy'ye konuşarak yazıyorum
Noktalama işaretlerini otomatik işlemesi de kusursuz ve sesi yerelde doğrudan metne çevirdiği için Google Docs'tan çok daha kullanışlı
Eskiden Chrome tabanlı sesli girişi kullanmak için Orion tarayıcısını bile kurmuştum, ama artık tek başına Handy yeterli
Yazma hızım 100~120 WPM civarıydı, bu ise ondan daha hızlı
Gerçekten bir yaşam kalitesi artırıcı araç
macOS'ta codex-cli ile Handy'yi birlikte kullanırken varsayılan kısayolun (Option+Space) konuşmanın ortasına boşluk eklemesi gibi bir sorun var
Bunun yerine Left Ctrl + Fn kombinasyonu tertemiz çalışıyor
Başkalarının hangi kısayolları kullandığını merak ediyorum
Bizzat denedim ve gerçekten harika
Artık tüm müşteri işlerimde varsayılan uygulama olarak kullanacağım
Sonuçlar için tebrikler
Benim için en ilginç kısım streaming özelliği
Voxtral Realtime tabanlı macOS dikte uygulaması LocalVoxtral'ı yaptım ve streaming ile offline STT arasındaki UX farkı çok büyük
Konuşurken kelimelerin anında belirmesi, geri bildirim döngüsünü tamamen değiştiriyor
Hataları gerçek zamanlı yakalayıp cümleyi düzeltebildiğiniz için çok daha doğal hissettiriyor
Moonshine'ın streaming gecikmesinin (latency) pratikte ne kadar olduğunu merak ediyorum
Ayrıca OpenAI Realtime ile uyumlu bir WebSocket endpoint'i olup olmadığını da bilmek isterim
Moonshine'ı varsayılan yapmamın nedeni doğruluk ile gecikme süresi arasındaki dengenin en iyi onda olması
İleride farklı modelleri aynı ses verisiyle karşılaştıran nesnel benchmark'lar eklemeyi planlıyorum
Ayrıca Sherpa-onnx API'sini referans alarak yaptığım özel bir WebSocket sunucusu da var: (rift-local)
Tek bağlantı için optimize edildiğinden çoklu bağlantılar için uygun değil
Çeşitli Twitch yayıncılarının obs-localvocal üzerinden yayınlarına transkripsiyon ve çeviri özellikleri eklemelerine yardımcı oldum
Bu çoğunlukla Almanca konuşmayı İngilizce altyazıya çevirmek içindi
Whisper'dan daha hızlı ve daha doğru bir alternatife ihtiyaç var, ancak yayıncılar kurulumlu OBS eklentisi biçimini tercih ediyor
Moonshine'da çeviri özelliği yok ve çok dilli otomatik algılama da desteklenmiyor; bu da sık sık code-switching yapan yayıncılar için bir sınırlama
Dili otomatik algılayıp modeli değiştiren bir özellik olsaydı ideal olurdu
Whisper Large v3'ten daha yüksek doğruluk iddia etmek cesur bir çıkış
Değerlendirme sırasında Whisper'ın hallucination loop sorununu hesaba katıp katmadığınızı merak ediyorum
Ayrıca edge device dağıtımında VRAM kullanımının 8GB Mac'lere uyup uymadığını da bilmek isterim
Quantization olmadan çalışıyorsa bu oldukça önemli olur
Streaming ortamında basit WER'den daha önemli olan şey partial stability
Sesli asistanda partial transkripsiyon birkaç yüz ms'de bir değişirse UX mahvolur
İlk token gecikmesi, gerçek zaman oranı, 1 saniye/3 saniye sonra düzeltilen token oranı gibi metrikler olsa karşılaştırma çok daha pratik olurdu
Bu değerler iyiyse yerel asistan pipeline'ları için çok umut verici
Ben de konuşurken kendi kendimi geriye dönük yorumladığım anlar yaşıyorum ve bunun bilinçsizce de sık sık olabileceğini düşünüyorum
Eğer öyleyse bu oranın aşırı düşük olması gerekmeyebilir
Şu anda desteklenen diller İngilizce, Arapça, Japonca, Korece, Çince, İspanyolca, Ukraynaca ve Vietnamca; modellerin çoğu Base (58M parametre) boyutunda
Raspberry Pi kurulum rehberinde neden
'sudo pip install --break-system-packages moonshine-voice'önerildiğini anlamadımYine de belgelerde uv kullanan bir alternatif de sunuluyor
uv runkullanılırsa ayrıcasourcekomutu çalıştırmaya gerek kalmıyor“Doğruluk artışı”nın İngilizce için mi yoksa çok dilli kullanım için mi olduğu belirsiz
Karşılaştırma yapılabilmesi için en azından dil bazında bir WER tablosu verilmesi gerekir
Tarayıcıda JavaScript desteği planlanıp planlanmadığını merak ediyorum
Eskiden bir demo vardı ama şimdi kaldırılmış
Bir zamanlar yerelde çalışıyordu ama bir noktadan sonra sebepsiz yere bozuldu
Ayrıca tarayıcı içi offline transkripsiyon çözümlerini derleyen bir karşılaştırma belgesi de mevcut
transformers.js (WebGPU kullanımı, WASM fallback) tabanlı ayrı bir Moonshine demosu da bulunuyor
Tarayıcı GUI ile Moonshine'ı denemek için aşağıdaki komutu çalıştırabilirsiniz
Bu, yerel transkripsiyon için web frontend'i RIFT'i açar ve bir kopyalama düğmesi de içerir
Web Speech API ve diğer modellerle (bulut API'leri dahil) karşılaştırma da yapılabilir
İlgili bağlantılar: rift-local, RIFT demosu