- Pengenalan musik dilakukan dengan mengubah getaran udara yang diterima mikrofon menjadi waveform, lalu memampatkannya menjadi spectrogram dan sejumlah kecil puncak frekuensi kuat untuk membuat sidik jari lagu
- Karena waveform mentah mudah berubah tergantung volume dan lingkungan pemutaran, waveform sulit dipakai sebagai dasar identifikasi; dengan menerapkan FFT pada potongan-potongan pendek, struktur frekuensi dari waktu ke waktu bisa ditampilkan sehingga perbandingan menjadi lebih stabil
- Puncak-puncak yang tersisa tidak dipakai sebagai titik tunggal, melainkan dipasangkan sebagai anchor dan target zone lalu diubah menjadi hash; kombinasi seperti ini berfungsi sebagai fingerprint hash yang cukup spesifik untuk membedakan rekaman tertentu
- Pencarian tidak membandingkan lagu satu per satu, melainkan memakai struktur hash-first yang langsung mencari berdasarkan hash sebagai kunci; pada tahap akhir sistem juga memeriksa apakah jarak waktu dari hash yang cocok ikut sesuai untuk meningkatkan keandalan
- Basis data skala besar berbasis server dan pendekatan on-device punya skala serta batasan yang berbeda, tetapi intinya sama: membuang sebagian besar informasi dan hanya menyisakan landmark peak agar lagu bisa ditemukan dengan cepat bahkan dari klip pendek dan berisik
Proses menafsirkan suara secara terbalik
- Mikrofon ponsel mengukur getaran udara dengan diafragma yang sangat tipis, lalu mengubahnya menjadi waveform, yaitu deretan angka yang merepresentasikan tekanan udara terhadap waktu
- Gendang telinga manusia menerima gelombang tekanan yang sama, tetapi ponsel memperlakukannya bukan sebagai suara itu sendiri melainkan sebagai urutan angka
- Suara yang masuk di-sampling puluhan ribu kali per detik, biasanya pada 44,100 Hz
- Mengidentifikasi lagu hanya dari waveform mentah itu sulit; lagu yang sama akan menghasilkan waveform yang sama sekali berbeda jika diputar lebih keras, dan lagu yang berbeda pun bisa memiliki waveform yang mirip
- Karena waveform dari lagu yang sama juga bisa berubah jika lingkungan pemutaran berbeda, waveform itu sendiri tidak cocok dijadikan dasar identifikasi
- Untuk mengurangi masalah ini, waveform perlu dibagi menjadi potongan-potongan kecil lalu dikenai FFT agar bisa diuraikan frekuensi apa saja yang ada di setiap titik waktu
- Jika dijadikan pertanyaan, ini setara dengan, "untuk membuat ulang potongan suara pendek ini, nada murni apa saja yang harus dijumlahkan?"
- Jika hasil tiap potongan ditumpuk ke samping, terbentuklah spectrogram dengan sumbu waktu, sumbu frekuensi, dan sumbu kecerahan
- FFT memanfaatkan fakta bahwa waveform sekompleks apa pun bisa dinyatakan sebagai penjumlahan gelombang sinus dengan frekuensi, amplitudo, dan fase yang berbeda-beda
- Sebagai contoh, jika memasukkan 1,024 sampel, FFT mengembalikan spektrum yang menunjukkan berapa banyak energi yang ada pada setiap frekuensi
- Untuk setiap bin frekuensi, semua sampel dikalikan dengan gelombang sinus pada frekuensi itu lalu dijumlahkan; jika frekuensi tersebut memang ada dalam sinyal asli, jumlahnya akan besar, dan jika tidak, hasilnya akan saling meniadakan
- Inti FFT adalah kecepatannya; penguraian secara naif membutuhkan jutaan operasi per potongan, tetapi FFT memanfaatkan simetri matematis untuk menurunkannya menjadi sekitar n log n
- Kecepatan seperti ini memungkinkan FFT dijalankan ratusan kali per detik bahkan di ponsel
- Perangkat menggeser jendela ini terus-menerus di atas audio, menerapkan FFT ke setiap potongan, lalu menumpuk hasilnya menjadi spectrogram
- Contoh sederhana biasanya memakai suara sintetis yang hanya terdiri dari satu frekuensi murni agar mudah dipahami, tetapi musik nyata jauh lebih kompleks
- Jika musik sungguhan atau humming dimasukkan ke mikrofon, spectrogram akan terlihat jauh lebih ramai, tetapi FFT tetap dapat menampilkan strukturnya secara real-time
- Pada contoh di browser, seluruh audio diproses sepenuhnya di dalam browser, tanpa direkam atau dikirim ke luar
Semakin sedikit, semakin kuat sidik jarinya
- Sistem tidak menyimpan seluruh spectrogram, melainkan hanya menyisakan puncak-puncak terbesar dan memampatkannya menjadi sparse point set
- Dengan membuang sinyal yang lemah dan hanya menyisakan titik-titik terkuat, yang tertinggal adalah landmark yang penting secara akustik
- Alasan membuang sebagian besar data ini adalah karena menyimpan dan mencari seluruh spectrogram terlalu lambat bahkan untuk komputer
- Semakin tinggi ambang batasnya, semakin banyak sinyal samar yang hilang, dan hanya puncak besar yang bertahan
- Pendekatan ini meningkatkan ketahanan terhadap noise
- Noise latar menambahkan energi rendah ke seluruh spectrogram, tetapi biasanya tidak sampai menciptakan puncak terkuat pada area tertentu
- Landmark yang tersisa adalah frekuensi dominan yang berhasil menonjol menembus noise
- Sebagai gantinya, pendekatan sidik jari ini cenderung berkinerja lebih buruk ketika lagu dinyanyikan langsung oleh pengguna
- Bahkan jika dinyanyikan dengan sangat baik, hash yang dihasilkan kemungkinan besar akan berbeda dari lagu aslinya
- Karena itu, sistem berbasis machine learning yang lebih baru menangani humming dan nyanyian berdasarkan melodi, bukan frekuensi yang persis sama
Menghubungkan titik untuk membuat hash
- Satu titik saja punya daya pembeda yang rendah, tetapi kombinasi dua titik jauh lebih kecil kemungkinannya terjadi secara kebetulan sehingga cocok dipakai sebagai fingerprint hash
- Sebagai contoh, satu frekuensi 1,200 Hz pada suatu waktu bisa muncul di ribuan lagu, tetapi kombinasi 2,400 Hz yang muncul 0,3 detik setelah 1,200 Hz jauh lebih spesifik
- Algoritme mengambil setiap puncak secara bergiliran sebagai anchor, lalu menetapkan target zone di sebelah kanannya yang memiliki rentang waktu dan frekuensi, kemudian memasangkannya dengan semua puncak di dalam area itu
- Setiap pasangan membentuk hash pendek dari tiga angka: dua frekuensi dan selisih waktunya
- Hash bekerja sebagai kode singkat yang selalu menghasilkan nilai yang sama untuk input yang sama, tetapi menghasilkan nilai yang benar-benar berbeda jika inputnya berubah sedikit saja
- Sistem ala Shazam memang punya mekanisme untuk menangani variasi kecil, tetapi pada dasarnya hash dibuat dari frekuensi dan timing yang presisi
- Akibatnya, hash ini lebih mirip sidik jari dari rekaman tertentu daripada dari lagunya secara abstrak
- Itulah sebabnya cover atau remix lebih sulit dicocokkan
- Bahkan dari satu lagu berdurasi 3 menit, ribuan fingerprint hash seperti ini bisa dibuat, dan basis data menyimpannya semua
- Ponsel membawa sejumlah kecil hash yang diperoleh dari klip 5 detik, sementara basis data membawa jutaan hash yang diambil dari sejumlah besar lagu, lalu masuk ke tahap pencocokan
Menemukan kecocokan yang tepat
- Setiap hash dipakai semacam alamat; untuk setiap hash yang didapat dari klip, sistem langsung melihat tabel besar untuk menemukan lagu yang memiliki hash tersebut
- Jadi, alih-alih memeriksa lagu satu per satu, sistem mengakses langsung dengan hash sebagai kunci
- Pendekatan intuitif song-first harus memeriksa semua lagu satu per satu dan melihat apakah ada hash yang tumpang tindih, sehingga semakin lambat ketika jumlah lagu bertambah
- Teks aslinya menyatakan ini sebagai waktu O(N)
- Basis data contoh dan daftar hash dari klip 5 detik dipakai untuk memvisualisasikan ketidakefisienan ini
- Komputer bisa membalik pendekatan ini dengan cara hash-first
- Untuk setiap hash, sistem langsung menanyakan, "lagu mana saja yang mengandung hash ini?"
- Ini dianalogikan seperti indeks di bagian belakang buku: alih-alih membaca semua halaman lagi, kita langsung menuju entri kata tertentu
- Pendekatan ini membuat lookup nyaris mendekati O(1)
- Baik lagunya 100 maupun 100 juta, waktu prosesnya kira-kira tetap serupa
- Karena jumlah hash yang mungkin sangat besar, bahkan jika ada jutaan lagu, tiap alamat biasanya hanya berisi sedikit entri
- Tidak cukup hanya berbagi hash yang sama; verifikasi terakhir dilakukan pada jarak waktu
- Sebagai contoh, jika 17403C dan 19A998 berjarak 1,2 detik di dalam klip, maka pada lagu kandidat yang cocok kedua hash itu juga harus muncul dengan jarak 1,2 detik
- Kecocokan baru dianggap sangat andal jika selisih waktu antar-hash yang cocok saling sejajar dan jumlahnya juga cukup banyak
- Keseluruhan sistem dirancang agar sesuai dengan jenis pekerjaan yang sangat dikuasai komputer
- Strukturnya berpusat pada perbandingan angka dan lookup alamat
- Karena itu, bahkan terhadap jutaan lagu, seluruh pencarian selesai dalam jauh kurang dari 1 detik
Pendekatan yang lebih modern
- Banyak layanan pengenalan lagu seperti Shazam mengirim klip audio ke server lalu melakukan pencocokan pada basis data sidik jari besar yang ada di server
- Struktur ini dipakai karena basis datanya sangat besar, terus berubah, dan pencariannya memerlukan sumber daya komputasi yang cukup besar
- Sebaliknya, pengenalan on-device Apple dan Now Playing di Google Pixel berjalan sepenuhnya secara lokal di dalam ponsel
- Mereka memakai basis data yang lebih kecil dan terseleksi, serta model yang dioptimalkan
- Alih-alih mengejar cakupan penuh, pendekatan ini memilih kecepatan dan juga dapat mencakup metode machine learning yang lebih canggih yang lebih tahan terhadap noise dan perubahan audio
- Pendekatan on-device lebih cepat dan bisa bekerja tanpa koneksi internet, tetapi ada batasan bahwa basis data lagu yang bisa dicocokkan jauh lebih kecil
- Pembaruan lagu baru juga umumnya lebih lambat
- Saat perpindahan lokasi terdeteksi, perangkat mungkin perlu mengambil ulang data baru
- Perbedaan lagu populer per wilayah juga memengaruhi komposisi data on-device
- Lagu hit di Jepang bisa berbeda dari lagu hit di Amerika Serikat
- Baik pencocokan dilakukan di server maupun di dalam perangkat, teknik intinya sama
- Dengan membuang sebagian besar informasi dan hanya menyisakan sedikit landmark peak, klip 5 detik yang direkam di kafe berisik pun bisa diubah menjadi sekumpulan koordinat yang cukup presisi untuk menunjuk satu lagu di antara jutaan lagu
- Inti pengenalan ini bukan sekadar mendengar banyak hal, melainkan membuang dengan tepat apa yang harus diabaikan
Makalah yang menjadi landasan
- Sebagian besar isi tulisan ini didasarkan pada makalah Avery Wang tahun 2003, An Industrial-Strength Audio Search Algorithm
- Jika ingin melihat pemrosesan sinyal dan desain sistemnya lebih dalam, makalah itu adalah titik awal yang paling langsung
- Alur keseluruhannya bergerak dari transformasi waveform, pemilihan puncak, hash pasangan puncak, lookup indeks terbalik, hingga verifikasi penyelarasan waktu
- Rangkaian langkah inilah yang memungkinkan identifikasi lagu secara cepat bahkan dari klip yang pendek dan berisik
Belum ada komentar.