10 poin oleh xguru 2025-04-04 | Belum ada komentar. | Bagikan ke WhatsApp
  • Implementasi open-source Rust dari sistem pengenalan dan identifikasi audio berkecepatan tinggi yang terinspirasi dari Shazam
  • Dirancang dengan fokus pada kecepatan, efisiensi, dan kesederhanaan, serta dapat melakukan pengindeksan dan pencarian file audio melalui CLI

Fitur dan keunggulan utama

  • Kecepatan pengindeksan dan pencarian yang tinggi: mampu memproses ratusan file audio dengan cepat
  • Perintah CLI yang sederhana: menyediakan cara penggunaan yang intuitif melalui perintah index dan search
  • Implementasi berkinerja tinggi berbasis Rust: menggunakan sumber daya sistem secara efisien
  • Mengadopsi metode sidik jari audio yang mirip dengan Shazam

Cara kerja internal

Prapemrosesan (Preprocessing)

  • Mengubah stereo menjadi mono (rata-rata kanal kiri/kanan)
  • Downsampling untuk mengurangi beban komputasi: 44.1kHz → 11.025kHz
  • Sebelum downsampling, diterapkan filter low-pass IIR untuk menghilangkan frekuensi di atas frekuensi Nyquist

Transformasi spektrogram

  • Menggunakan Short-Time Fourier Transform (STFT)
    • Jendela Hamming 1024 sampel
    • Overlap 50%
  • Dikonversi ke domain waktu-frekuensi untuk mengekstrak puncak
    • Setiap jendela waktu dibagi menjadi pita frekuensi, lalu hanya amplitudo tertinggi di setiap pita yang dipertahankan
    • Amplitudo di bawah rata-rata dihapus agar hanya puncak karakteristik yang tersisa

Cara penyimpanan data sidik jari

  • Puncak-puncak disusun dan disimpan sebagai hash
    • Berdasarkan satu puncak anchor, posisi relatif terhadap puncak-puncak di sekitarnya disimpan sebagai tuple
    • Disusun dalam bentuk (anchor freq, peak freq, delta time)
    • Dapat dikonversi menjadi bilangan bulat 32-bit atau 64-bit

Algoritme pencarian dan pengurutan

  • Membuat sidik jari dari sampel input
  • Mengambil sidik jari kandidat dari basis data lalu mengurutkannya berdasarkan urutan waktu
  • Analisis kontinuitas temporal berbasis Longest Increasing Subsequence
  • Menggunakan sliding window untuk mencari rentang puncak pencocokan yang paling padat
  • Menghitung skor kecocokan dan mengurutkan hasil berdasarkan skor tertinggi

Belum ada komentar.

Belum ada komentar.