deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

RealtimeVAD, konuşma sonu gecikmesini Silero VAD'e kıyasla ~100 ms azaltıyor

Açık kaynak RealtimeVAD, Silero'nun modelini koruyor ama üzerine 10 ms'lik bir ses seviyesi kontrolü ekliyor; sesli asistanlara kullanıcının konuşmayı kestiğini medyan 100 ms daha önce bildiriyor — karşılığında çok daha fazla spekülatif pause olayı üretiyor.

RealtimeVAD, konuşma sonu gecikmesini Silero VAD'e kıyasla ~100 ms azaltıyor

Daha hızlı konuşma sonu sinyali

KoljaB adıyla paylaşım yapan bir geliştirici, RealtimeVAD'ı yayınladı; bu açık kaynak Python kütüphanesi, yaygın olarak kullanılan Silero VAD'e kıyasla sesli asistana kullanıcının konuşmayı bıraktığını medyan 100 ms daha önce bildiriyor. Proje, GitHub deposuna işaret eden bir Show HN gönderisiyle Hacker News'te tanıtıldı ve her realtime ses hattının paylaştığı bir darboğaza odaklanıyor: tanıma, LLM çağrısı ve ses çıktısının tamamı, sıranın bittiği tek bir kararı bekliyor ve geleneksel bir dedektör bu kararı vermek için birkaç yüz milisaniye harcayabiliyor.

Nasıl çalışıyor

RealtimeVAD, Silero'nun yerine geçmiyor; neyin konuşma sayılacağına karar vermek için modeli tutuyor ve üzerine ikinci, daha ucuz bir kontrol ekliyor. Her 10 ms'de gelen ses seviyesini odanın gürültüsü ve konuşmacının kendi seviyesiyle karşılaştırıyor ve ses kesildikten yaklaşık 10 ms içinde bir 'pause' olayı yayıyor — Silero'nun konuşma olasılığı düşmeden çok önce. 'start' olayı, tıklamaların tetiklememesi için yaklaşık 64 ms kesin konuşmanın ardından ateşleniyor; 'end' ise konuşma yeniden başlamazsa konuşma kesildikten 0.24 s sonra segmenti kapatıyor, asla yalnız Silero'dan daha geç değil. Girdi, herhangi bir boyutta parçalar halinde 16 kHz mono ses (float32, int16 veya int16 bytes). Kütüphane tek bir CPU thread'inde gerçek zamanlıdan hızlı çalışıyor, yalnızca numpy ve onnxruntime gerektiriyor ve torch'a ihtiyaç olmasın diye Silero modelini paketin içinde barındırıyor.

Ölçülen ödünleşim

Projenin README'sine göre yazar, canlı bir sesli asistandan 3.279 tur değerlendirdi; her iki dedektör aynı sesi duyacak şekilde Silero'nun kararlarını aynı frame olasılıklarından hesapladı. Konuşma kesilmesi, Silero'nun olasılığı varsayılan 0.5 eşiğinin altına düşmeden medyan 100 ms önce (turların %98'inde daha erken), daha katı 0.35 eşiğinden 110 ms önce ve Silero'nun VADIterator'ı bitişi bildirmeden 206 ms önce geldi. Her ikisinin de aynı segmenti kapattığı 2.323 turda 'end', vakaların %82'sinde Silero'nunkini medyan 70 ms yendi ve hiçbir zaman daha geç olmadı.

Bedeli yanlış alarmlar. 'pause', Silero'nun 0.5'in altına düşmesinden yaklaşık on kat daha sık ateşleniyor — saniye başına konuşma için 1,5 olaya karşı 0,14 — çünkü her nefeste, durak ünsüzlerinde ve kelimeler arasındaki kısa boşluklarda tetikleniyor. Bu bilinçli bir tercih: README, 'pause' olayını, konuşma devam ederse iptal edebileceğiniz işler için spekülatif bir sinyal olarak konumlandırıyor — transkripti sonlandırmak, LLM'yi çağırmak veya ses çıktısını hazırlamak gibi. Ucuz şekilde iptal edemeyen hatlara ise 'pause' olayını yok sayıp 'end'i beklemeleri söyleniyor.

Entegrasyon ve uyarılar

Mevcut Silero kullanıcıları için kütüphane doğrudan yerine geçen bir çözüm olarak konumlandırıldı: import'u değiştirin; constructor ve sonuçlar aynı biçimde kalıyor, 'end' sadece daha önce geliyor. Bir LiveKit Agents plugin'i silero.VAD.load() yerine realtimevad.VAD.load() kullanıyor; orada konuşma sonu, Silero plugin'inin varsayılanlarına göre yaklaşık 380 ms daha erken geldi, ancak yazar bunun çoğunu Silero'ya da verilebilen daha kısa bir sessizlik ayarına (0,55 s yerine 0,25 s) bağlıyor. Eşit ayarlarda son 65–110 ms daha erken geldi ve tur yaklaşık 70 ms daha önce kesinleşti.

Proje sürüm 0.0.5'te ve alpha olarak etiketli; API hâlâ değişebilir. Sessiz girdi belgelenen zayıf nokta: sessiz konuşan bir kullanıcının yumuşak kelime sonları sessizlik değildir ve gürültülü ama sessiz bir hatada bu öncülük kaybolur. Önceki sürümler sabit bir gürültü tabanı kullanıyordu ve sessiz konuşmacıları kesiyordu — −52 dBFS'de 0.0.4 sürümü, turların %43'ünde kullanıcı hâlâ konuşurken segmenti kapatıyordu — bu yüzden 0.0.5 tabanın konuşmacının kendi seviyesini izlemesini sağlıyor ve bu hata oranını Silero'nunkine yakın seviyeye indiriyor.

Neden önemli

Konuşma sonu gecikmesi, bir sesli asistanda kullanıcının en çok fark ettiği maliyetlerden biri ve tanıma, çıkarım ile sentezle seri halde bulunduğu için kazanılan her milisaniye doğrudan algılanan yanıt hızına yansıyor. RealtimeVAD'ın katkısı daha iyi bir akustik model değil, daha keskin bir mühendislik pazarlığı: sık ve ucuz 'belki bitti' ipuçlarını kabul et ve konuşma yeniden başlayabilecekken hattın spekülasyon yapmasına izin ver. Realtime sesli ajanlar geliştirenler için tur başına yaklaşık 100 ms gerçek bir kazanç ve iddia alışılmadık ölçüde doğrulanabilir durumda: her iki dedektör de aynı frame olasılıkları üzerinde çalışıyor ve depo, sayıları kendi kayıtlarınızda yeniden üretmek için bir benchmark script'i içeriyor.

  • #open-source
  • #voice-activity-detection
  • #speech-processing
  • #realtime
  • #python

İlgili yazılar