- 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.