10 puan yazan xguru 2025-04-04 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Shazam'dan ilham alan yüksek hızlı ses tanıma ve kimlik belirleme sisteminin Rust ile yazılmış açık kaynak bir uygulaması
  • Hız, verimlilik ve sadeliğe odaklanarak tasarlanmıştır; CLI üzerinden ses dosyalarının indekslenmesi ve aranması yapılabilir

Başlıca özellikler ve avantajlar

  • Yüksek hızlı indeksleme ve arama performansı: Yüzlerce ses dosyasını hızlıca işleyebilir
  • Basit CLI komutları: index ve search komutlarıyla sezgisel bir kullanım sunar
  • Rust tabanlı yüksek performanslı uygulama: Sistem kaynaklarını verimli kullanır
  • Shazam'a benzer bir ses parmak izi yöntemi benimser

İç çalışma şekli

Ön işleme (Preprocessing)

  • Stereo sesi mono'ya dönüştürme (sol/sağ kanal ortalaması)
  • Hesaplama yükünü azaltmak için downsampling: 44.1kHz → 11.025kHz
  • Downsampling öncesinde, Nyquist frekansının üzerini kaldırmak için IIR low-pass filtre uygulanır

Spektrogram dönüşümü

  • Short-Time Fourier Transform (STFT) kullanır
    • 1024 örneklik Hamming penceresi
    • %50 overlap
  • Zaman-frekans alanına dönüştürerek peak'leri çıkarır
    • Her zaman penceresini frekans bantlarına böler ve her bantta yalnızca en yüksek genliği korur
    • Ortalama altındaki genlikleri kaldırarak yalnızca karakteristik peak'leri tutar

Parmak izi verisinin saklanma yöntemi

  • Peak'leri hash olarak oluşturup saklar
    • Bir anchor peak'i temel alarak çevredeki peak'lerle göreli konumları tuple olarak saklar
    • (anchor freq, peak freq, delta time) biçimindedir
    • 32 bit veya 64 bit tamsayıya dönüştürülebilir

Arama ve sıralama algoritması

  • Girdi örneğinden parmak izi oluşturur
  • Veritabanında aday parmak izlerini sorgulayıp zaman sırasına göre sıralar
  • Longest Increasing Subsequence (LIS) tabanlı zamansal süreklilik analizi
  • Sliding window kullanarak en yoğun eşleşen peak aralığını bulur
  • Eşleşme puanını hesaplar ve sonuçları yüksek puandan düşüğe sıralar

Henüz yorum yok.

Henüz yorum yok.